home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPSourceParser.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  14.2 KB  |  1,136 lines

  1. import java.util.Date;
  2. import java.util.StringTokenizer;
  3. import java.util.Vector;
  4.  
  5. public class JDPSourceParser {
  6.    JDPUser user;
  7.    JDPSourceItem classHeader;
  8.    Vector calledMethods;
  9.    String lastToken;
  10.    String prevLastToken;
  11.    StringBuffer sourceSoFar;
  12.    StringBuffer thisComment;
  13.    String lastComment;
  14.    String lastJavaComment;
  15.    boolean inJavaComment;
  16.    boolean inLargeComment;
  17.    boolean inLineComment;
  18.    boolean inQuotedString;
  19.    boolean inAComment;
  20.    static final String spaceTokens = " \r\n\t,/}";
  21.    static final String tokenChars = "\r\n\t !%*()-+=|\\[]{};:\"'<>,/.";
  22.    public static final int CLASSHEADER = 0;
  23.    public static final int CONSTRUCTOR = 1;
  24.    public static final int METHOD = 2;
  25.    public static final int GLOBALVARIABLE = 3;
  26.    String msg = "Warning: text exists outside of last curly brace. Please check the curly brace positioning.";
  27.  
  28.    boolean readThroughMethod(StringTokenizer var1, String var2, boolean var3) {
  29.       if (var2 != null && var2.equals("{")) {
  30.          boolean var4 = false;
  31.          int var5 = 1;
  32.          var2 = "";
  33.  
  34.          while(var1.hasMoreTokens() && (var3 || var5 > 0)) {
  35.             if (var5 == 0 && " \r\n\t,/}".indexOf(var2) < 0) {
  36.                var4 = true;
  37.             }
  38.  
  39.             if (!this.inAComment) {
  40.                if (var2.equals("{")) {
  41.                   ++var5;
  42.                } else if (var2.equals("}")) {
  43.                   --var5;
  44.                }
  45.             }
  46.  
  47.             var2 = var1.nextToken();
  48.             this.handleToken(var2);
  49.          }
  50.  
  51.          if (var1.hasMoreTokens()) {
  52.             var2 = var1.nextToken();
  53.             this.handleToken(var2);
  54.          }
  55.  
  56.          return var5 >= 0 && !var4;
  57.       } else {
  58.          return true;
  59.       }
  60.    }
  61.  
  62.    public JDPSourceParser(JDPUser var1) {
  63.       this.user = var1;
  64.    }
  65.  
  66.    public static void replaceSource(JDPSourceItem var0, String var1, String var2) {
  67.       int var3 = var0.actualSource.indexOf(var1);
  68.       if (var3 >= 0) {
  69.          int var4 = var0.actualSource.length();
  70.          int var5 = 0;
  71.  
  72.          StringBuffer var6;
  73.          for(var6 = new StringBuffer(); var3 >= 0; var3 = var0.actualSource.indexOf(var1, var5)) {
  74.             var6.append(var0.actualSource.substring(var5, var3));
  75.             var5 = var3 + var1.length();
  76.             if (var3 != 0 && "\r\n\t !%*()-+=|\\[]{};:\"'<>,/.".indexOf(var0.actualSource.substring(var3 - 1, var3)) < 0 || var5 < var4 && "\r\n\t !%*()-+=|\\[]{};:\"'<>,/.".indexOf(var0.actualSource.substring(var5, var5 + 1)) < 0) {
  77.                var6.append(var1);
  78.             } else {
  79.                var6.append(var2);
  80.             }
  81.          }
  82.  
  83.          var6.append(var0.actualSource.substring(var5));
  84.          var0.actualSource = var6.toString();
  85.       }
  86.    }
  87.  
  88.    public static void reCreateHeader(JDPSourceItem var0) {
  89.       if (var0 != null) {
  90.          StringBuffer var1 = new StringBuffer();
  91.          int var2 = 0;
  92.          var1.append(createComment(var0));
  93.          if (var0.type != 0) {
  94.             var1.append("\t");
  95.          }
  96.  
  97.          if (var0.ispublic) {
  98.             var1.append("public ");
  99.          }
  100.  
  101.          if (var0.isprivate) {
  102.             var1.append("private ");
  103.          }
  104.  
  105.          if (var0.isprotected) {
  106.             var1.append("protected ");
  107.          }
  108.  
  109.          if (var0.isstatic) {
  110.             var1.append("static ");
  111.          }
  112.  
  113.          if (var0.isabstract) {
  114.             var1.append("abstract ");
  115.          }
  116.  
  117.          if (var0.isnative) {
  118.             var1.append("native ");
  119.          }
  120.  
  121.          if (var0.isfinal) {
  122.             var1.append("final ");
  123.          }
  124.  
  125.          if (var0.issynchronized) {
  126.             var1.append("synchronized ");
  127.          }
  128.  
  129.          if (var0.istransient) {
  130.             var1.append("transient ");
  131.          }
  132.  
  133.          if (var0.type == 0) {
  134.             var1.append("class ");
  135.          }
  136.  
  137.          if (var0.type == 3) {
  138.             var1.append(var0.varType + " ");
  139.          }
  140.  
  141.          if (var0.type == 2) {
  142.             var1.append(var0.returnType + " ");
  143.          }
  144.  
  145.          var1.append(var0.name);
  146.          if (var0.type == 1 || var0.type == 2) {
  147.             var1.append("(");
  148.             if (var0.parmTypes != null) {
  149.                for(int var3 = 0; var3 < var0.parmTypes.size(); ++var3) {
  150.                   if (var3 > 0) {
  151.                      var1.append(", ");
  152.                   }
  153.  
  154.                   if (var0.parmNames.size() > var3) {
  155.                      var1.append((String)var0.parmTypes.elementAt(var3) + " " + (String)var0.parmNames.elementAt(var3));
  156.                   }
  157.                }
  158.             }
  159.  
  160.             var1.append(") ");
  161.          }
  162.  
  163.          if (var0.type == 2 && var0.throwsExceptions != null && var0.throwsExceptions.size() > 0) {
  164.             var1.append("throws ");
  165.  
  166.             for(int var9 = 0; var9 < var0.throwsExceptions.size(); ++var9) {
  167.                if (var9 > 0) {
  168.                   var1.append(", ");
  169.                }
  170.  
  171.                var1.append((String)var0.throwsExceptions.elementAt(var9));
  172.             }
  173.  
  174.             var1.append(" ");
  175.          }
  176.  
  177.          if (var0.type == 0) {
  178.             if (var0.extendsClass != null && !var0.extendsClass.equals("")) {
  179.                var1.append(" extends " + var0.extendsClass);
  180.             }
  181.  
  182.             if (var0.implementsClasses != null && var0.implementsClasses.size() > 0) {
  183.                var1.append(" implements ");
  184.  
  185.                for(int var10 = 0; var10 < var0.implementsClasses.size(); ++var10) {
  186.                   if (var10 > 0) {
  187.                      var1.append(", ");
  188.                   }
  189.  
  190.                   var1.append((String)var0.implementsClasses.elementAt(var10));
  191.                }
  192.             }
  193.          }
  194.  
  195.          if (var0.type == 3) {
  196.             if (var0.actualSource != null && !var0.actualSource.equals("")) {
  197.                var2 = var0.actualSource.indexOf("=");
  198.                if (var2 >= 0) {
  199.                   var0.actualSource = var1.toString() + " " + var0.actualSource.substring(var2);
  200.                } else {
  201.                   var2 = var0.actualSource.indexOf(";");
  202.                   if (var2 >= 0) {
  203.                      var0.actualSource = var1.toString() + var0.actualSource.substring(var2);
  204.                   } else {
  205.                      var0.actualSource = var1.toString() + ";\n\t" + var0.actualSource;
  206.                   }
  207.                }
  208.             } else {
  209.                var0.actualSource = var1.toString() + ";\n";
  210.             }
  211.          } else if (var0.type != 2 && var0.type != 1) {
  212.             if (var0.type == 0) {
  213.                if (var0.actualSource == null || var0.actualSource.equals("")) {
  214.                   var0.actualSource = var1.toString() + " {\n";
  215.                   return;
  216.                }
  217.  
  218.                var2 = var0.actualSource.indexOf("{");
  219.                if (var2 >= 0) {
  220.                   int var11 = var0.actualSource.lastIndexOf("class", var2);
  221.                   int var4 = var0.actualSource.lastIndexOf("public", var2);
  222.                   if (var4 > 0 && (var4 < var11 || var11 < 0)) {
  223.                      var11 = var4;
  224.                   }
  225.  
  226.                   var4 = var0.actualSource.lastIndexOf("/*", var2);
  227.                   if (var4 > 0 && (var4 < var11 || var11 < 0)) {
  228.                      var11 = var4;
  229.                   }
  230.  
  231.                   if (var11 < 0) {
  232.                      var11 = 0;
  233.                   }
  234.  
  235.                   var0.actualSource = var0.actualSource.substring(0, var11) + var1.toString() + " " + var0.actualSource.substring(var2);
  236.                   return;
  237.                }
  238.  
  239.                var0.actualSource = var1.toString() + " " + var0.actualSource;
  240.             }
  241.  
  242.          } else if (var0.actualSource != null && !var0.actualSource.equals("")) {
  243.             var2 = var0.actualSource.indexOf("{");
  244.             if (var2 >= 0) {
  245.                var0.actualSource = var1.toString() + var0.actualSource.substring(var2);
  246.             } else {
  247.                var0.actualSource = var1.toString() + var0.actualSource;
  248.             }
  249.          } else {
  250.             var0.actualSource = var1.toString() + "{\n\t\t\n\t}\n";
  251.          }
  252.       }
  253.    }
  254.  
  255.    public JDPSourceItem reParseSource(JDPSourceItem var1) {
  256.       this.removeCalledMethod(var1);
  257.       this.parseSource(var1.actualSource, var1);
  258.       this.addCalledMethod(var1);
  259.       this.parseForMethods(var1, this.calledMethods);
  260.       return var1;
  261.    }
  262.  
  263.    public void removeCalledMethod(JDPSourceItem var1) {
  264.       if (var1.type == 1 || var1.type == 2 || var1.type == 3) {
  265.          if (var1.parmNames != null) {
  266.             this.calledMethods.removeElement(var1.name + Integer.toString(var1.parmNames.size()));
  267.             return;
  268.          }
  269.  
  270.          this.calledMethods.removeElement(var1.name);
  271.       }
  272.  
  273.    }
  274.  
  275.    static void appendDescription(StringBuffer var0, String var1, String var2) {
  276.       int var4 = 0;
  277.  
  278.       for(int var5 = var0.length() - 1; var0.charAt(var5) != '*'; --var5) {
  279.          ++var4;
  280.       }
  281.  
  282.       StringTokenizer var6 = new StringTokenizer(var1, " ", true);
  283.  
  284.       while(var6.hasMoreTokens()) {
  285.          String var3;
  286.          for(var3 = var6.nextToken(); var3.equals(" ") && var4 == 0 && var6.hasMoreTokens(); var3 = var6.nextToken()) {
  287.          }
  288.  
  289.          var0.append(var3);
  290.          var4 += var3.length();
  291.          if (var4 > 65 && var6.hasMoreTokens()) {
  292.             var0.append("\n" + var2 + " * ");
  293.             var4 = 0;
  294.          }
  295.       }
  296.  
  297.    }
  298.  
  299.    void readTillEndOfLine(StringTokenizer var1) {
  300.       if (var1.hasMoreTokens()) {
  301.          String var2 = var1.nextToken();
  302.          this.handleToken(var2);
  303.  
  304.          while(var1.hasMoreTokens() && !var2.equals(";")) {
  305.             var2 = var1.nextToken();
  306.             this.handleToken(var2);
  307.          }
  308.  
  309.       }
  310.    }
  311.  
  312.    void handleToken(String var1) {
  313.       if (this.sourceSoFar != null && (this.sourceSoFar.length() > 0 && !var1.equals("\r") || !var1.equals("\n") && !var1.equals("\r"))) {
  314.          this.sourceSoFar.append(var1);
  315.       }
  316.  
  317.       if (!this.inAComment && this.sourceSoFar != null) {
  318.          int var2 = this.sourceSoFar.length();
  319.          if (var2 > 4 && this.sourceSoFar.charAt(var2 - 1) == ' ' && this.sourceSoFar.charAt(var2 - 2) == ' ' && this.sourceSoFar.charAt(var2 - 3) == ' ' && this.sourceSoFar.charAt(var2 - 4) == ' ') {
  320.             this.sourceSoFar.setLength(var2 - 3);
  321.             this.sourceSoFar.setCharAt(var2 - 4, '\t');
  322.          }
  323.       }
  324.  
  325.       if (!this.inJavaComment && !this.inLargeComment && !this.inLineComment && !this.inQuotedString) {
  326.          if (var1.equals("/") && this.lastToken.equals("/")) {
  327.             this.inLineComment = true;
  328.             if (this.thisComment != null && this.thisComment.length() > 0 && this.thisComment.charAt(this.thisComment.length() - 1) != ' ') {
  329.                this.thisComment.append(" ");
  330.             }
  331.          } else if (var1.equals("*") && this.lastToken.equals("/")) {
  332.             this.inLargeComment = true;
  333.          } else if (var1.equals("\"") && (!this.lastToken.equals("\\") || this.prevLastToken.equals("\\"))) {
  334.             this.inQuotedString = true;
  335.          }
  336.       } else if (this.inQuotedString && var1.equals("\"") && (!this.lastToken.equals("\\") || this.prevLastToken.equals("\\"))) {
  337.          this.inQuotedString = false;
  338.       }
  339.  
  340.       if (this.inAComment) {
  341.          if (this.inLineComment && (var1.equals("\n") || var1.equals("\r"))) {
  342.             this.inLineComment = false;
  343.             if (this.thisComment != null) {
  344.                this.lastComment = this.thisComment.toString();
  345.                if (this.lastToken.equals("/")) {
  346.                   if (this.thisComment.length() > 0) {
  347.                      this.thisComment.setLength(this.thisComment.length() - 1);
  348.                   }
  349.  
  350.                   this.lastComment = this.thisComment.toString();
  351.                   this.thisComment.setLength(0);
  352.                }
  353.             }
  354.          }
  355.  
  356.          if (this.inLargeComment) {
  357.             if (this.prevLastToken.equals("/") && this.lastToken.equals("*") && var1.equals("*")) {
  358.                this.inJavaComment = true;
  359.                this.inLargeComment = false;
  360.             } else if (var1.equals("/") && this.lastToken.equals("*")) {
  361.                this.inLargeComment = false;
  362.                if (this.thisComment != null) {
  363.                   this.lastComment = this.thisComment.toString();
  364.                   this.thisComment.setLength(0);
  365.                }
  366.             }
  367.          }
  368.  
  369.          if (this.inJavaComment && var1.equals("/") && this.lastToken.equals("*")) {
  370.             this.inJavaComment = false;
  371.             if (this.thisComment != null) {
  372.                this.lastJavaComment = this.thisComment.toString();
  373.                this.thisComment.setLength(0);
  374.             }
  375.          }
  376.  
  377.          if (this.thisComment != null && (this.inJavaComment || this.inLargeComment || this.inLineComment)) {
  378.             if (this.thisComment.length() == 0) {
  379.                this.thisComment.append("/");
  380.             }
  381.  
  382.             this.thisComment.append(var1);
  383.          }
  384.       }
  385.  
  386.       if (!this.inJavaComment && !this.inLargeComment && !this.inLineComment && !this.inQuotedString) {
  387.          this.inAComment = false;
  388.       } else {
  389.          this.inAComment = true;
  390.       }
  391.  
  392.       this.prevLastToken = this.lastToken;
  393.       this.lastToken = var1;
  394.    }
  395.  
  396.    public static JDPSourceItem copyItem(JDPSourceItem var0) {
  397.       JDPSourceItem var1 = new JDPSourceItem();
  398.       var1.name = var0.name + "Copy";
  399.       var1.description = var0.description;
  400.       var1.type = var0.type;
  401.       var1.actualSource = var0.actualSource;
  402.       var1.ispublic = var0.ispublic;
  403.       var1.isprivate = var0.isprivate;
  404.       var1.isprotected = var0.isprotected;
  405.       var1.isstatic = var0.isstatic;
  406.       var1.isabstract = var0.isabstract;
  407.       var1.isnative = var0.isnative;
  408.       var1.isfinal = var0.isfinal;
  409.       var1.issynchronized = var0.issynchronized;
  410.       var1.istransient = var0.istransient;
  411.       return var1;
  412.    }
  413.  
  414.    String readParameters(JDPSourceItem var1, StringTokenizer var2) {
  415.       String var3 = "";
  416.       String var4 = this.getNextNonSpaceToken(var2);
  417.  
  418.       while(var4 != null && !var4.equals(")") && var3 != null && !var3.equals(")")) {
  419.          if (var1.parmTypes == null) {
  420.             var1.parmTypes = new Vector();
  421.             var1.parmNames = new Vector();
  422.          }
  423.  
  424.          for(var3 = this.getNextNonSpaceToken(var2); var4 != null && !var4.equals(")") && (var3.equals(".") || var3.equals("[") || var3.equals("]")); var3 = this.getNextNonSpaceToken(var2)) {
  425.             var4 = var4 + var3;
  426.             if (var3.equals(".")) {
  427.                var4 = var4 + this.getNextNonSpaceToken(var2);
  428.             }
  429.          }
  430.  
  431.          if (var4 != null && !var4.equals(")")) {
  432.             var1.parmTypes.addElement(var4);
  433.  
  434.             for(var4 = this.getNextNonSpaceToken(var2); var4 != null && !var4.equals(")") && (var4.equals("[") || var4.equals("]")); var4 = this.getNextNonSpaceToken(var2)) {
  435.                var3 = var3 + var4;
  436.             }
  437.  
  438.             if (!var3.equals(")")) {
  439.                var1.parmNames.addElement(var3);
  440.             } else {
  441.                var1.parmNames.addElement("undefinedParm");
  442.             }
  443.          } else {
  444.             var1.parmNames.addElement("undefinedParm");
  445.          }
  446.       }
  447.  
  448.       String var5 = this.getNextNonSpaceToken(var2);
  449.       if (var5 != null && var5.equals("throws")) {
  450.          var5 = this.getNextNonSpaceToken(var2);
  451.  
  452.          for(var1.throwsExceptions = new Vector(); !var5.equals("{"); var5 = this.getNextNonSpaceToken(var2)) {
  453.             var1.throwsExceptions.addElement(var5);
  454.          }
  455.       }
  456.  
  457.       return var5;
  458.    }
  459.  
  460.    String getNextNonSpaceToken(StringTokenizer var1) {
  461.       if (!var1.hasMoreTokens()) {
  462.          return null;
  463.       } else {
  464.          String var2 = var1.nextToken();
  465.          this.handleToken(var2);
  466.  
  467.          while(var1.hasMoreTokens() && (" \r\n\t,/}".indexOf(var2) >= 0 || this.inAComment)) {
  468.             var2 = var1.nextToken();
  469.             this.handleToken(var2);
  470.          }
  471.  
  472.          return var2;
  473.       }
  474.    }
  475.  
  476.    public void removeItem(JDPSourceItem var1) {
  477.       this.removeCalledMethod(var1);
  478.       this.classHeader.components.removeElement(var1);
  479.    }
  480.  
  481.    void getMethodDescriptions(JDPSourceItem var1) {
  482.       String var2 = this.lastJavaComment;
  483.       if (var2.equals("")) {
  484.          var2 = this.lastComment;
  485.       }
  486.  
  487.       String[] var3 = new String[40];
  488.       int var4 = 0;
  489.  
  490.       do {
  491.          var3[var4] = "";
  492.          ++var4;
  493.       } while(var4 < 40);
  494.  
  495.       var4 = 0;
  496.       int var5 = 0;
  497.       int var6 = 0;
  498.       int var8 = 0;
  499.       StringTokenizer var9 = new StringTokenizer(var2, "\r\n");
  500.  
  501.       while(var9.hasMoreTokens()) {
  502.          String var7 = var9.nextToken();
  503.          var6 = var7.indexOf("* ");
  504.          if (var6 < 0) {
  505.             var6 = var7.indexOf("/ ");
  506.          }
  507.  
  508.          if (var6 >= 0 && var7.substring(var6).length() > 2) {
  509.             var7 = var7.substring(var6 + 2);
  510.             if (var7.startsWith("@param ")) {
  511.                ++var4;
  512.                var5 = var4;
  513.                if (var7.length() > 7) {
  514.                   var3[var4] = var7.substring(7).trim();
  515.                }
  516.  
  517.                if (var1.parmNames != null && var1.parmNames.size() > var8 && var3[var4].startsWith((String)var1.parmNames.elementAt(var8) + " ")) {
  518.                   var3[var4] = var3[var4].substring(var3[var4].indexOf(" ") + 1);
  519.                }
  520.  
  521.                ++var8;
  522.             } else if (var7.startsWith("@return ")) {
  523.                if (var7.length() > 8) {
  524.                   var5 = 39;
  525.                   var3[var5] = var7.substring(8).trim();
  526.                }
  527.             } else if (var7.startsWith("@version ")) {
  528.                if (var7.length() > 9) {
  529.                   var5 = 38;
  530.                   var3[var5] = var3[var5] + var7.substring(9).trim();
  531.                }
  532.             } else if (var7.startsWith("@author ")) {
  533.                if (var7.length() > 8) {
  534.                   var5 = 37;
  535.                   var3[var5] = var3[var5] + var7.substring(8).trim();
  536.                }
  537.             } else if (var7.startsWith("@created ")) {
  538.                if (var7.length() > 9) {
  539.                   var5 = 36;
  540.                   var3[var5] = var3[var5] + var7.substring(9).trim();
  541.                }
  542.             } else if (var7.startsWith("@lastModified ")) {
  543.                if (var7.length() > 14) {
  544.                   var5 = 35;
  545.                   var3[var5] = var3[var5] + var7.substring(14).trim();
  546.                }
  547.             } else {
  548.                if (var3[var5].length() > 0) {
  549.                   var3[var5] = var3[var5] + " ";
  550.                }
  551.  
  552.                var3[var5] = var3[var5] + var7.trim();
  553.             }
  554.          }
  555.       }
  556.  
  557.       var1.description = var3[0];
  558.       var1.returnDesc = var3[39];
  559.       var1.author = var3[37];
  560.       var1.version = var3[38];
  561.       if (var3[36] != null) {
  562.          try {
  563.             var1.created = new Date(var3[36]);
  564.          } catch (Exception var12) {
  565.          }
  566.       }
  567.  
  568.       if (var3[35] != null) {
  569.          try {
  570.             var1.lastModified = new Date(var3[35]);
  571.          } catch (Exception var11) {
  572.          }
  573.       }
  574.  
  575.       var1.parmDescs = new Vector();
  576.  
  577.       for(int var10 = 1; var10 <= var4; ++var10) {
  578.          if (!var3[var10].equals("") && !var3[var10].endsWith(".")) {
  579.             var3[var10] = var3[var10] + ".";
  580.          }
  581.  
  582.          var1.parmDescs.addElement(var3[var10]);
  583.       }
  584.  
  585.       if (!var1.description.equals("") && !var1.description.endsWith(".")) {
  586.          String var10001 = var1.description;
  587.          var1.description = var10001 + ".";
  588.       }
  589.  
  590.       if (!var1.returnDesc.equals("") && !var1.returnDesc.endsWith(".")) {
  591.          String var16 = var1.returnDesc;
  592.          var1.returnDesc = var16 + ".";
  593.       }
  594.  
  595.    }
  596.  
  597.    public static int getItemType(String var0) {
  598.       if (var0.equals("Class")) {
  599.          return 0;
  600.       } else if (var0.equals("Global Variables")) {
  601.          return 3;
  602.       } else if (var0.equals("Constructors")) {
  603.          return 1;
  604.       } else {
  605.          return !var0.equals("Accessors") && !var0.equals("Methods") && !var0.equals("Public") && !var0.equals("Private") ? -1 : 2;
  606.       }
  607.    }
  608.  
  609.    public void addCalledMethod(JDPSourceItem var1) {
  610.       if (this.classHeader.components.indexOf(var1) < 0) {
  611.          this.classHeader.components.addElement(var1);
  612.       }
  613.  
  614.       if (var1.type == 1 || var1.type == 2 || var1.type == 3) {
  615.          if (var1.parmNames != null) {
  616.             this.calledMethods.addElement(var1.name + Integer.toString(var1.parmNames.size()));
  617.             return;
  618.          }
  619.  
  620.          this.calledMethods.addElement(var1.name);
  621.       }
  622.  
  623.    }
  624.  
  625.    void parseForMethods(JDPSourceItem var1, Vector var2) {
  626.       String var4 = "";
  627.       this.sourceSoFar = null;
  628.       this.thisComment = null;
  629.       this.lastToken = "";
  630.       String var5 = null;
  631.       String var6 = "";
  632.       String var7 = "";
  633.       String var8 = null;
  634.       this.lastComment = "";
  635.       this.lastJavaComment = "";
  636.       this.inJavaComment = false;
  637.       this.inLargeComment = false;
  638.       this.inLineComment = false;
  639.       this.inQuotedString = false;
  640.       String var9 = "";
  641.       boolean var10 = false;
  642.       var1.callsMethods = new Vector();
  643.       StringTokenizer var3 = new StringTokenizer(var1.actualSource, "\r\n\t !%*()-+=|\\[]{};:\"'<>,/.", true);
  644.  
  645.       while(var3.hasMoreTokens() && !var4.equals("{") || this.inAComment) {
  646.          var4 = var3.nextToken();
  647.          this.handleToken(var4);
  648.       }
  649.  
  650.       while(var3.hasMoreTokens()) {
  651.          var7 = var6;
  652.          var6 = var8;
  653.          var8 = var4;
  654.          var4 = var3.nextToken();
  655.          var10 = this.inAComment;
  656.          this.handleToken(var4);
  657.          if (var10 && !this.inAComment) {
  658.             var7 = "";
  659.             var6 = "";
  660.             var8 = "";
  661.          }
  662.  
  663.          if (!this.inAComment && var5 != null) {
  664.             if (var4.equals("(") && var3.hasMoreTokens() && (var6 == null || !var6.equals("."))) {
  665.                var9 = "";
  666.                var6 = var8;
  667.                var8 = var4;
  668.                var4 = var3.nextToken();
  669.                this.handleToken(var4);
  670.                if (!this.inAComment) {
  671.                   this.addCallMethod(var1, var4);
  672.                }
  673.  
  674.                if (!var4.equals(")")) {
  675.                   int var11 = 1;
  676.                   int var12 = 1;
  677.  
  678.                   while(var3.hasMoreTokens() && (var12 > 0 || !var4.equals(")"))) {
  679.                      var6 = var8;
  680.                      var8 = var4;
  681.                      var4 = var3.nextToken();
  682.                      this.handleToken(var4);
  683.                      if (var4.equals("(")) {
  684.                         ++var12;
  685.                      } else if (var4.equals(")")) {
  686.                         --var12;
  687.                      } else if (var4.equals(",")) {
  688.                         ++var11;
  689.                      } else if (!this.inAComment && !var8.equals(".")) {
  690.                         this.addCallMethod(var1, var4);
  691.                      }
  692.                   }
  693.  
  694.                   var9 = Integer.toString(var11);
  695.                }
  696.  
  697.                if (!this.inAComment) {
  698.                   this.addCallMethod(var1, var5 + var9);
  699.                }
  700.             } else if (!var4.equals("(") && (var6 == null || !var6.equals(".") || var6.equals(".") && var7.equals("this"))) {
  701.                this.addCallMethod(var1, var8);
  702.             }
  703.          }
  704.  
  705.          if ("\r\n\t !%*()-+=|\\[]{};:\"'<>,/.".indexOf(var4) < 0) {
  706.             var5 = var4;
  707.          }
  708.       }
  709.  
  710.    }
  711.  
  712.    public static JDPSourceItem createNewItem(JDPSourceItem var0) {
  713.       JDPSourceItem var1 = new JDPSourceItem();
  714.       var1.type = var0.type;
  715.       if (var0.type == 0) {
  716.          var1.name = "NewClass";
  717.       } else if (var0.type == 1) {
  718.          var1.name = "";
  719.          var1.ispublic = true;
  720.       } else if (var0.type == 3) {
  721.          var1.name = "newVar";
  722.          var1.varType = "String";
  723.       } else if (var0.type == 2) {
  724.          var1.name = var0.name;
  725.          var1.returnType = "void";
  726.          var1.ispublic = var0.ispublic;
  727.          var1.isprivate = var0.isprivate;
  728.       }
  729.  
  730.       return var1;
  731.    }
  732.  
  733.    public JDPSourceItem parseSource(String var1) {
  734.       return this.parseSource(var1, (JDPSourceItem)null);
  735.    }
  736.  
  737.    void addCallMethod(JDPSourceItem var1, String var2) {
  738.       if ("\r\n\t !%*()-+=|\\[]{};:\"'<>,/.".indexOf(var2) < 0 && var2.indexOf(".") < 0 && !var2.equals("this") && !var2.equals("new") && !var2.equals("equals") && !var2.equals("startsWith") && !var2.equals("endsWith") && !var2.equals("indexOf") && !var2.equals("elementAt") && !var2.equals("true") && !var2.equals("false") && !var2.equals("if") && !var2.equals("else") && !var2.equals("while") && !var2.equals("for") && !var2.equals("try") && !var2.equals("catch") && !var2.equals("&&") && !var2.equals("||") && !var2.equals("null") && !var2.equals("void") && !var2.equals("return") && !var2.equals("public") && !var2.equals("private") && !var2.equals("protected") && !var2.equals("synchronized") && !var2.equals("static") && !var2.equals("final") && !var2.equals("abstract") && !var2.equals("boolean") && !var2.equals("Boolean") && !var2.equals("String") && !var2.equals("int") && !var2.equals("Integer") && !var2.equals("Vector") && !var2.equals("StringTokenizer") && !var2.equals("long") && !var2.equals("Long") && !var2.equals("char") && !var2.equals("byte") && !var2.equals("switch") && !var2.equals("case") && !var2.equals("default") && var1.callsMethods.indexOf(var2) < 0) {
  739.          var1.callsMethods.addElement(var2);
  740.       }
  741.  
  742.    }
  743.  
  744.    JDPSourceItem parseSource(String var1, JDPSourceItem var2) {
  745.       JDPSourceItem var3;
  746.       if (var2 == null) {
  747.          var3 = new JDPSourceItem();
  748.          this.classHeader = new JDPSourceItem();
  749.       } else {
  750.          this.classHeader.components.removeElement(var2);
  751.          var3 = var2;
  752.          var2.ispublic = false;
  753.          var2.isprivate = false;
  754.          var2.isprotected = false;
  755.          var2.isstatic = false;
  756.          var2.isabstract = false;
  757.          var2.isnative = false;
  758.          var2.isfinal = false;
  759.          var2.issynchronized = false;
  760.          var2.istransient = false;
  761.          var2.name = null;
  762.          var2.description = null;
  763.          var2.created = null;
  764.          var2.author = null;
  765.          var2.version = null;
  766.          var2.extendsClass = null;
  767.          var2.implementsClasses = null;
  768.          var2.components = null;
  769.          var2.parmTypes = null;
  770.          var2.parmNames = null;
  771.          var2.parmDescs = null;
  772.          var2.callsMethods = null;
  773.          var2.returnType = null;
  774.          var2.returnDesc = null;
  775.          var2.throwsExceptions = null;
  776.          var2.varType = null;
  777.          var2.initValue = null;
  778.       }
  779.  
  780.       boolean var7 = false;
  781.       this.sourceSoFar = new StringBuffer();
  782.       this.thisComment = new StringBuffer();
  783.       this.lastToken = "";
  784.       this.lastComment = "";
  785.       this.lastJavaComment = "";
  786.       this.inJavaComment = false;
  787.       this.inLargeComment = false;
  788.       this.inLineComment = false;
  789.       this.inQuotedString = false;
  790.       int var8 = -1;
  791.       int var9 = 0;
  792.       StringTokenizer var4 = new StringTokenizer(var1, "\r\n\t !%*()-+=|\\[]{};:\"'<>,/.", true);
  793.  
  794.       while(var4.hasMoreTokens()) {
  795.          var9 = this.sourceSoFar.length();
  796.          String var5 = var4.nextToken();
  797.          this.handleToken(var5);
  798.          if (var3 == null) {
  799.             var3 = new JDPSourceItem();
  800.          }
  801.  
  802.          if (!this.inAComment) {
  803.             if (var5.equals("public")) {
  804.                var3.ispublic = true;
  805.                if (var8 < 0) {
  806.                   var8 = var9;
  807.                }
  808.             } else if (var5.equals("private")) {
  809.                var3.isprivate = true;
  810.                if (var8 < 0) {
  811.                   var8 = var9;
  812.                }
  813.             } else if (var5.equals("protected")) {
  814.                var3.isprotected = true;
  815.                if (var8 < 0) {
  816.                   var8 = var9;
  817.                }
  818.             } else if (var5.equals("static")) {
  819.                var3.isstatic = true;
  820.                if (var8 < 0) {
  821.                   var8 = var9;
  822.                }
  823.             } else if (var5.equals("abstract")) {
  824.                var3.isabstract = true;
  825.                if (var8 < 0) {
  826.                   var8 = var9;
  827.                }
  828.             } else if (var5.equals("native")) {
  829.                var3.isnative = true;
  830.                if (var8 < 0) {
  831.                   var8 = var9;
  832.                }
  833.             } else if (var5.equals("final")) {
  834.                var3.isfinal = true;
  835.                if (var8 < 0) {
  836.                   var8 = var9;
  837.                }
  838.             } else if (var5.equals("synchronized")) {
  839.                var3.issynchronized = true;
  840.                if (var8 < 0) {
  841.                   var8 = var9;
  842.                }
  843.             } else if (var5.equals("transient")) {
  844.                var3.istransient = true;
  845.                if (var8 < 0) {
  846.                   var8 = var9;
  847.                }
  848.             } else if (var5.equals("class")) {
  849.                if (var8 < 0) {
  850.                   var8 = var9;
  851.                }
  852.  
  853.                if (!var7) {
  854.                   this.classHeader = var3;
  855.                   this.classHeader.name = this.getNextNonSpaceToken(var4);
  856.                   this.classHeader.type = 0;
  857.                   this.classHeader.components = new Vector();
  858.                   this.classHeader.extendsClass = "";
  859.                   this.classHeader.implementsClasses = new Vector();
  860.                   String var14 = this.getNextNonSpaceToken(var4);
  861.  
  862.                   while(var4.hasMoreTokens() && !var14.equals("{")) {
  863.                      if (var14.equals("extends")) {
  864.                         this.classHeader.extendsClass = this.getNextNonSpaceToken(var4);
  865.                         var14 = this.getNextNonSpaceToken(var4);
  866.                      } else if (var14.equals("implements")) {
  867.                         for(var14 = this.getNextNonSpaceToken(var4); var4.hasMoreTokens() && !var14.equals("{"); var14 = this.getNextNonSpaceToken(var4)) {
  868.                            if (this.classHeader.implementsClasses == null) {
  869.                               this.classHeader.implementsClasses = new Vector();
  870.                            }
  871.  
  872.                            this.classHeader.implementsClasses.addElement(var14);
  873.                         }
  874.                      } else {
  875.                         var14 = this.getNextNonSpaceToken(var4);
  876.                      }
  877.                   }
  878.  
  879.                   this.classHeader.actualSource = this.sourceSoFar.toString();
  880.                   this.sourceSoFar.setLength(0);
  881.                   this.getMethodDescriptions(this.classHeader);
  882.                   var7 = true;
  883.                   this.thisComment.setLength(0);
  884.                   this.lastComment = "";
  885.                   this.lastJavaComment = "";
  886.                   var3 = new JDPSourceItem();
  887.                   var8 = -1;
  888.                }
  889.             } else if (!var5.equals("import") && !var5.equals("package")) {
  890.                if (var5.equals("}")) {
  891.                   var8 = -1;
  892.                } else if ("\r\n\t !%*()-+=|\\[]{};:\"'<>,/.".indexOf(var5) < 0) {
  893.                   if (var8 <= 0) {
  894.                      var8 = var9;
  895.                   }
  896.  
  897.                   var3.type = 3;
  898.                   var3.varType = var5;
  899.                   String var6 = this.getNextNonSpaceToken(var4);
  900.                   if (var6.equals(".")) {
  901.                      while(!var6.equals(" ")) {
  902.                         String var10001 = var3.varType;
  903.                         var3.varType = var10001 + var6;
  904.                         var6 = var4.nextToken();
  905.                         this.handleToken(var6);
  906.                      }
  907.  
  908.                      var6 = this.getNextNonSpaceToken(var4);
  909.                   }
  910.  
  911.                   while(var6.equals("[") || var6.equals("]")) {
  912.                      String var18 = var3.varType;
  913.                      var3.varType = var18 + var6;
  914.                      var6 = this.getNextNonSpaceToken(var4);
  915.                   }
  916.  
  917.                   if (var6.equals("(")) {
  918.                      var3.type = 1;
  919.                      var3.name = var3.varType;
  920.                      var3.varType = null;
  921.                      var6 = this.readParameters(var3, var4);
  922.                      this.getMethodDescriptions(var3);
  923.                      boolean var17 = this.readThroughMethod(var4, var6, var2 != null);
  924.                      if (var2 != null && !var17) {
  925.                         this.user.mainmsg.setStatusMsg(this.msg, 12);
  926.                      } else if (this.user.mainmsg.getStatusMsg().equals(this.msg)) {
  927.                         this.user.mainmsg.clearStatusMsg();
  928.                      }
  929.  
  930.                      if (var8 > 0 && this.sourceSoFar.length() > var8) {
  931.                         var3.actualSource = createComment(var3) + "\t" + this.sourceSoFar.toString().substring(var8);
  932.                      } else {
  933.                         var3.actualSource = createComment(var3) + this.sourceSoFar.toString();
  934.                      }
  935.  
  936.                      this.sourceSoFar.setLength(0);
  937.                      this.classHeader.components.addElement(var3);
  938.                      this.thisComment.setLength(0);
  939.                      this.lastComment = "";
  940.                      this.lastJavaComment = "";
  941.                      var8 = -1;
  942.                      var3 = new JDPSourceItem();
  943.                   } else {
  944.                      var3.name = var6;
  945.  
  946.                      for(var6 = this.getNextNonSpaceToken(var4); var6.equals("[") || var6.equals("]"); var6 = this.getNextNonSpaceToken(var4)) {
  947.                         String var19 = var3.varType;
  948.                         var3.varType = var19 + var6;
  949.                      }
  950.  
  951.                      if (var6.equals("(")) {
  952.                         var3.type = 2;
  953.                         var3.returnType = var3.varType;
  954.                         var3.varType = null;
  955.                         var6 = this.readParameters(var3, var4);
  956.                         this.getMethodDescriptions(var3);
  957.                         boolean var16 = this.readThroughMethod(var4, var6, var2 != null);
  958.                         if (var2 != null && !var16) {
  959.                            this.user.mainmsg.setStatusMsg(this.msg, 12);
  960.                         } else if (this.user.mainmsg.getStatusMsg().equals(this.msg)) {
  961.                            this.user.mainmsg.clearStatusMsg();
  962.                         }
  963.  
  964.                         if (var8 > 0 && this.sourceSoFar.length() > var8) {
  965.                            var3.actualSource = createComment(var3) + "\t" + this.sourceSoFar.toString().substring(var8);
  966.                         } else {
  967.                            var3.actualSource = createComment(var3) + this.sourceSoFar.toString();
  968.                         }
  969.  
  970.                         this.sourceSoFar.setLength(0);
  971.                         this.classHeader.components.addElement(var3);
  972.                         this.thisComment.setLength(0);
  973.                         this.lastComment = "";
  974.                         this.lastJavaComment = "";
  975.                         var8 = -1;
  976.                         var3 = new JDPSourceItem();
  977.                      } else {
  978.                         if (var6.equals("=")) {
  979.                            var6 = this.getNextNonSpaceToken(var4);
  980.                            var3.initValue = "";
  981.  
  982.                            while(var4.hasMoreTokens() && !var6.equals(";")) {
  983.                               String var20 = var3.initValue;
  984.                               var3.initValue = var20 + var6;
  985.                               var6 = var4.nextToken();
  986.                               this.handleToken(var6);
  987.                            }
  988.                         }
  989.  
  990.                         this.getMethodDescriptions(var3);
  991.                         if (var8 > 0 && this.sourceSoFar.length() > var8) {
  992.                            var3.actualSource = createComment(var3) + "\t" + this.sourceSoFar.toString().substring(var8);
  993.                         } else {
  994.                            var3.actualSource = createComment(var3) + this.sourceSoFar.toString();
  995.                         }
  996.  
  997.                         this.classHeader.components.addElement(var3);
  998.                         JDPSourceItem var10 = var3;
  999.                         this.sourceSoFar.setLength(0);
  1000.                         this.thisComment.setLength(0);
  1001.                         this.lastComment = "";
  1002.                         this.lastJavaComment = "";
  1003.                         var8 = -1;
  1004.  
  1005.                         for(var3 = new JDPSourceItem(); !var6.equals(";"); var3 = new JDPSourceItem()) {
  1006.                            var3.name = var6;
  1007.                            var3.type = 3;
  1008.                            var3.varType = var10.varType;
  1009.                            var6 = this.getNextNonSpaceToken(var4);
  1010.                            if (var6.equals("=")) {
  1011.                               var6 = this.getNextNonSpaceToken(var4);
  1012.                               var3.initValue = "";
  1013.  
  1014.                               while(var4.hasMoreTokens() && !var6.equals(";")) {
  1015.                                  String var21 = var3.initValue;
  1016.                                  var3.initValue = var21 + var6;
  1017.                                  var6 = var4.nextToken();
  1018.                                  this.handleToken(var6);
  1019.                               }
  1020.                            }
  1021.  
  1022.                            var3.actualSource = this.sourceSoFar.toString();
  1023.                            this.sourceSoFar.setLength(0);
  1024.                            this.classHeader.components.addElement(var3);
  1025.                            var10 = var3;
  1026.                            this.thisComment.setLength(0);
  1027.                            this.lastComment = "";
  1028.                            this.lastJavaComment = "";
  1029.                            var8 = -1;
  1030.                         }
  1031.                      }
  1032.                   }
  1033.                }
  1034.             } else {
  1035.                this.readTillEndOfLine(var4);
  1036.             }
  1037.          }
  1038.       }
  1039.  
  1040.       if (var2 == null) {
  1041.          return this.classHeader;
  1042.       } else {
  1043.          return var2;
  1044.       }
  1045.    }
  1046.  
  1047.    public void determineCalledMethods(JDPSourceItem var1) {
  1048.       this.calledMethods = new Vector();
  1049.  
  1050.       for(int var3 = 0; var3 < var1.components.size(); ++var3) {
  1051.          JDPSourceItem var2 = (JDPSourceItem)var1.components.elementAt(var3);
  1052.          this.addCalledMethod(var2);
  1053.       }
  1054.  
  1055.       for(int var5 = 0; var5 < var1.components.size(); ++var5) {
  1056.          JDPSourceItem var4 = (JDPSourceItem)var1.components.elementAt(var5);
  1057.          if (var4.type == 1 || var4.type == 2) {
  1058.             this.parseForMethods(var4, this.calledMethods);
  1059.          }
  1060.       }
  1061.  
  1062.    }
  1063.  
  1064.    public static String createComment(JDPSourceItem var0) {
  1065.       if (var0.description != null && !var0.description.equals("")) {
  1066.          String var1 = "\t";
  1067.          if (var0.type == 0) {
  1068.             var1 = "";
  1069.          }
  1070.  
  1071.          StringBuffer var2 = new StringBuffer();
  1072.          var2.append(var1 + "/*");
  1073.          if (var0.ispublic) {
  1074.             var2.append("*");
  1075.          }
  1076.  
  1077.          var2.append("\n" + var1 + " * ");
  1078.          appendDescription(var2, var0.description, var1);
  1079.          if (var0.parmNames != null) {
  1080.             for(int var3 = 0; var3 < var0.parmNames.size(); ++var3) {
  1081.                var2.append("\n" + var1 + " * @param ");
  1082.                var2.append((String)var0.parmNames.elementAt(var3));
  1083.                if (var0.parmDescs != null && var0.parmDescs.size() > var3 && !((String)var0.parmNames.elementAt(var3) + ".").equals((String)var0.parmDescs.elementAt(var3))) {
  1084.                   var2.append(" ");
  1085.                   appendDescription(var2, (String)var0.parmDescs.elementAt(var3), var1);
  1086.                }
  1087.             }
  1088.          }
  1089.  
  1090.          if (var0.returnDesc != null && !var0.returnDesc.equals("")) {
  1091.             var2.append("\n" + var1 + " * @return ");
  1092.             appendDescription(var2, var0.returnDesc, var1);
  1093.          }
  1094.  
  1095.          if (var0.author != null && !var0.author.equals("")) {
  1096.             var2.append("\n" + var1 + " * @author ");
  1097.             var2.append(var0.author);
  1098.          }
  1099.  
  1100.          if (var0.version != null && !var0.version.equals("")) {
  1101.             var2.append("\n" + var1 + " * @version ");
  1102.             var2.append(var0.version);
  1103.          }
  1104.  
  1105.          if (var0.created != null) {
  1106.             var2.append("\n" + var1 + " * @created ");
  1107.             var2.append(var0.created.toString());
  1108.          }
  1109.  
  1110.          if (var0.lastModified != null) {
  1111.             var2.append("\n" + var1 + " * @lastModified ");
  1112.             var2.append(var0.lastModified.toString());
  1113.          }
  1114.  
  1115.          var2.append("\n" + var1 + " */\n");
  1116.          return var2.toString();
  1117.       } else {
  1118.          return "";
  1119.       }
  1120.    }
  1121.  
  1122.    public static void changeMethodName(JDPSourceItem var0, String var1) {
  1123.       if (var0.node != null && var0.node.leftNodes != null) {
  1124.          for(int var3 = 0; var3 < var0.node.leftNodes.size(); ++var3) {
  1125.             JDPMethodNode var2 = (JDPMethodNode)var0.node.leftNodes.elementAt(var3);
  1126.             if (var2.item != null) {
  1127.                replaceSource(var2.item, var1, var0.name);
  1128.                var2.item.callsMethods.removeElement(var1);
  1129.                var2.item.callsMethods.addElement(var0.name);
  1130.             }
  1131.          }
  1132.  
  1133.       }
  1134.    }
  1135. }
  1136.