home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / net / www / protocol / ftp / FtpDirectoryThread.class (.txt) next >
Encoding:
Java Class File  |  1997-07-08  |  4.9 KB  |  172 lines

  1. package sun.net.www.protocol.ftp;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.BufferedOutputStream;
  5. import java.io.DataInputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;
  9. import java.io.PrintStream;
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12. import java.util.Hashtable;
  13. import java.util.NoSuchElementException;
  14. import java.util.StringTokenizer;
  15. import sun.net.ftp.FtpClient;
  16.  
  17. class FtpDirectoryThread extends Thread {
  18.    static Hashtable images = new Hashtable();
  19.    static final int imageWidth = Integer.getInteger("hotjava.file.iconwidth", 24);
  20.    static final int imageHeight = Integer.getInteger("hotjava.file.iconheight", 26);
  21.    FtpURLConnection conn;
  22.    FtpClient ftp;
  23.    // $FF: renamed from: os java.io.PrintStream
  24.    PrintStream field_0;
  25.    // $FF: renamed from: is java.io.InputStream
  26.    InputStream field_1;
  27.    URL url;
  28.  
  29.    static String fullImagePath(String var0) {
  30.       return "doc:/lib/images/ftp/" + var0 + ".gif";
  31.    }
  32.  
  33.    FtpDirectoryThread(FtpURLConnection var1, FtpClient var2, URL var3, InputStream var4, OutputStream var5) {
  34.       this.conn = var1;
  35.       this.ftp = var2;
  36.       this.url = var3;
  37.       this.field_1 = var4;
  38.       this.field_0 = new PrintStream(new BufferedOutputStream(var5));
  39.    }
  40.  
  41.    public void run() {
  42.       try {
  43.          this.field_1 = new BufferedInputStream(this.field_1);
  44.          DataInputStream var4 = new DataInputStream(this.field_1);
  45.          String var5 = this.url.toExternalForm();
  46.          if (!var5.endsWith("/")) {
  47.             var5 = var5 + "/";
  48.          }
  49.  
  50.          String var6 = "Directory: " + this.url.getFile() + "@" + this.url.getHost();
  51.          this.field_0.println("<html>\n<head>\n<title>" + var6 + "</title>\n</head>");
  52.          this.field_0.println("<body>");
  53.          this.field_0.println("<h2>" + var6 + "</h2>");
  54.          this.field_0.println("<pre>");
  55.          if (this.ftp.welcomeMsg != null) {
  56.             this.field_0.println(this.ftp.welcomeMsg);
  57.             this.ftp.welcomeMsg = null;
  58.          }
  59.  
  60.          try {
  61.             this.addFile(100, "<Parent Directory>", (String)null, new URL((URL)null, var5 + "../"));
  62.          } catch (MalformedURLException var24) {
  63.          }
  64.  
  65.          while(true) {
  66.             String var3;
  67.             try {
  68.                var3 = var4.readLine();
  69.             } catch (IOException var25) {
  70.                System.err.println("Premature end of FTP directory" + var25);
  71.                break;
  72.             }
  73.  
  74.             if (var3 == null) {
  75.                break;
  76.             }
  77.  
  78.             StringTokenizer var7 = new StringTokenizer(var3, " ");
  79.  
  80.             try {
  81.                String var8 = var7.nextToken();
  82.                var7.nextToken();
  83.                var7.nextToken();
  84.                var7.nextToken();
  85.                String var9 = var7.nextToken();
  86.                var7.nextToken();
  87.                var7.nextToken();
  88.                var7.nextToken();
  89.                String var10 = var7.nextToken();
  90.                if (!var10.equals(".") && !var10.equals("..")) {
  91.                   try {
  92.                      this.addFile(var8.charAt(0) == 'd' ? 100 : 102, var10, var9, new URL((URL)null, var5 + var10));
  93.                   } catch (MalformedURLException var22) {
  94.                   }
  95.                }
  96.             } catch (NoSuchElementException var23) {
  97.             }
  98.          }
  99.  
  100.          this.field_0.println("</pre></body>\n</html>");
  101.       } finally {
  102.          this.field_0.close();
  103.  
  104.          try {
  105.             this.field_1.close();
  106.          } catch (IOException var21) {
  107.          }
  108.  
  109.          try {
  110.             this.ftp.closeServer();
  111.          } catch (IOException var20) {
  112.          }
  113.  
  114.       }
  115.  
  116.    }
  117.  
  118.    void addImage(String var1) {
  119.       this.field_0.print("<img align=\"middle\" src=\"" + var1 + "\" border=0 width=" + imageWidth + " height=" + imageHeight + ">");
  120.    }
  121.  
  122.    String lookupImage(String var1) {
  123.       return (String)images.get(var1);
  124.    }
  125.  
  126.    void addFile(int var1, String var2, String var3, URL var4) {
  127.       this.field_0.print("  ");
  128.       this.field_0.print("<a href=\"" + var4 + "\">");
  129.       switch (var1) {
  130.          case 100:
  131.             this.addImage(fullImagePath("directory"));
  132.          case 101:
  133.          default:
  134.             break;
  135.          case 102:
  136.             String var5 = this.conn.guessContentTypeFromFilename(var4.getFile());
  137.             String var6;
  138.             if (var5 == null) {
  139.                var6 = null;
  140.             } else {
  141.                var6 = this.lookupImage(var5);
  142.             }
  143.  
  144.             if (var6 == null) {
  145.                var6 = fullImagePath("file");
  146.             }
  147.  
  148.             this.addImage(var6);
  149.       }
  150.  
  151.       this.field_0.print("\t");
  152.       this.field_0.print(var2);
  153.       if (var1 == 100) {
  154.          this.field_0.print("/");
  155.       } else if (var3 != null) {
  156.          this.field_0.print(" (" + var3 + " bytes)");
  157.       }
  158.  
  159.       this.field_0.print("</a>");
  160.       this.field_0.print("\n");
  161.    }
  162.  
  163.    static {
  164.       images.put("image/gif", fullImagePath("gif"));
  165.       images.put("image/tiff", fullImagePath("tiff"));
  166.       images.put("audio/basic", fullImagePath("audio"));
  167.       images.put("application/octet-stream", fullImagePath("compress"));
  168.       images.put("application/postscript", fullImagePath("ps"));
  169.       images.put("text/plain", fullImagePath("text"));
  170.    }
  171. }
  172.