home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / net / www / MimeEntry.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  5.4 KB  |  248 lines

  1. package sun.net.www;
  2.  
  3. import java.io.File;
  4. import java.io.InputStream;
  5. import java.net.URLConnection;
  6. import java.util.StringTokenizer;
  7.  
  8. public class MimeEntry implements Cloneable {
  9.    public static final String defaultImagePath = "doc:/lib/images/ftp";
  10.    private String typeName;
  11.    private String tempFileNameTemplate;
  12.    private int action;
  13.    private String command;
  14.    private String description;
  15.    private String imageFileName;
  16.    private String[] fileExtensions;
  17.    boolean starred;
  18.    public static final int UNKNOWN = 0;
  19.    public static final int LOAD_INTO_BROWSER = 1;
  20.    public static final int SAVE_TO_FILE = 2;
  21.    public static final int LAUNCH_APPLICATION = 3;
  22.    static final String[] actionKeywords = new String[]{"unknown", "browser", "save", "application"};
  23.  
  24.    public MimeEntry(String var1) {
  25.       this(var1, 0, (String)null, (String)null, (String[])null);
  26.    }
  27.  
  28.    MimeEntry(String var1, String var2, String var3) {
  29.       this.typeName = var1.toLowerCase();
  30.       this.action = 0;
  31.       this.command = null;
  32.       this.imageFileName = var2;
  33.       this.setExtensions(var3);
  34.       this.starred = this.isStarred(this.typeName);
  35.    }
  36.  
  37.    MimeEntry(String var1, int var2, String var3, String var4) {
  38.       this.typeName = var1.toLowerCase();
  39.       this.action = var2;
  40.       this.command = var3;
  41.       this.imageFileName = null;
  42.       this.fileExtensions = null;
  43.       this.tempFileNameTemplate = var4;
  44.    }
  45.  
  46.    MimeEntry(String var1, int var2, String var3, String var4, String[] var5) {
  47.       this.typeName = var1.toLowerCase();
  48.       this.action = var2;
  49.       this.command = var3;
  50.       this.imageFileName = var4;
  51.       this.fileExtensions = var5;
  52.       this.starred = this.isStarred(var1);
  53.    }
  54.  
  55.    public synchronized String getType() {
  56.       return this.typeName;
  57.    }
  58.  
  59.    public synchronized void setType(String var1) {
  60.       this.typeName = var1.toLowerCase();
  61.    }
  62.  
  63.    public synchronized int getAction() {
  64.       return this.action;
  65.    }
  66.  
  67.    public synchronized void setAction(int var1, String var2) {
  68.       this.action = var1;
  69.       this.command = var2;
  70.    }
  71.  
  72.    public synchronized void setAction(int var1) {
  73.       this.action = var1;
  74.    }
  75.  
  76.    public synchronized String getLaunchString() {
  77.       return this.command;
  78.    }
  79.  
  80.    public synchronized void setCommand(String var1) {
  81.       this.command = var1;
  82.    }
  83.  
  84.    public synchronized String getDescription() {
  85.       return this.description != null ? this.description : this.typeName;
  86.    }
  87.  
  88.    public synchronized void setDescription(String var1) {
  89.       this.description = var1;
  90.    }
  91.  
  92.    public String getImageFileName() {
  93.       return this.imageFileName;
  94.    }
  95.  
  96.    public synchronized void setImageFileName(String var1) {
  97.       File var2 = new File(var1);
  98.       if (var2.getParent() == null) {
  99.          this.imageFileName = "doc:/lib/images/ftp" + File.separator + var1;
  100.       } else {
  101.          this.imageFileName = var1;
  102.       }
  103.  
  104.       if (var1.lastIndexOf(46) < 0) {
  105.          this.imageFileName = this.imageFileName + ".gif";
  106.       }
  107.  
  108.    }
  109.  
  110.    public String getTempFileTemplate() {
  111.       return this.tempFileNameTemplate;
  112.    }
  113.  
  114.    public synchronized String[] getExtensions() {
  115.       return this.fileExtensions;
  116.    }
  117.  
  118.    public synchronized String getExtensionsAsList() {
  119.       String var1 = "";
  120.       if (this.fileExtensions != null) {
  121.          for(int var2 = 0; var2 < this.fileExtensions.length; ++var2) {
  122.             var1 = var1 + this.fileExtensions[var2];
  123.             if (var2 < this.fileExtensions.length - 1) {
  124.                var1 = var1 + ",";
  125.             }
  126.          }
  127.       }
  128.  
  129.       return var1;
  130.    }
  131.  
  132.    public synchronized void setExtensions(String var1) {
  133.       StringTokenizer var2 = new StringTokenizer(var1, ",");
  134.       int var3 = var2.countTokens();
  135.       String[] var4 = new String[var3];
  136.  
  137.       for(int var5 = 0; var5 < var3; ++var5) {
  138.          String var6 = (String)var2.nextElement();
  139.          var4[var5] = var6.trim();
  140.       }
  141.  
  142.       this.fileExtensions = var4;
  143.    }
  144.  
  145.    private boolean isStarred(String var1) {
  146.       return var1 != null && var1.length() > 0 && var1.endsWith("/*");
  147.    }
  148.  
  149.    public Object launch(URLConnection var1, InputStream var2, MimeTable var3) throws ApplicationLaunchException {
  150.       switch (this.action) {
  151.          case 0:
  152.             return null;
  153.          case 1:
  154.             try {
  155.                return var1.getContent();
  156.             } catch (Exception var7) {
  157.                return null;
  158.             }
  159.          case 2:
  160.             try {
  161.                return var2;
  162.             } catch (Exception var6) {
  163.                return "Load to file failed:\n" + var6;
  164.             }
  165.          case 3:
  166.             String var4 = this.command;
  167.             int var5 = var4.indexOf(32);
  168.             if (var5 > 0) {
  169.                var4 = var4.substring(0, var5);
  170.             }
  171.  
  172.             return new MimeLauncher(this, var1, var2, var3.getTempFileTemplate(), var4);
  173.          default:
  174.             return null;
  175.       }
  176.    }
  177.  
  178.    public boolean matches(String var1) {
  179.       return this.starred ? var1.startsWith(this.typeName) : var1.equals(this.typeName);
  180.    }
  181.  
  182.    public Object clone() {
  183.       MimeEntry var1 = new MimeEntry(this.typeName);
  184.       var1.action = this.action;
  185.       var1.command = this.command;
  186.       var1.description = this.description;
  187.       var1.imageFileName = this.imageFileName;
  188.       var1.tempFileNameTemplate = this.tempFileNameTemplate;
  189.       var1.fileExtensions = this.fileExtensions;
  190.       return var1;
  191.    }
  192.  
  193.    public synchronized String toProperty() {
  194.       StringBuffer var1 = new StringBuffer();
  195.       String var2 = "; ";
  196.       boolean var3 = false;
  197.       int var4 = this.getAction();
  198.       if (var4 != 0) {
  199.          var1.append("action=" + actionKeywords[var4]);
  200.          var3 = true;
  201.       }
  202.  
  203.       String var5 = this.getLaunchString();
  204.       if (var5 != null && var5.length() > 0) {
  205.          if (var3) {
  206.             var1.append(var2);
  207.          }
  208.  
  209.          var1.append("application=" + var5);
  210.          var3 = true;
  211.       }
  212.  
  213.       if (this.getImageFileName() != null) {
  214.          if (var3) {
  215.             var1.append(var2);
  216.          }
  217.  
  218.          var1.append("icon=" + this.getImageFileName());
  219.          var3 = true;
  220.       }
  221.  
  222.       String var6 = this.getExtensionsAsList();
  223.       if (var6.length() > 0) {
  224.          if (var3) {
  225.             var1.append(var2);
  226.          }
  227.  
  228.          var1.append("file_extensions=" + var6);
  229.          var3 = true;
  230.       }
  231.  
  232.       String var7 = this.getDescription();
  233.       if (var7 != null && !var7.equals(this.getType())) {
  234.          if (var3) {
  235.             var1.append(var2);
  236.          }
  237.  
  238.          var1.append("description=" + var7);
  239.       }
  240.  
  241.       return var1.toString();
  242.    }
  243.  
  244.    public String toString() {
  245.       return "MimeEntry[contentType=" + this.typeName + ", image=" + this.imageFileName + ", action=" + this.action + ", command=" + this.command + ", extensions=" + this.getExtensionsAsList() + "]";
  246.    }
  247. }
  248.