Lines 508-526
Link Here
|
508 |
* <code>false</code> otherwise. |
508 |
* <code>false</code> otherwise. |
509 |
*/ |
509 |
*/ |
510 |
public IPackageFragment[] findPackageFragments(String name, boolean partialMatch, boolean patternMatch) { |
510 |
public IPackageFragment[] findPackageFragments(String name, boolean partialMatch, boolean patternMatch) { |
511 |
boolean hasPatternChars = patternMatch && (name.indexOf('*') >= 0 || name.indexOf('?') >= 0); |
511 |
boolean isStarPattern = name.equals("*"); //$NON-NLS-1$ |
|
|
512 |
boolean hasPatternChars = isStarPattern || (patternMatch && (name.indexOf('*') >= 0 || name.indexOf('?') >= 0)); |
512 |
if (partialMatch || hasPatternChars) { |
513 |
if (partialMatch || hasPatternChars) { |
513 |
String[] splittedName = Util.splitOn('.', name, 0, name.length()); |
514 |
String[] splittedName = Util.splitOn('.', name, 0, name.length()); |
514 |
IPackageFragment[] oneFragment = null; |
515 |
IPackageFragment[] oneFragment = null; |
515 |
ArrayList pkgs = null; |
516 |
ArrayList pkgs = null; |
516 |
char[] lowercaseName = name.toLowerCase().toCharArray(); |
517 |
char[] lowercaseName = hasPatternChars && !isStarPattern ? name.toLowerCase().toCharArray() : null; |
517 |
Object[][] keys = this.packageFragments.keyTable; |
518 |
Object[][] keys = this.packageFragments.keyTable; |
518 |
for (int i = 0, length = keys.length; i < length; i++) { |
519 |
for (int i = 0, length = keys.length; i < length; i++) { |
519 |
String[] pkgName = (String[]) keys[i]; |
520 |
String[] pkgName = (String[]) keys[i]; |
520 |
if (pkgName != null) { |
521 |
if (pkgName != null) { |
521 |
boolean match = hasPatternChars |
522 |
boolean match = isStarPattern || (hasPatternChars |
522 |
? CharOperation.match(lowercaseName, Util.concatCompoundNameToCharArray(pkgName), false) |
523 |
? CharOperation.match(lowercaseName, Util.concatCompoundNameToCharArray(pkgName), false) |
523 |
: Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch); |
524 |
: Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch)); |
524 |
if (match) { |
525 |
if (match) { |
525 |
Object value = this.packageFragments.valueTable[i]; |
526 |
Object value = this.packageFragments.valueTable[i]; |
526 |
if (value instanceof PackageFragmentRoot) { |
527 |
if (value instanceof PackageFragmentRoot) { |