Example usage for org.eclipse.jdt.core.compiler CharOperation lastSegment

List of usage examples for org.eclipse.jdt.core.compiler CharOperation lastSegment

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.compiler CharOperation lastSegment.

Prototype

final static public char[] lastSegment(char[] array, char separator) 

Source Link

Document

Answers the last portion of a name given a separator.

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.search.indexing.AbstractIndexer.java

License:Open Source License

public void addAnnotationTypeReference(char[] typeName) {
    addIndexEntry(ANNOTATION_REF, CharOperation.lastSegment(typeName, '.'));
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.indexing.AbstractIndexer.java

License:Open Source License

public void addConstructorReference(char[] typeName, int argCount) {
    char[] simpleTypeName = CharOperation.lastSegment(typeName, '.');
    addTypeReference(simpleTypeName);//w  w w  .  j a  v a 2 s  . c  om
    addIndexEntry(CONSTRUCTOR_REF, ConstructorPattern.createIndexKey(simpleTypeName, argCount));
    char[] innermostTypeName = CharOperation.lastSegment(simpleTypeName, '$');
    if (innermostTypeName != simpleTypeName)
        addIndexEntry(CONSTRUCTOR_REF, ConstructorPattern.createIndexKey(innermostTypeName, argCount));
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.indexing.AbstractIndexer.java

License:Open Source License

public void addDefaultConstructorDeclaration(char[] typeName, char[] packageName, int typeModifiers,
        int extraFlags) {
    addIndexEntry(CONSTRUCTOR_DECL, ConstructorPattern.createDefaultDeclarationIndexKey(
            CharOperation.lastSegment(typeName, '.'), packageName, typeModifiers, extraFlags));
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.indexing.AbstractIndexer.java

License:Open Source License

public void addTypeReference(char[] typeName) {
    addNameReference(CharOperation.lastSegment(typeName, '.'));
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.PackageReferenceLocator.java

License:Open Source License

public static boolean isDeclaringPackageFragment(IPackageFragment packageFragment,
        ReferenceBinding typeBinding) {/*w ww .  java2s  .co  m*/
    char[] fileName = typeBinding.getFileName();
    if (fileName != null) {
        // retrieve the actual file name from the full path (sources are generally only containing it already)
        fileName = CharOperation.replaceOnCopy(fileName, '/', '\\'); // ensure to not do any side effect on file name (see https://bugs.eclipse
        // .org/bugs/show_bug.cgi?id=136016)
        fileName = CharOperation.lastSegment(fileName, '\\');

        try {
            switch (packageFragment.getKind()) {
            case IPackageFragmentRoot.K_SOURCE:
                if (!org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(fileName)
                        || !packageFragment.getCompilationUnit(new String(fileName)).exists()) {
                    return false; // unit doesn't live in selected package
                }
                break;
            case IPackageFragmentRoot.K_BINARY:
                //               if (Util.isJavaFileName(fileName)) { // binary with attached source
                //                  int length = fileName.length;
                //                  System.arraycopy(fileName, 0, fileName = new char[length], 0, length - 4); // copy all but extension
                //                  System.arraycopy(SuffixConstants.SUFFIX_class, 0, fileName, length - 4, 4);
                //               }
                if (!Util.isClassFileName(fileName)
                        || !packageFragment.getClassFile(new String(fileName)).exists()) {
                    return false; // classfile doesn't live in selected package
                }
                break;
            }
        } catch (JavaModelException e) {
            // unable to determine kind; tolerate this match
        }
    }
    return true; // by default, do not eliminate
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.SuperTypeReferencePattern.java

License:Open Source License

public static char[] createIndexKey(int modifiers, char[] packageName, char[] typeName,
        char[][] enclosingTypeNames, char[][] typeParameterSignatures, char classOrInterface,
        char[] superTypeName, char superClassOrInterface) {

    if (superTypeName == null)
        superTypeName = OBJECT;// ww  w. j  a  v a 2s  .  c  om
    char[] superSimpleName = CharOperation.lastSegment(superTypeName, '.');
    char[] superQualification = null;
    if (superSimpleName != superTypeName) {
        int length = superTypeName.length - superSimpleName.length - 1;
        superQualification = new char[length];
        System.arraycopy(superTypeName, 0, superQualification, 0, length);
    }

    // if the supertype name contains a $, then split it into: source name and append the $ prefix to the qualification
    //   e.g. p.A$B ---> p.A$ + B
    char[] superTypeSourceName = CharOperation.lastSegment(superSimpleName, '$');
    if (superTypeSourceName != superSimpleName) {
        int start = superQualification == null ? 0 : superQualification.length + 1;
        int prefixLength = superSimpleName.length - superTypeSourceName.length;
        char[] mangledQualification = new char[start + prefixLength];
        if (superQualification != null) {
            System.arraycopy(superQualification, 0, mangledQualification, 0, start - 1);
            mangledQualification[start - 1] = '.';
        }
        System.arraycopy(superSimpleName, 0, mangledQualification, start, prefixLength);
        superQualification = mangledQualification;
        superSimpleName = superTypeSourceName;
    }

    char[] simpleName = CharOperation.lastSegment(typeName, '.');
    char[] enclosingTypeName = CharOperation.concatWith(enclosingTypeNames, '$');
    if (superQualification != null && CharOperation.equals(superQualification, packageName))
        packageName = ONE_ZERO; // save some space

    char[] typeParameters = CharOperation.NO_CHAR;
    int typeParametersLength = 0;
    if (typeParameterSignatures != null) {
        StringBuffer buffer = new StringBuffer();
        for (int i = 0, length = typeParameterSignatures.length; i < length; i++) {
            char[] typeParameter = typeParameterSignatures[i];
            buffer.append(typeParameter);
            typeParametersLength += typeParameter.length;
            if (i != length - 1) {
                buffer.append(',');
                typeParametersLength++;
            }
        }
        typeParameters = new char[typeParametersLength];
        buffer.getChars(0, typeParametersLength, typeParameters, 0);
    }

    // superSimpleName / superQualification / simpleName / enclosingTypeName / typeParameters / packageName / superClassOrInterface classOrInterface modifiers
    int superLength = superSimpleName == null ? 0 : superSimpleName.length;
    int superQLength = superQualification == null ? 0 : superQualification.length;
    int simpleLength = simpleName == null ? 0 : simpleName.length;
    int enclosingLength = enclosingTypeName == null ? 0 : enclosingTypeName.length;
    int packageLength = packageName == null ? 0 : packageName.length;
    char[] result = new char[superLength + superQLength + simpleLength + enclosingLength + typeParametersLength
            + packageLength + 9];
    int pos = 0;
    if (superLength > 0) {
        System.arraycopy(superSimpleName, 0, result, pos, superLength);
        pos += superLength;
    }
    result[pos++] = SEPARATOR;
    if (superQLength > 0) {
        System.arraycopy(superQualification, 0, result, pos, superQLength);
        pos += superQLength;
    }
    result[pos++] = SEPARATOR;
    if (simpleLength > 0) {
        System.arraycopy(simpleName, 0, result, pos, simpleLength);
        pos += simpleLength;
    }
    result[pos++] = SEPARATOR;
    if (enclosingLength > 0) {
        System.arraycopy(enclosingTypeName, 0, result, pos, enclosingLength);
        pos += enclosingLength;
    }
    result[pos++] = SEPARATOR;
    if (typeParametersLength > 0) {
        System.arraycopy(typeParameters, 0, result, pos, typeParametersLength);
        pos += typeParametersLength;
    }
    result[pos++] = SEPARATOR;
    if (packageLength > 0) {
        System.arraycopy(packageName, 0, result, pos, packageLength);
        pos += packageLength;
    }
    result[pos++] = SEPARATOR;
    result[pos++] = superClassOrInterface;
    result[pos++] = classOrInterface;
    result[pos] = (char) modifiers;
    return result;
}

From source file:net.harawata.mybatipse.mybatis.ProposalComputorHelper.java

License:Open Source License

private static void proposeNamespaces(List<ICompletionProposal> results, IJavaProject project,
        String partialNamespace, String currentNamespace, char[] matchChrs, int start, int length) {
    for (String namespace : MapperNamespaceCache.getInstance().getCacheMap(project, null).keySet()) {
        if (!namespace.equals(currentNamespace) && namespace.startsWith(partialNamespace)
                && !namespace.equals(partialNamespace)) {
            char[] simpleName = CharOperation.lastSegment(namespace.toCharArray(), '.');
            if (matchChrs.length == 0 || CharOperation.camelCaseMatch(matchChrs, simpleName)) {
                StringBuilder replacementStr = new StringBuilder().append(namespace).append('.');
                int cursorPos = replacementStr.length();
                String displayString = new StringBuilder().append(simpleName).append(" - ").append(namespace)
                        .toString();/*from  ww w.  j  ava  2s . c  om*/
                results.add(new JavaCompletionProposal(replacementStr.toString(), start, length, cursorPos,
                        Activator.getIcon("/icons/mybatis-ns.png"), displayString, null, null, 100));
            }
        }
    }
}

From source file:net.harawata.mybatipse.mybatis.ProposalComputorHelper.java

License:Open Source License

public static void searchJavaType(String matchString, IJavaSearchScope scope, TypeNameRequestor requestor)
        throws JavaModelException {
    char[] searchPkg = null;
    char[] searchType = null;
    if (matchString != null && matchString.length() > 0) {
        char[] match = matchString.toCharArray();
        int lastDotPos = matchString.lastIndexOf('.');
        if (lastDotPos == -1) {
            searchType = match;//  www . j av a 2  s  .  c om
        } else {
            if (lastDotPos + 1 < match.length) {
                searchType = CharOperation.lastSegment(match, '.');
            }
            searchPkg = Arrays.copyOfRange(match, 0, lastDotPos);
        }
    }
    SearchEngine searchEngine = new SearchEngine();
    searchEngine.searchAllTypeNames(searchPkg, SearchPattern.R_PREFIX_MATCH, searchType,
            SearchPattern.R_CAMELCASE_MATCH, IJavaSearchConstants.CLASS, scope, requestor,
            IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null);
}

From source file:net.harawata.mybatipse.mybatis.XmlCompletionProposalComputer.java

License:Open Source License

private void proposeNamespace(ContentAssistRequest contentAssistRequest, IJavaProject project, IDOMNode node,
        String partialNamespace, char[] matchChrs, int start, int length, String replacementSuffix)
        throws XPathExpressionException {
    String currentNamespace = XpathUtil.xpathString(node.getOwnerDocument(), "//mapper/@namespace");

    final List<ICompletionProposal> results = new ArrayList<ICompletionProposal>();
    for (String namespace : MapperNamespaceCache.getInstance().getCacheMap(project, null).keySet()) {
        if (!namespace.equals(currentNamespace) && namespace.startsWith(partialNamespace)
                && !namespace.equals(partialNamespace)) {
            char[] simpleName = CharOperation.lastSegment(namespace.toCharArray(), '.');
            if (matchChrs.length == 0 || CharOperation.camelCaseMatch(matchChrs, simpleName)) {
                StringBuilder replacementStr = new StringBuilder().append(namespace).append('.');
                int cursorPos = replacementStr.length();
                if (replacementSuffix != null)
                    replacementStr.append(replacementSuffix);
                String displayString = new StringBuilder().append(simpleName).append(" - ").append(namespace)
                        .toString();/*from  ww  w  .  j  av a2 s  .  c om*/
                results.add(new CompletionProposal(replacementStr.toString(), start, length, cursorPos,
                        Activator.getIcon("/icons/mybatis-ns.png"), displayString, null, null));
            }
        }
    }
    addProposals(contentAssistRequest, results);
}

From source file:net.harawata.mybatipse.mybatis.XmlCompletionProposalComputer.java

License:Open Source License

private void searchJavaType(String matchString, IJavaSearchScope scope, TypeNameRequestor requestor)
        throws JavaModelException {
    char[] searchPkg = null;
    char[] searchType = null;
    if (matchString != null && matchString.length() > 0) {
        char[] match = matchString.toCharArray();
        int lastDotPos = matchString.lastIndexOf('.');
        if (lastDotPos == -1) {
            searchType = match;//w w  w. jav  a2 s  .com
        } else {
            if (lastDotPos + 1 < match.length) {
                searchType = CharOperation.lastSegment(match, '.');
            }
            searchPkg = Arrays.copyOfRange(match, 0, lastDotPos);
        }
    }
    SearchEngine searchEngine = new SearchEngine();
    searchEngine.searchAllTypeNames(searchPkg, SearchPattern.R_PREFIX_MATCH, searchType,
            SearchPattern.R_CAMELCASE_MATCH, IJavaSearchConstants.CLASS, scope, requestor,
            IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, null);
}