home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / WIN95 / IAVAZIP.EXE / DATA.Z / processExtract.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-08-18  |  5.0 KB  |  191 lines

  1. package com.sfs.iavazip;
  2.  
  3. import com.sfs.awt.treeview.Folder;
  4. import com.sfs.awt.treeview.Item;
  5. import com.sfs.awt.treeview.RootFolder;
  6. import com.sfs.debug.Debug;
  7. import com.sfs.util.WildCard;
  8. import java.awt.Dialog;
  9. import java.awt.Window;
  10. import java.io.File;
  11. import java.io.FileOutputStream;
  12. import java.io.IOException;
  13. import java.io.InputStream;
  14. import java.util.Enumeration;
  15. import java.util.Vector;
  16. import java.util.zip.ZipEntry;
  17.  
  18. class processExtract extends processDlg {
  19.    ExtractDialog _Extract;
  20.    WildCard EntryRules;
  21.    Boolean overWrite;
  22.    // $FF: renamed from: os java.io.FileOutputStream
  23.    FileOutputStream field_0;
  24.    // $FF: renamed from: is java.io.InputStream
  25.    InputStream field_1;
  26.  
  27.    public void processCanceled() {
  28.       super.thread.stop();
  29.  
  30.       try {
  31.          if (this.field_0 != null) {
  32.             this.field_0.close();
  33.          }
  34.  
  35.          if (this.field_1 != null) {
  36.             this.field_1.close();
  37.          }
  38.       } catch (IOException var1) {
  39.       }
  40.  
  41.       this._Extract.mainApp.setDefaultCursor();
  42.       super.mainApp.showStatus("Extract Files canceled.");
  43.    }
  44.  
  45.    protected void extractEntry(ZipEntry var1) {
  46.       Debug.Info(var1.getName());
  47.       String var2 = var1.getName();
  48.       String var4 = var2;
  49.       int var3;
  50.       if ((var3 = var2.lastIndexOf(47)) != -1) {
  51.          var4 = var2.substring(var3 + 1, var2.length());
  52.       }
  53.  
  54.       if (this.EntryRules.isAccepted(var4)) {
  55.          if (!Boolean.valueOf(super.mainApp.properties.getProperty("Extract.useFoldernames"))) {
  56.             var2 = var4;
  57.          } else {
  58.             var2 = var2.replace('/', File.separatorChar);
  59.          }
  60.  
  61.          String var5 = super.mainApp.properties.getProperty("Extract.Destination") + File.separator + var2;
  62.          if (Boolean.valueOf(super.mainApp.properties.getProperty("Extract.useFoldernames")) && var2.indexOf(File.separatorChar) != -1) {
  63.             String var6 = var5.substring(0, var5.lastIndexOf(File.separatorChar));
  64.             File var7 = new File(var6);
  65.             var7.mkdirs();
  66.          }
  67.  
  68.          File var11 = new File(var5);
  69.          if (var11.exists()) {
  70.             if (this.overWrite) {
  71.                var11.delete();
  72.             } else {
  73.                OverwriteFileDialog var12 = new OverwriteFileDialog(this._Extract.mainApp, var1, var11);
  74.                switch (var12.doModal()) {
  75.                   case 1:
  76.                      this.overWrite = new Boolean("true");
  77.                   case 0:
  78.                      var11.delete();
  79.                   case 2:
  80.                   default:
  81.                      break;
  82.                   case 3:
  83.                      return;
  84.                }
  85.             }
  86.          }
  87.  
  88.          try {
  89.             this.field_0 = new FileOutputStream(var5);
  90.             this.field_1 = super.mainApp.zipFile.getInputStream(var1);
  91.             byte[] var13 = new byte[1024];
  92.  
  93.             int var8;
  94.             while((var8 = this.field_1.read(var13)) != -1) {
  95.                this.field_0.write(var13, 0, var8);
  96.             }
  97.  
  98.             this.field_0.close();
  99.          } catch (IOException var9) {
  100.          }
  101.       }
  102.    }
  103.  
  104.    public void run() {
  105.       int var1 = 0;
  106.       super.mainApp.showStatus("Extracting files");
  107.       this.overWrite = Boolean.valueOf(super.mainApp.properties.getProperty("Extract.overWrite"));
  108.       boolean var2 = Boolean.valueOf(super.mainApp.properties.getProperty("Extract.allFiles"));
  109.       RootFolder var3 = super.mainApp.tw.Root;
  110.       if (!((Item)var3).isSelected() && super.mainApp.tw.Root.getCaretItem() != var3) {
  111.          super.mainApp.tw.Root.getCaretItem().setSelected(true);
  112.       } else {
  113.          ((Item)var3).setSelected(false);
  114.          var2 = true;
  115.       }
  116.  
  117.       if (var2) {
  118.          ((processDlg)this).showStatus("reading zip-entries ...");
  119.  
  120.          for(Enumeration var4 = super.mainApp.zipFile.entries(); var4.hasMoreElements(); ++var1) {
  121.             ZipEntry var5 = (ZipEntry)var4.nextElement();
  122.             String var6 = var5.getName();
  123.             int var7;
  124.             if ((var7 = var6.lastIndexOf("/")) != -1) {
  125.                var6 = var6.substring(var7 + 1, var6.length());
  126.             }
  127.  
  128.             if (this.EntryRules.isAccepted(var6)) {
  129.             }
  130.          }
  131.  
  132.          super.pb.setMaximum((float)var1);
  133.          Enumeration var12 = super.mainApp.zipFile.entries();
  134.          int var14 = 0;
  135.  
  136.          while(super.notCanceled && var12.hasMoreElements()) {
  137.             ZipEntry var16 = (ZipEntry)var12.nextElement();
  138.             ((processDlg)this).showStatus("extract " + var16.getName());
  139.             super.pb.setProgress((float)(var14++));
  140.             this.extractEntry(var16);
  141.  
  142.             try {
  143.                Thread.sleep(15L);
  144.             } catch (InterruptedException var11) {
  145.             }
  146.          }
  147.       } else {
  148.          Debug.Info("only selected files");
  149.          Vector var13 = super.mainApp.tw.Root.Rows;
  150.          Vector var15 = new Vector();
  151.          ((processDlg)this).showStatus("building export list ...");
  152.  
  153.          for(int var17 = 0; var17 < var13.size(); ++var17) {
  154.             Item var19 = (Item)var13.elementAt(var17);
  155.             if (var19.isSelected() && !(var19 instanceof Folder) && this.EntryRules.isAccepted(var19.getName())) {
  156.                ++var1;
  157.                var15.addElement(var19);
  158.             }
  159.          }
  160.  
  161.          super.pb.setMaximum((float)var1);
  162.  
  163.          for(int var18 = 0; super.notCanceled && var18 < var15.size(); ++var18) {
  164.             Item var20 = (Item)var15.elementAt(var18);
  165.             super.pb.setProgress((float)var18);
  166.             if (var20.isSelected() && !(var20 instanceof Folder)) {
  167.                String var8;
  168.                ZipEntry var9 = super.mainApp.zipFile.getEntry(var8 = ((ZipEntry)var20.getContent()).getName());
  169.                ((processDlg)this).showStatus("extract " + var8);
  170.                this.extractEntry(var9);
  171.             }
  172.  
  173.             try {
  174.                Thread.sleep(15L);
  175.             } catch (InterruptedException var10) {
  176.             }
  177.          }
  178.       }
  179.  
  180.       super.mainApp.showStatus("Extract " + Integer.toString(var1) + " files completed.");
  181.       ((Window)this).dispose();
  182.    }
  183.  
  184.    public processExtract(ExtractDialog var1) {
  185.       super(var1.mainApp, "Extract Files ...");
  186.       this._Extract = var1;
  187.       this.EntryRules = new WildCard(var1.Files.getText(), 1);
  188.       ((Dialog)this).setResizable(true);
  189.    }
  190. }
  191.