langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/IndexBuilder.java
changeset 22159 682da512ec17
parent 16319 e586bfeb39c5
child 22163 3651128c74eb
equal deleted inserted replaced
22158:dca1b80ed62c 22159:682da512ec17
   130     /**
   130     /**
   131      * Sort the index map. Traverse the index map for all it's elements and
   131      * Sort the index map. Traverse the index map for all it's elements and
   132      * sort each element which is a list.
   132      * sort each element which is a list.
   133      */
   133      */
   134     protected void sortIndexMap() {
   134     protected void sortIndexMap() {
   135         for (Iterator<List<Doc>> it = indexmap.values().iterator(); it.hasNext(); ) {
   135         for (List<Doc> docs : indexmap.values()) {
   136             Collections.sort(it.next(), new DocComparator());
   136             Collections.sort(docs, new DocComparator());
   137         }
   137         }
   138     }
   138     }
   139 
   139 
   140     /**
   140     /**
   141      * Get all the members in all the Packages and all the Classes
   141      * Get all the members in all the Packages and all the Classes
   148         PackageDoc[] packages = root.specifiedPackages();
   148         PackageDoc[] packages = root.specifiedPackages();
   149         ClassDoc[] classes = root.classes();
   149         ClassDoc[] classes = root.classes();
   150         if (!classesOnly) {
   150         if (!classesOnly) {
   151             if (packages.length == 0) {
   151             if (packages.length == 0) {
   152                 Set<PackageDoc> set = new HashSet<PackageDoc>();
   152                 Set<PackageDoc> set = new HashSet<PackageDoc>();
   153                 PackageDoc pd;
   153                 for (ClassDoc aClass : classes) {
   154                 for (int i = 0; i < classes.length; i++) {
   154                     PackageDoc pd = aClass.containingPackage();
   155                     pd = classes[i].containingPackage();
       
   156                     if (pd != null && pd.name().length() > 0) {
   155                     if (pd != null && pd.name().length() > 0) {
   157                         set.add(pd);
   156                         set.add(pd);
   158                     }
   157                     }
   159                 }
   158                 }
   160                 adjustIndexMap(set.toArray(packages));
   159                 adjustIndexMap(set.toArray(packages));
   162                 adjustIndexMap(packages);
   161                 adjustIndexMap(packages);
   163             }
   162             }
   164         }
   163         }
   165         adjustIndexMap(classes);
   164         adjustIndexMap(classes);
   166         if (!classesOnly) {
   165         if (!classesOnly) {
   167             for (int i = 0; i < classes.length; i++) {
   166             for (ClassDoc aClass : classes) {
   168                 if (shouldAddToIndexMap(classes[i])) {
   167                 if (shouldAddToIndexMap(aClass)) {
   169                     putMembersInIndexMap(classes[i]);
   168                     putMembersInIndexMap(aClass);
   170                 }
   169                 }
   171             }
   170             }
   172         }
   171         }
   173         sortIndexMap();
   172         sortIndexMap();
   174     }
   173     }
   192      * for that particular unicode character.
   191      * for that particular unicode character.
   193      *
   192      *
   194      * @param elements Array of members.
   193      * @param elements Array of members.
   195      */
   194      */
   196     protected void adjustIndexMap(Doc[] elements) {
   195     protected void adjustIndexMap(Doc[] elements) {
   197         for (int i = 0; i < elements.length; i++) {
   196         for (Doc element : elements) {
   198             if (shouldAddToIndexMap(elements[i])) {
   197             if (shouldAddToIndexMap(element)) {
   199                 String name = elements[i].name();
   198                 String name = element.name();
   200                 char ch = (name.length()==0)?
   199                 char ch = (name.length() == 0) ?
   201                     '*' :
   200                           '*' :
   202                     Character.toUpperCase(name.charAt(0));
   201                           Character.toUpperCase(name.charAt(0));
   203                 Character unicode = new Character(ch);
   202                 Character unicode = ch;
   204                 List<Doc> list = indexmap.get(unicode);
   203                 List<Doc> list = indexmap.get(unicode);
   205                 if (list == null) {
   204                 if (list == null) {
   206                     list = new ArrayList<Doc>();
   205                     list = new ArrayList<Doc>();
   207                     indexmap.put(unicode, list);
   206                     indexmap.put(unicode, list);
   208                 }
   207                 }
   209                 list.add(elements[i]);
   208                 list.add(element);
   210             }
   209             }
   211         }
   210         }
   212     }
   211     }
   213 
   212 
   214     /**
   213     /**