Example usage for org.eclipse.jdt.internal.core.util Util startsWithIgnoreCase

List of usage examples for org.eclipse.jdt.internal.core.util Util startsWithIgnoreCase

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core.util Util startsWithIgnoreCase.

Prototype

public static boolean startsWithIgnoreCase(String[] compoundName, String[] prefix, boolean partialMatch) 

Source Link

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.builder.ClasspathJar.java

License:Open Source License

@Override
public void findPackages(String[] name, ISearchRequestor requestor) {
    SimpleSet knownPackageNames = getKnownPackages();
    for (Object value : knownPackageNames.values) {
        if (value == null) {
            continue;
        }/*from  w w  w  . j  a v a 2 s.  c  o m*/
        String pkg = value.toString();
        String[] pkgName = Util.splitOn('/', pkg, 0, pkg.length());

        if (pkgName != null && Util.startsWithIgnoreCase(pkgName, name, true)) {
            requestor.acceptPackage(Util.concatWith(pkgName, '.').toCharArray());
        }

    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.NameLookup.java

License:Open Source License

/**
 * Returns the package fragments whose name matches the given
 * (qualified) name or pattern, or <code>null</code> if none exist.
 * <p/>//from w w  w  . ja va  2 s. c o m
 * The name can be:
 * <ul>
 * <li>empty: ""</li>
 * <li>qualified: "pack.pack1.pack2"</li>
 * <li>a pattern: "pack.*.util"</li>
 * </ul>
 *
 * @param partialMatch
 *         partial name matches qualify when <code>true</code>,
 * @param patternMatch
 *         <code>true</code> when the given name might be a pattern,
 *         <code>false</code> otherwise.
 */
public IPackageFragment[] findPackageFragments(String name, boolean partialMatch, boolean patternMatch) {
    boolean isStarPattern = name.equals("*"); //$NON-NLS-1$
    boolean hasPatternChars = isStarPattern
            || (patternMatch && (name.indexOf('*') >= 0 || name.indexOf('?') >= 0));
    if (partialMatch || hasPatternChars) {
        String[] splittedName = Util.splitOn('.', name, 0, name.length());
        IPackageFragment[] oneFragment = null;
        ArrayList pkgs = null;
        char[] lowercaseName = hasPatternChars && !isStarPattern ? name.toLowerCase().toCharArray() : null;
        Object[][] keys = this.packageFragments.keyTable;
        for (int i = 0, length = keys.length; i < length; i++) {
            String[] pkgName = (String[]) keys[i];
            if (pkgName != null) {
                boolean match = isStarPattern || (hasPatternChars
                        ? CharOperation.match(lowercaseName, Util.concatCompoundNameToCharArray(pkgName), false)
                        : Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch));
                if (match) {
                    Object value = this.packageFragments.valueTable[i];
                    if (value instanceof PackageFragmentRoot) {
                        IPackageFragment pkg = ((PackageFragmentRoot) value).getPackageFragment(pkgName);
                        if (oneFragment == null) {
                            oneFragment = new IPackageFragment[] { pkg };
                        } else {
                            if (pkgs == null) {
                                pkgs = new ArrayList();
                                pkgs.add(oneFragment[0]);
                            }
                            pkgs.add(pkg);
                        }
                    } else {
                        IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value;
                        for (int j = 0, length2 = roots.length; j < length2; j++) {
                            PackageFragmentRoot root = (PackageFragmentRoot) roots[j];
                            IPackageFragment pkg = root.getPackageFragment(pkgName);
                            if (oneFragment == null) {
                                oneFragment = new IPackageFragment[] { pkg };
                            } else {
                                if (pkgs == null) {
                                    pkgs = new ArrayList();
                                    pkgs.add(oneFragment[0]);
                                }
                                pkgs.add(pkg);
                            }
                        }
                    }
                }
            }
        }
        if (pkgs == null)
            return oneFragment;
        int resultLength = pkgs.size();
        IPackageFragment[] result = new IPackageFragment[resultLength];
        pkgs.toArray(result);
        return result;
    } else {
        String[] splittedName = Util.splitOn('.', name, 0, name.length());
        int pkgIndex = this.packageFragments.getIndex(splittedName);
        if (pkgIndex == -1)
            return null;
        Object value = this.packageFragments.valueTable[pkgIndex];
        // reuse existing String[]
        String[] pkgName = (String[]) this.packageFragments.keyTable[pkgIndex];
        if (value instanceof PackageFragmentRoot) {
            return new IPackageFragment[] { ((PackageFragmentRoot) value).getPackageFragment(pkgName) };
        } else {
            IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value;
            IPackageFragment[] result = new IPackageFragment[roots.length];
            for (int i = 0; i < roots.length; i++) {
                result[i] = ((PackageFragmentRoot) roots[i]).getPackageFragment(pkgName);
            }
            return result;
        }
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.NameLookup.java

License:Open Source License

/**
 * Notifies the given requestor of all package fragments with the
 * given name. Checks the requestor at regular intervals to see if the
 * requestor has canceled. The domain of
 * the search is bounded by the <code>IJavaProject</code>
 * this <code>NameLookup</code> was obtained from.
 *
 * @param partialMatch// w w w  .  j a  v a2 s .c o m
 *         partial name matches qualify when <code>true</code>;
 *         only exact name matches qualify when <code>false</code>
 */
public void seekPackageFragments(String name, boolean partialMatch, IJavaElementRequestor requestor) {
    /*      if (VERBOSE) {
    Util.verbose(" SEEKING PACKAGE FRAGMENTS");  //$NON-NLS-1$
             Util.verbose(" -> name: " + name);  //$NON-NLS-1$
             Util.verbose(" -> partial match:" + partialMatch);  //$NON-NLS-1$
          }
    */
    if (partialMatch) {
        String[] splittedName = Util.splitOn('.', name, 0, name.length());
        Object[][] keys = this.packageFragments.keyTable;
        for (int i = 0, length = keys.length; i < length; i++) {
            if (requestor.isCanceled())
                return;
            String[] pkgName = (String[]) keys[i];
            if (pkgName != null && Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch)) {
                Object value = this.packageFragments.valueTable[i];
                if (value instanceof PackageFragmentRoot) {
                    PackageFragmentRoot root = (PackageFragmentRoot) value;
                    requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
                } else {
                    IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value;
                    for (int j = 0, length2 = roots.length; j < length2; j++) {
                        if (requestor.isCanceled())
                            return;
                        PackageFragmentRoot root = (PackageFragmentRoot) roots[j];
                        requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
                    }
                }
            }
        }
    } else {
        String[] splittedName = Util.splitOn('.', name, 0, name.length());
        int pkgIndex = this.packageFragments.getIndex(splittedName);
        if (pkgIndex != -1) {
            Object value = this.packageFragments.valueTable[pkgIndex];
            // reuse existing String[]
            String[] pkgName = (String[]) this.packageFragments.keyTable[pkgIndex];
            if (value instanceof PackageFragmentRoot) {
                requestor.acceptPackageFragment(((PackageFragmentRoot) value).getPackageFragment(pkgName));
            } else {
                IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value;
                if (roots != null) {
                    for (int i = 0, length = roots.length; i < length; i++) {
                        if (requestor.isCanceled())
                            return;
                        PackageFragmentRoot root = (PackageFragmentRoot) roots[i];
                        requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
                    }
                }
            }
        }
    }
}