small fixes, the html output files are tagged when removed/added/imported correctly now. release341-BLD200301152341
authorralphk@netbeans.org
Tue, 09 Jul 2002 19:44:00 +0000
changeset 930d79a2ac19364
parent 929 b61653a2c8c1
child 931 eac36e2aaa03
small fixes, the html output files are tagged when removed/added/imported correctly now.
javacvs/changelog/src/org/netbeans/modules/changelog/ChangeLogProcessor.java
javacvs/changelog/src/org/netbeans/modules/changelog/LogPrinter_HTML.java
     1.1 --- a/javacvs/changelog/src/org/netbeans/modules/changelog/ChangeLogProcessor.java	Tue Jul 09 12:01:04 2002 +0000
     1.2 +++ b/javacvs/changelog/src/org/netbeans/modules/changelog/ChangeLogProcessor.java	Tue Jul 09 19:44:00 2002 +0000
     1.3 @@ -475,9 +475,10 @@
     1.4              try {
     1.5                  Method method = printer.getClass().getMethod(methodName, paramTypes);
     1.6                  method.invoke(printer, params);
     1.7 +            } catch (InvocationTargetException exc1) {
     1.8 +                org.openide.ErrorManager.getDefault().annotate(exc1.getTargetException(), "");
     1.9              } catch (Exception exc) {
    1.10 -                System.out.println("exception=" + exc.getClass());
    1.11 -                System.out.println("method=" + methodName);
    1.12 +                org.openide.ErrorManager.getDefault().annotate(exc, "");
    1.13              } 
    1.14          }
    1.15      }
     2.1 --- a/javacvs/changelog/src/org/netbeans/modules/changelog/LogPrinter_HTML.java	Tue Jul 09 12:01:04 2002 +0000
     2.2 +++ b/javacvs/changelog/src/org/netbeans/modules/changelog/LogPrinter_HTML.java	Tue Jul 09 19:44:00 2002 +0000
     2.3 @@ -25,6 +25,12 @@
     2.4   */
     2.5  public class LogPrinter_HTML implements LogPrinter {
     2.6      
     2.7 +    private static final String SPECIAL_KEY = "SPECIAL"; //NOI18N
     2.8 +    private static final String PREV_REVISION = "previous_revision"; //NOI18N
     2.9 +    private static final String FILE_PATH = "file_path"; //NOI18N
    2.10 +    private static final String CURR_REVISION = "current_revision"; //NOI18N
    2.11 +    
    2.12 +    
    2.13      private java.io.PrintWriter writer;
    2.14      
    2.15      private File file;
    2.16 @@ -158,8 +164,8 @@
    2.17              writer.println(revision.getNumber());
    2.18          }
    2.19          writer.println("  " + repoFileName);
    2.20 -        if (!(replacementMap.containsKey("removed") || replacementMap.containsKey("Imported"))  && //NOI18N
    2.21 -               replacementMap.containsKey("previous_revision") && //NOI18N
    2.22 +        if ((!replacementMap.containsKey(SPECIAL_KEY))  && //NOI18N
    2.23 +               replacementMap.containsKey(PREV_REVISION) && //NOI18N
    2.24                 service != null) {
    2.25              String diffUrl = replaceArguments(service.getDiffURL(), replacementMap);
    2.26  //            String diffUrl = "http://www.netbeans.org/source/browse/" + reducedRepoFileName 
    2.27 @@ -168,12 +174,8 @@
    2.28          } else {
    2.29              // do nothing..
    2.30          }
    2.31 -        if (replacementMap.containsKey("removed")) { //NOI18N
    2.32 -            // TODO - handle removed and added files..
    2.33 -            writer.println(" [Removed]");
    2.34 -        }
    2.35 -        if (replacementMap.containsKey("Imported")) {
    2.36 -//            writer.println(" [Imported]");
    2.37 +        if (replacementMap.containsKey(SPECIAL_KEY)) { //NOI18N
    2.38 +            writer.println(" ["+ replacementMap.get(SPECIAL_KEY) + "]");
    2.39          }
    2.40      }
    2.41      
    2.42 @@ -189,56 +191,77 @@
    2.43              } else {
    2.44                  reducedRepoFileName = repoFileName;
    2.45              }
    2.46 -            replacementMap.put("file_path", reducedRepoFileName); //NOI18N
    2.47 +            replacementMap.put(FILE_PATH, reducedRepoFileName); //NOI18N
    2.48          } else {
    2.49 -            replacementMap.put("file_path",  repoFileName);
    2.50 +            replacementMap.put(FILE_PATH,  repoFileName);
    2.51          }
    2.52 -        replacementMap.put("current_revision", revision.getNumber()); //NOI18N
    2.53 +        replacementMap.put(CURR_REVISION, revision.getNumber()); //NOI18N
    2.54          String revNumber = revision.getNumber();
    2.55 -        int index = revNumber.lastIndexOf('.');
    2.56 -        String prevRevision = null;
    2.57 -        if (index >= 0) {
    2.58 -            String lastNumber = revNumber.substring(index + 1);
    2.59 -            try {
    2.60 -                int number = Integer.parseInt(lastNumber);
    2.61 -                if (number != 1) {
    2.62 -                    prevRevision = revNumber.substring(0, index + 1) + Integer.toString(number - 1);
    2.63 +        if (revision.getState().equals("dead")) { //NOI18N
    2.64 +            replacementMap.put(SPECIAL_KEY, "Removed"); //NOI18N
    2.65 +        } else {
    2.66 +            int[] revNumbers = convertRevisionToIntArray(revision.getNumber());
    2.67 +            if (revNumbers[revNumbers.length - 2] % 2 != 0 && revNumbers.length != 2) {
    2.68 +                replacementMap.put(SPECIAL_KEY, "Imported"); //NOI18N
    2.69 +            } else {
    2.70 +                if (revNumbers[revNumbers.length - 1] == 1) {
    2.71 +                    if (revNumbers.length == 2) {
    2.72 +                        replacementMap.put(SPECIAL_KEY, "Added"); //NOI18N
    2.73 +                    } else {
    2.74 +                        revNumbers[revNumbers.length - 1] = 0;
    2.75 +                        revNumbers[revNumbers.length - 2] = 0;
    2.76 +                        String prevrev = convertIntArrayToRevision(revNumbers);
    2.77 +                        replacementMap.put(PREV_REVISION, prevrev);
    2.78 +                    }
    2.79 +                } else {
    2.80 +                    revNumbers[revNumbers.length - 1] = revNumbers[revNumbers.length - 1] - 1;
    2.81 +                    String prevrev = convertIntArrayToRevision(revNumbers);
    2.82 +                    replacementMap.put(PREV_REVISION, prevrev);
    2.83                  }
    2.84 -            } catch (NumberFormatException exc) {
    2.85 -                System.out.println("parsing exception=" + lastNumber);
    2.86              }
    2.87          }
    2.88 -        int dotCount = 0;
    2.89 -        int branchIndex = 0;
    2.90 -        boolean found = false;
    2.91 -        while (index >= 0) {
    2.92 -            dotCount = dotCount + 1;
    2.93 -            if (dotCount == 2 && prevRevision == null) {
    2.94 -                prevRevision = revNumber.substring(0, index);
    2.95 -                String branch = revNumber.substring(index + 1, branchIndex);
    2.96 -                try {
    2.97 -                    int parsedNumber = Integer.parseInt(branch);
    2.98 -                    if (parsedNumber % 2 != 0) {
    2.99 -                        replacementMap.put("Imported", "true"); //NOI18N
   2.100 -                    }
   2.101 -                } catch (NumberFormatException exc) {
   2.102 -                    
   2.103 -                }
   2.104 -            }
   2.105 -            if (dotCount == 1) {
   2.106 -                branchIndex = index;
   2.107 -            }
   2.108 -            index = revNumber.lastIndexOf('.', index - 1);
   2.109 -        }
   2.110 -        replacementMap.put("previous_revision", prevRevision); //NOI18N
   2.111 -        if (revision.getState().equals("dead")) { //NOI18N
   2.112 -            replacementMap.put("removed", revision.getState()); //NOI18N
   2.113 -        }
   2.114 -        
   2.115          return replacementMap;
   2.116          
   2.117      }
   2.118      
   2.119 +    /** method that converts the string value of the revision into an array of
   2.120 +     * integers for further processing
   2.121 +     */
   2.122 +    private int[] convertRevisionToIntArray(String revision) {
   2.123 +       StringTokenizer token = new StringTokenizer(revision, ".");
   2.124 +       int[] array = new int[token.countTokens()];
   2.125 +       int index = 0;
   2.126 +       while (token.hasMoreTokens()) {
   2.127 +           String item = token.nextToken();
   2.128 +           try {
   2.129 +              int parsedNumber = Integer.parseInt(item);
   2.130 +              array[index] = parsedNumber;
   2.131 +           } catch (NumberFormatException exc) {
   2.132 +              array[index] = 0;      
   2.133 +           }
   2.134 +           index = index + 1;
   2.135 +       }
   2.136 +       return array;
   2.137 +    }
   2.138 +
   2.139 +    /**
   2.140 +     * converts array of integers to a String conforming to the format of the cvs revisions
   2.141 +     * zero values are ignored. Can be used to shorten the resulting revision.
   2.142 +     */ 
   2.143 +    private String convertIntArrayToRevision(int[] arr) {
   2.144 +        StringBuffer buffer = new StringBuffer();
   2.145 +        for (int i = 0; i < arr.length; i++) {
   2.146 +            if (arr[i] == 0) {
   2.147 +                continue;
   2.148 +            }
   2.149 +            if (i != 0) {
   2.150 +                buffer.append('.');
   2.151 +            }
   2.152 +            buffer.append(arr[i]);
   2.153 +        }
   2.154 +        return buffer.toString();
   2.155 +    }
   2.156 +    
   2.157      public void printGroupFooter(RevisionsGroup group) {
   2.158          if (writer == null) {
   2.159              return;