home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / Notes.jar / lotus / notes / internal / InfoPaneBuilder.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-15  |  7.1 KB  |  235 lines

  1. package lotus.notes.internal;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.lang.reflect.Modifier;
  7. import java.util.Hashtable;
  8. import java.util.Properties;
  9. import java.util.StringTokenizer;
  10. import java.util.zip.ZipEntry;
  11. import java.util.zip.ZipInputStream;
  12. import lotus.notes.JavaString;
  13.  
  14. public class InfoPaneBuilder {
  15.    static final String fileSep = System.getProperty("file.separator", "\\");
  16.    static final char fileSepChar;
  17.    static final String class_ext = ".class";
  18.    // $FF: synthetic field
  19.    static Class class$lotus$notes$internal$InfoPaneTopItem;
  20.  
  21.    InfoPaneBuilder() {
  22.    }
  23.  
  24.    public static void main(String[] var0) {
  25.       String var1 = null;
  26.       String var2 = null;
  27.       boolean var3 = false;
  28.       String var4 = null;
  29.       String var5 = null;
  30.  
  31.       try {
  32.          for(int var6 = 0; var6 < var0.length; ++var6) {
  33.             String var7 = var0[var6];
  34.             if (var7.charAt(0) != '-') {
  35.                throw new InfoPaneUsageException("Missing argument before " + var7);
  36.             }
  37.  
  38.             if (var7.length() != 2) {
  39.                throw new InfoPaneUsageException(var7 + " is unknown flag");
  40.             }
  41.  
  42.             char var8 = var7.charAt(1);
  43.             if (var8 == 'a') {
  44.                var3 = true;
  45.             } else {
  46.                ++var6;
  47.                if (var6 >= var0.length) {
  48.                   throw new InfoPaneUsageException("Missing name after -" + var8 + " flag");
  49.                }
  50.  
  51.                String var9 = var0[var6];
  52.                switch (var8) {
  53.                   case 'd':
  54.                      var5 = var9;
  55.                   case 'i':
  56.                   case 'x':
  57.                      break;
  58.                   case 'j':
  59.                      var4 = var9;
  60.                      break;
  61.                   case 'n':
  62.                      var1 = var9;
  63.                      break;
  64.                   case 'o':
  65.                      var2 = var9;
  66.                      break;
  67.                   default:
  68.                      throw new InfoPaneUsageException("-" + var8 + " is unknown flag");
  69.                }
  70.             }
  71.          }
  72.  
  73.          if (var1 == null) {
  74.             throw new InfoPaneUsageException("Must have a -n flag");
  75.          }
  76.  
  77.          if (var2 == null) {
  78.             throw new InfoPaneUsageException("Must have a -o flag");
  79.          }
  80.  
  81.          if (var5 == null && var4 == null) {
  82.             throw new InfoPaneUsageException("Must have either a -d flag or a -j flag");
  83.          }
  84.  
  85.          if (var5 != null && var4 != null) {
  86.             throw new InfoPaneUsageException("Cannot have both a -d and a -j flag");
  87.          }
  88.  
  89.          String var12 = var2 + fileSep + "lotus/notes/internal/INFOPANE".replace('/', fileSepChar);
  90.          InfoPaneVector var13 = new InfoPaneVector();
  91.          new JavaString("lotus.notes.AgentResources");
  92.          if (var3) {
  93.             var13.Read(var12, class$lotus$notes$internal$InfoPaneTopItem != null ? class$lotus$notes$internal$InfoPaneTopItem : (class$lotus$notes$internal$InfoPaneTopItem = class$("lotus.notes.internal.InfoPaneTopItem")));
  94.          }
  95.  
  96.          InfoPaneTopItem var14 = new InfoPaneTopItem(var1);
  97.          Properties var10 = System.getProperties();
  98.          ((Hashtable)var10).put("lotus.notes.internal.InfoPaneBuilder", "true");
  99.          if (var5 != null) {
  100.             ReadDir(var5, "lotus", var14);
  101.          } else if (var4 != null) {
  102.             ReadJar(var4, var14);
  103.          }
  104.  
  105.          var13.Insert(var14);
  106.          System.out.println("  -- adding " + var1 + " InfoPane display");
  107.          var13.Write(var12, class$lotus$notes$internal$InfoPaneTopItem != null ? class$lotus$notes$internal$InfoPaneTopItem : (class$lotus$notes$internal$InfoPaneTopItem = class$("lotus.notes.internal.InfoPaneTopItem")));
  108.       } catch (Exception var11) {
  109.          System.out.println(var11);
  110.       }
  111.  
  112.       System.exit(0);
  113.    }
  114.  
  115.    static void ReadDir(String var0, String var1, InfoPaneTopItem var2) throws InfoPaneException {
  116.       if (var1.equals("lotus")) {
  117.          ReadDir(var0, var1 + ".domino", var2);
  118.       } else if (!var1.equals("lotus.domino")) {
  119.          System.out.println("  -- cannot add unauthorized package " + var1 + " from directory " + var0 + " to InfoPane display");
  120.       } else {
  121.          String var3 = var0 + fileSepChar + var1.replace('.', fileSepChar);
  122.          InfoPanePackageItem var4 = var2.FindPackage(var1);
  123.          if (var4 == null) {
  124.             var4 = new InfoPanePackageItem(var1);
  125.          }
  126.  
  127.          File var5 = new File(var3);
  128.          if (!var5.isDirectory()) {
  129.             System.out.println("  -- cannot read " + var1 + " classes, because " + var3 + " is not a directory");
  130.          } else {
  131.             String[] var6 = var5.list();
  132.  
  133.             try {
  134.                for(int var9 = 0; var6[var9] != null; ++var9) {
  135.                   String var10 = var6[var9];
  136.                   File var11 = new File(var5, var10);
  137.                   if (var11.isFile() && var10.endsWith(".class") && !var10.startsWith("AgentInfo.") && !var10.startsWith("AgentLauncher.") && !var10.startsWith("AgentLoader.") && !var10.startsWith("AgentSecurityContext.") && !var10.startsWith("AgentSecurityManager.") && !var10.startsWith("AgentThreadGroup.") && !var10.startsWith("AppletBase.") && !var10.startsWith("JAppletBase.") && !var10.startsWith("JavaString.") && !var10.startsWith("OS400JavaThread.") && !var10.startsWith("OS400RunJava.") && !var10.startsWith("PVTConstants.")) {
  138.                      ReadClass(var10, var4);
  139.                   }
  140.                }
  141.             } catch (ArrayIndexOutOfBoundsException var14) {
  142.             } finally {
  143.                if (var4.HasSubCategory()) {
  144.                   var2.AddPackage(var4);
  145.                } else {
  146.                   System.out.println("  -- cannot add empty package " + var1 + " from directory " + var3 + " to InfoPane display");
  147.                }
  148.  
  149.             }
  150.  
  151.          }
  152.       }
  153.    }
  154.  
  155.    static void ReadJar(String var0, InfoPaneTopItem var1) throws InfoPaneException, IOException {
  156.       FileInputStream var2 = new FileInputStream(var0);
  157.       ZipInputStream var3 = new ZipInputStream(var2);
  158.  
  159.       ZipEntry var11;
  160.       for(Object var4 = null; (var11 = var3.getNextEntry()) != null; var3.closeEntry()) {
  161.          String var5 = var11.getName();
  162.          if (!var11.isDirectory() && var5.startsWith("java")) {
  163.             StringTokenizer var6 = new StringTokenizer(var5, "/");
  164.             String var7 = var6.nextToken();
  165.             String var8 = null;
  166.  
  167.             while(var6.hasMoreTokens()) {
  168.                var8 = var6.nextToken();
  169.                if (var6.hasMoreTokens()) {
  170.                   var7 = var7 + "." + var8;
  171.                }
  172.             }
  173.  
  174.             InfoPanePackageItem var10 = var1.FindPackage(var7);
  175.             if (var10 == null) {
  176.                var10 = new InfoPanePackageItem(var7);
  177.             }
  178.  
  179.             ReadClass(var8, var10);
  180.             if (var10.HasSubCategory() && var1.FindPackage(var7) == null) {
  181.                var1.AddPackage(var10);
  182.             }
  183.          }
  184.       }
  185.  
  186.       var2.close();
  187.    }
  188.  
  189.    static void ReadClass(String var0, InfoPanePackageItem var1) {
  190.       if (var0.endsWith(".class") && var0.indexOf(36) == -1) {
  191.          int var2 = var0.length() - ".class".length();
  192.          String var3 = var1.GetName() + "." + var0.substring(0, var2);
  193.  
  194.          try {
  195.             Class var4 = Class.forName(var3);
  196.             if (Modifier.isPublic(var4.getModifiers())) {
  197.                if (var4.isInterface()) {
  198.                   var1.AddInterface(var3, var4.toString());
  199.                   return;
  200.                }
  201.  
  202.                var1.AddClass(var3, var4.toString());
  203.                return;
  204.             }
  205.          } catch (ClassNotFoundException var5) {
  206.             System.out.println("InfoPaneBuilder.ReadClass:  " + var5 + " -- could not load " + var3);
  207.             ((Throwable)var5).printStackTrace();
  208.             return;
  209.          } catch (LinkageError var6) {
  210.             System.out.println("InfoPaneBuilder.ReadClass:  " + var6 + " -- could not load " + var3);
  211.             ((Throwable)var6).printStackTrace();
  212.             return;
  213.          } catch (InfoPaneException var7) {
  214.             System.out.println("InfoPaneBuilder.ReadClass:  " + var7 + " -- could not load " + var3);
  215.             ((Throwable)var7).printStackTrace();
  216.             return;
  217.          }
  218.       }
  219.  
  220.    }
  221.  
  222.    // $FF: synthetic method
  223.    static Class class$(String var0) {
  224.       try {
  225.          return Class.forName(var0);
  226.       } catch (ClassNotFoundException var2) {
  227.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  228.       }
  229.    }
  230.  
  231.    static {
  232.       fileSepChar = fileSep.charAt(0);
  233.    }
  234. }
  235.