home *** CD-ROM | disk | FTP | other *** search
- package sun.net.www.protocol.ftp;
-
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.DataInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.PrintStream;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Hashtable;
- import java.util.NoSuchElementException;
- import java.util.StringTokenizer;
- import sun.net.ftp.FtpClient;
-
- class FtpDirectoryThread extends Thread {
- static Hashtable images = new Hashtable();
- static final int imageWidth = Integer.getInteger("hotjava.file.iconwidth", 24);
- static final int imageHeight = Integer.getInteger("hotjava.file.iconheight", 26);
- FtpURLConnection conn;
- FtpClient ftp;
- // $FF: renamed from: os java.io.PrintStream
- PrintStream field_0;
- // $FF: renamed from: is java.io.InputStream
- InputStream field_1;
- URL url;
-
- static String fullImagePath(String var0) {
- return "doc:/lib/images/ftp/" + var0 + ".gif";
- }
-
- FtpDirectoryThread(FtpURLConnection var1, FtpClient var2, URL var3, InputStream var4, OutputStream var5) {
- this.conn = var1;
- this.ftp = var2;
- this.url = var3;
- this.field_1 = var4;
- this.field_0 = new PrintStream(new BufferedOutputStream(var5));
- }
-
- public void run() {
- try {
- this.field_1 = new BufferedInputStream(this.field_1);
- DataInputStream var4 = new DataInputStream(this.field_1);
- String var5 = this.url.toExternalForm();
- if (!var5.endsWith("/")) {
- var5 = var5 + "/";
- }
-
- String var6 = "Directory: " + this.url.getFile() + "@" + this.url.getHost();
- this.field_0.println("<html>\n<head>\n<title>" + var6 + "</title>\n</head>");
- this.field_0.println("<body>");
- this.field_0.println("<h2>" + var6 + "</h2>");
- this.field_0.println("<pre>");
- if (this.ftp.welcomeMsg != null) {
- this.field_0.println(this.ftp.welcomeMsg);
- this.ftp.welcomeMsg = null;
- }
-
- try {
- this.addFile(100, "<Parent Directory>", (String)null, new URL((URL)null, var5 + "../"));
- } catch (MalformedURLException var24) {
- }
-
- while(true) {
- String var3;
- try {
- var3 = var4.readLine();
- } catch (IOException var25) {
- System.err.println("Premature end of FTP directory" + var25);
- break;
- }
-
- if (var3 == null) {
- break;
- }
-
- StringTokenizer var7 = new StringTokenizer(var3, " ");
-
- try {
- String var8 = var7.nextToken();
- var7.nextToken();
- var7.nextToken();
- var7.nextToken();
- String var9 = var7.nextToken();
- var7.nextToken();
- var7.nextToken();
- var7.nextToken();
- String var10 = var7.nextToken();
- if (!var10.equals(".") && !var10.equals("..")) {
- try {
- this.addFile(var8.charAt(0) == 'd' ? 100 : 102, var10, var9, new URL((URL)null, var5 + var10));
- } catch (MalformedURLException var22) {
- }
- }
- } catch (NoSuchElementException var23) {
- }
- }
-
- this.field_0.println("</pre></body>\n</html>");
- } finally {
- this.field_0.close();
-
- try {
- this.field_1.close();
- } catch (IOException var21) {
- }
-
- try {
- this.ftp.closeServer();
- } catch (IOException var20) {
- }
-
- }
-
- }
-
- void addImage(String var1) {
- this.field_0.print("<img align=\"middle\" src=\"" + var1 + "\" border=0 width=" + imageWidth + " height=" + imageHeight + ">");
- }
-
- String lookupImage(String var1) {
- return (String)images.get(var1);
- }
-
- void addFile(int var1, String var2, String var3, URL var4) {
- this.field_0.print(" ");
- this.field_0.print("<a href=\"" + var4 + "\">");
- switch (var1) {
- case 100:
- this.addImage(fullImagePath("directory"));
- case 101:
- default:
- break;
- case 102:
- String var5 = this.conn.guessContentTypeFromFilename(var4.getFile());
- String var6;
- if (var5 == null) {
- var6 = null;
- } else {
- var6 = this.lookupImage(var5);
- }
-
- if (var6 == null) {
- var6 = fullImagePath("file");
- }
-
- this.addImage(var6);
- }
-
- this.field_0.print("\t");
- this.field_0.print(var2);
- if (var1 == 100) {
- this.field_0.print("/");
- } else if (var3 != null) {
- this.field_0.print(" (" + var3 + " bytes)");
- }
-
- this.field_0.print("</a>");
- this.field_0.print("\n");
- }
-
- static {
- images.put("image/gif", fullImagePath("gif"));
- images.put("image/tiff", fullImagePath("tiff"));
- images.put("audio/basic", fullImagePath("audio"));
- images.put("application/octet-stream", fullImagePath("compress"));
- images.put("application/postscript", fullImagePath("ps"));
- images.put("text/plain", fullImagePath("text"));
- }
- }
-