1 19 20 package org.netbeans.modules.apisupport.project.ui.customizer; 21 22 import java.text.Collator ; 23 import java.util.Iterator ; 24 import java.util.LinkedHashSet ; 25 import java.util.Locale ; 26 import java.util.Set ; 27 import java.util.TreeSet ; 28 29 33 final class AddModuleFilter { 34 35 private final Set <ModuleDependency> universe; 36 private final String dependingModuleCNB; 37 38 41 public AddModuleFilter(Set <ModuleDependency> universe, String dependingModuleCNB) { 42 this.universe = universe; 43 this.dependingModuleCNB = dependingModuleCNB; 44 Iterator it = universe.iterator(); 46 while (it.hasNext()) { 47 ModuleDependency dep = (ModuleDependency) it.next(); 48 dep.getFilterTokens(dependingModuleCNB); 49 } 50 } 53 54 57 public Set <ModuleDependency> getMatches(String text) { 58 String textLC = text.toLowerCase(Locale.ENGLISH); 59 Set <ModuleDependency>[] matches = new Set [3]; 60 for (int i = 0; i < matches.length; i++) { 61 matches[i] = new TreeSet (ModuleDependency.LOCALIZED_NAME_COMPARATOR); 63 } 64 Iterator it = universe.iterator(); 65 while (it.hasNext()) { 66 ModuleDependency dep = (ModuleDependency) it.next(); 67 int matchLevel = matches.length; 68 Set <String > tokens = dep.getFilterTokens(dependingModuleCNB); 69 Iterator it2 = tokens.iterator(); 70 while (it2.hasNext()) { 71 String token = ((String ) it2.next()).toLowerCase(Locale.ENGLISH); 72 if (token.equals(textLC) || token.endsWith("." + textLC)) { matchLevel = Math.min(0, matchLevel); 76 } else if (token.indexOf("." + textLC) != -1) { matchLevel = Math.min(1, matchLevel); 79 } else if (token.indexOf(textLC) != -1) { 80 matchLevel = Math.min(2, matchLevel); 82 } 83 } 84 if (matchLevel < matches.length) { 85 matches[matchLevel].add(dep); 86 } 87 } 88 Set result = new LinkedHashSet (); 89 for (int i = 0; i < matches.length; i++) { 90 result.addAll(matches[i]); 91 } 92 return result; 93 } 94 95 98 public Set <String > getMatchesFor(String text, ModuleDependency dep) { 99 String textLC = text.toLowerCase(Locale.US); 100 Set <String > tokens = new TreeSet (Collator.getInstance()); 101 Iterator it = dep.getFilterTokens(dependingModuleCNB).iterator(); 102 while (it.hasNext()) { 103 String token = (String ) it.next(); 104 if (token.toLowerCase(Locale.US).indexOf(textLC) != -1) { 105 tokens.add(token); 106 } 107 } 108 return tokens; 109 } 110 111 } 112 | Popular Tags |