Example usage for org.eclipse.jdt.core IField isEnumConstant

List of usage examples for org.eclipse.jdt.core IField isEnumConstant

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IField isEnumConstant.

Prototype

boolean isEnumConstant() throws JavaModelException;

Source Link

Document

Returns whether this field represents an enum constant.

Usage

From source file:com.codenvy.ide.ext.java.server.SourcesFromBytecodeGenerator.java

License:Open Source License

private void generateType(IType type, StringBuilder builder, String indent) throws JavaModelException {
    int flags = 0;

    appendAnnotationLabels(type.getAnnotations(), flags, builder, indent.substring(TAB.length()));
    builder.append(indent.substring(TAB.length()));
    builder.append(getModifiers(type.getFlags(), type.getFlags())).append(' ').append(getJavaType(type))
            .append(' ').append(type.getElementName());

    if (type.isResolved()) {
        BindingKey key = new BindingKey(type.getKey());
        if (key.isParameterizedType()) {
            String[] typeArguments = key.getTypeArguments();
            appendTypeArgumentSignaturesLabel(type, typeArguments, flags, builder);
        } else {/*w w w.  j  a  v  a 2s  . co m*/
            String[] typeParameters = Signature.getTypeParameters(key.toSignature());
            appendTypeParameterSignaturesLabel(typeParameters, builder);
        }
    } else {
        appendTypeParametersLabels(type.getTypeParameters(), flags, builder);
    }

    if (!"java.lang.Object".equals(type.getSuperclassName())
            && !"java.lang.Enum".equals(type.getSuperclassName())) {

        builder.append(" extends ");
        if (type.getSuperclassTypeSignature() != null) {
            //                appendTypeSignatureLabel(type, type.getSuperclassTypeSignature(), flags, builder);
            builder.append(Signature.toString(type.getSuperclassTypeSignature()));
        } else {
            builder.append(type.getSuperclassName());
        }
    }
    if (!type.isAnnotation()) {
        if (type.getSuperInterfaceNames().length != 0) {
            builder.append(" implements ");
            String[] signatures = type.getSuperInterfaceTypeSignatures();
            if (signatures.length == 0) {
                signatures = type.getSuperInterfaceNames();
            }
            for (String interfaceFqn : signatures) {
                builder.append(Signature.toString(interfaceFqn)).append(", ");
            }
            builder.delete(builder.length() - 2, builder.length());
        }
    }
    builder.append(" {\n");

    List<IField> fields = new ArrayList<>();
    if (type.isEnum()) {
        builder.append(indent);
        for (IField field : type.getFields()) {
            if (field.isEnumConstant()) {
                builder.append(field.getElementName()).append(", ");
            } else {
                fields.add(field);
            }
        }
        if (", ".equals(builder.substring(builder.length() - 2))) {
            builder.delete(builder.length() - 2, builder.length());
        }
        builder.append(";\n");

    } else {
        fields.addAll(Arrays.asList(type.getFields()));
    }

    for (IField field : fields) {
        if (Flags.isSynthetic(field.getFlags())) {
            continue;
        }
        appendAnnotationLabels(field.getAnnotations(), flags, builder, indent);
        builder.append(indent).append(getModifiers(field.getFlags(), type.getFlags()));
        if (builder.charAt(builder.length() - 1) != ' ') {
            builder.append(' ');
        }

        builder.append(Signature.toCharArray(field.getTypeSignature().toCharArray())).append(' ')
                .append(field.getElementName());
        if (field.getConstant() != null) {
            builder.append(" = ");
            if (field.getConstant() instanceof String) {
                builder.append('"').append(field.getConstant()).append('"');
            } else {
                builder.append(field.getConstant());
            }
        }
        builder.append(";\n");
    }
    builder.append('\n');

    for (IMethod method : type.getMethods()) {
        if (method.getElementName().equals("<clinit>") || Flags.isSynthetic(method.getFlags())) {
            continue;
        }
        appendAnnotationLabels(method.getAnnotations(), flags, builder, indent);
        BindingKey resolvedKey = method.isResolved() ? new BindingKey(method.getKey()) : null;
        String resolvedSig = (resolvedKey != null) ? resolvedKey.toSignature() : null;
        builder.append(indent).append(getModifiers(method.getFlags(), type.getFlags()));

        if (builder.charAt(builder.length() - 1) != ' ') {
            builder.append(' ');
        }
        if (resolvedKey != null) {
            if (resolvedKey.isParameterizedMethod()) {
                String[] typeArgRefs = resolvedKey.getTypeArguments();
                if (typeArgRefs.length > 0) {
                    appendTypeArgumentSignaturesLabel(method, typeArgRefs, flags, builder);
                    builder.append(' ');
                }
            } else {
                String[] typeParameterSigs = Signature.getTypeParameters(resolvedSig);
                if (typeParameterSigs.length > 0) {
                    appendTypeParameterSignaturesLabel(typeParameterSigs, builder);
                    builder.append(' ');
                }
            }
        } else if (method.exists()) {
            ITypeParameter[] typeParameters = method.getTypeParameters();
            if (typeParameters.length > 0) {
                appendTypeParametersLabels(typeParameters, flags, builder);
                builder.append(' ');
            }
        }

        if (!method.isConstructor()) {

            String returnTypeSig = resolvedSig != null ? Signature.getReturnType(resolvedSig)
                    : method.getReturnType();
            appendTypeSignatureLabel(method, returnTypeSig, 0, builder);
            builder.append(' ');
            //                builder.append(Signature.toCharArray(method.getReturnType().toCharArray())).append(' ');
        }
        builder.append(method.getElementName());
        builder.append('(');
        for (ILocalVariable variable : method.getParameters()) {
            builder.append(Signature.toString(variable.getTypeSignature()));
            builder.append(' ').append(variable.getElementName()).append(", ");

        }

        if (builder.charAt(builder.length() - 1) == ' ') {
            builder.delete(builder.length() - 2, builder.length());
        }
        builder.append(')');
        String[] exceptionTypes = method.getExceptionTypes();
        if (exceptionTypes != null && exceptionTypes.length != 0) {
            builder.append(' ').append("throws ");
            for (String exceptionType : exceptionTypes) {
                builder.append(Signature.toCharArray(exceptionType.toCharArray())).append(", ");
            }
            builder.delete(builder.length() - 2, builder.length());
        }
        if (type.isInterface() || type.isAnnotation()) {
            builder.append(";\n\n");
        } else {
            builder.append(" {").append(METHOD_BODY).append("}\n\n");
        }
    }
    for (IType iType : type.getTypes()) {
        generateType(iType, builder, indent + indent);
    }
    builder.append(indent.substring(TAB.length()));
    builder.append("}\n");
}

From source file:com.ecfeed.ui.common.EclipseImplementationStatusResolver.java

License:Open Source License

@Override
protected boolean enumValueImplemented(String qualifiedName, String value) {
    IType type = JavaModelAnalyser.getIType(qualifiedName);
    try {//from w w  w.j  a  va  2  s .c o  m
        if (type == null || type.isEnum() == false) {
            return false;
        }
        for (IField field : type.getFields()) {
            if (field.isEnumConstant() && field.getElementName().equals(value)) {
                return true;
            }
        }
    } catch (JavaModelException e) {
        SystemLogger.logCatch(e.getMessage());
    }
    return false;
}

From source file:com.google.inject.tools.ideplugin.eclipse.TypeUtil.java

License:Open Source License

/**
 * @param type/*from   w w  w .  j av  a2  s.  c o  m*/
 * @param fieldName
 * @return true if fieldName is a member of type.  Note that if type is java.lang.Enum
 * then this will always return true since we cannot know what fields the instance has (it could be any enum)
 */
public static boolean isEnumMember(final IType type, final String fieldName) {
    try {
        if (type == null || !isEnumType(type)) {
            throw new IllegalArgumentException("type must be non-null and isEnum()==true"); //$NON-NLS-1$
        }

        if (fieldName == null) {
            throw new IllegalArgumentException("fieldName must be non-null"); //$NON-NLS-1$
        }

        // if type is the java.lang.Enum, always true
        if (TypeConstants.TYPE_ENUM_BASE
                .equals(Signature.createTypeSignature(type.getFullyQualifiedName(), true))) {
            return true;
        }

        final IField field = type.getField(fieldName);

        if (field.exists() && field.isEnumConstant()) {
            return true;
        }
    } catch (JavaModelException jme) {
        // fall through and return false
    }

    return false;
}

From source file:com.testify.ecfeed.ui.common.EclipseImplementationStatusResolver.java

License:Open Source License

@Override
protected boolean enumValueImplemented(String qualifiedName, String value) {
    IType type = JavaModelAnalyser.getIType(qualifiedName);
    try {//from w ww . ja  v  a2  s  . co m
        if (type == null || type.isEnum() == false) {
            return false;
        }
        for (IField field : type.getFields()) {
            if (field.isEnumConstant() && field.getElementName().equals(value)) {
                return true;
            }
        }
    } catch (JavaModelException e) {
    }
    return false;
}

From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java

License:Open Source License

/********************************************************************************/

void rename(String proj, String bid, String file, int start, int end, String name, String handle,
        String newname, boolean keeporig, boolean getters, boolean setters, boolean dohier, boolean qual,
        boolean refs, boolean dosimilar, boolean textocc, boolean doedit, String filespat, IvyXmlWriter xw)
        throws BedrockException {
    FileData fd = file_map.get(file);//from  w w w .  j av a2  s .com
    ICompilationUnit icu;

    if (doedit) {
        // icu = fd.getDefaultUnit();
        icu = fd.getEditableUnit(bid);
    } else
        icu = fd.getEditableUnit(bid);

    IJavaElement[] elts;
    try {
        elts = icu.codeSelect(start, end - start);
    } catch (JavaModelException e) {
        throw new BedrockException("Bad location: " + e, e);
    }

    IJavaElement relt = null;
    for (IJavaElement ije : elts) {
        if (handle != null && !handle.equals(ije.getHandleIdentifier()))
            continue;
        if (name != null && !name.equals(ije.getElementName()))
            continue;
        relt = ije;
        break;
    }
    if (relt == null)
        throw new BedrockException("Item to rename not found");

    String id = null;
    switch (relt.getElementType()) {
    case IJavaElement.COMPILATION_UNIT:
        id = IJavaRefactorings.RENAME_COMPILATION_UNIT;
        break;
    case IJavaElement.FIELD:
        IField ifld = (IField) relt;
        try {
            if (ifld.isEnumConstant())
                id = IJavaRefactorings.RENAME_ENUM_CONSTANT;
            else
                id = IJavaRefactorings.RENAME_FIELD;
        } catch (JavaModelException e) {
        }
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
    case IJavaElement.PACKAGE_FRAGMENT:
        id = IJavaRefactorings.RENAME_PACKAGE;
        break;
    case IJavaElement.LOCAL_VARIABLE:
        id = IJavaRefactorings.RENAME_LOCAL_VARIABLE;
        break;
    case IJavaElement.TYPE:
        id = IJavaRefactorings.RENAME_TYPE;
        break;
    case IJavaElement.TYPE_PARAMETER:
        id = IJavaRefactorings.RENAME_TYPE_PARAMETER;
        break;
    case IJavaElement.METHOD:
        id = IJavaRefactorings.RENAME_METHOD;
        break;
    case IJavaElement.ANNOTATION:
    case IJavaElement.CLASS_FILE:
    case IJavaElement.IMPORT_CONTAINER:
    case IJavaElement.IMPORT_DECLARATION:
    case IJavaElement.INITIALIZER:
    case IJavaElement.JAVA_MODEL:
    case IJavaElement.JAVA_PROJECT:
    case IJavaElement.PACKAGE_DECLARATION:
        break;
    }
    if (id == null)
        throw new BedrockException("Invalid element type to rename");

    RenameJavaElementDescriptor renamer;

    RefactoringContribution rfc = RefactoringCore.getRefactoringContribution(id);
    if (rfc == null) {
        xw.begin("FAILURE");
        xw.field("TYPE", "SETUP");
        xw.textElement("ID", id);
        xw.end("FAILURE");
        renamer = new RenameJavaElementDescriptor(id);
    } else {
        renamer = (RenameJavaElementDescriptor) rfc.createDescriptor();
    }

    renamer.setJavaElement(relt);
    renamer.setKeepOriginal(keeporig);
    renamer.setNewName(newname);
    if (proj != null)
        renamer.setProject(proj);
    renamer.setRenameGetters(getters);
    renamer.setRenameSetters(setters);
    renamer.setUpdateHierarchy(dohier);
    renamer.setUpdateQualifiedNames(qual);
    renamer.setUpdateReferences(refs);
    renamer.setUpdateSimilarDeclarations(dosimilar);
    renamer.setUpdateTextualOccurrences(textocc);
    if (filespat != null)
        renamer.setFileNamePatterns(filespat);

    RefactoringStatus sts = renamer.validateDescriptor();
    if (!sts.isOK()) {
        xw.begin("FAILURE");
        xw.field("TYPE", "VALIDATE");
        BedrockUtil.outputStatus(sts, xw);
        xw.end("FAILURE");
        return;
    }

    try {
        Refactoring refactor = renamer.createRefactoring(sts);
        if (refactor == null) {
            xw.begin("FAILURE");
            xw.field("TYPE", "CREATE");
            xw.textElement("RENAMER", renamer.toString());
            xw.textElement("REFACTOR", renamer.toString());
            xw.textElement("STATUS", sts.toString());
            xw.end("FAILURE");
            return;
        }

        refactor.setValidationContext(null);

        // this seems to reset files from disk (mutliple times)
        sts = refactor.checkAllConditions(new NullProgressMonitor());
        if (!sts.isOK()) {
            xw.begin("FAILURE");
            xw.field("TYPE", "CHECK");
            BedrockUtil.outputStatus(sts, xw);
            xw.end("FAILURE");
            if (sts.hasFatalError())
                return;
        }
        BedrockPlugin.logD("RENAME: Refactoring checked");

        Change chng = refactor.createChange(new NullProgressMonitor());
        BedrockPlugin.logD("RENAME: Refactoring change created");

        if (doedit && chng != null) {
            chng.perform(new NullProgressMonitor());
        } else if (chng != null) {
            xw.begin("EDITS");
            BedrockUtil.outputChange(chng, xw);
            xw.end("EDITS");
        }
    } catch (CoreException e) {
        throw new BedrockException("Problem creating refactoring: " + e, e);
    }

    BedrockPlugin.logD("RENAME RESULT = " + xw.toString());
}

From source file:edu.brown.cs.bubbles.bedrock.BedrockUtil.java

License:Open Source License

private static void outputNameDetails(IField fld, IvyXmlWriter xw) throws JavaModelException {
    String tnm = "Field";

    if (fld.isEnumConstant())
        tnm = "EnumConstant";

    outputSymbol(fld, tnm, fld.getElementName(), fld.getKey(), xw);
}

From source file:edu.uci.ics.sourcerer.extractor.ast.ClassFileExtractor.java

License:Open Source License

private void extractIField(IField field) {
    try {/*from   www .j  a v  a  2s. c  om*/
        String fqn = fqnStack.peek() + "." + field.getElementName();
        // Write the entity
        if (field.isEnumConstant()) {
            entityWriter.writeEnumConstant(fqn, field.getFlags(), path);
        } else {
            entityWriter.writeField(fqn, field.getFlags(), path);
        }

        // Write the inside relation
        relationWriter.writeInside(fqn, fqnStack.peek(), path);

        // Write the holds relation
        relationWriter.writeHolds(fqn, typeSignatureToFqn(field.getTypeSignature()), path);
    } catch (JavaModelException e) {
        logger.log(Level.SEVERE, "Error in extracting class file", e);
    }
}

From source file:edu.uci.ics.sourcerer.tools.java.extractor.eclipse.ClassFileExtractor.java

License:Open Source License

private void extractIField(IField field) {
    try {//from  ww  w .  j a v  a2 s.com
        Location location = new Location(fqnStack.peek(), path, null, null);
        String fqn = fqnStack.peek() + "." + field.getElementName();
        // Write the entity
        if (field.isEnumConstant()) {
            entityWriter.writeEntity(Entity.ENUM_CONSTANT, fqn, field.getFlags(), null, location);
        } else {
            entityWriter.writeEntity(Entity.FIELD, fqn, field.getFlags(), null, location);
        }

        // Write the contains relation
        relationWriter.writeRelation(Relation.CONTAINS, fqnStack.peek(), fqn, location);

        // Write the holds relation
        relationWriter.writeRelation(Relation.HOLDS, fqn, typeSignatureToFqn(field.getTypeSignature()),
                location);
    } catch (JavaModelException e) {
        logger.log(Level.SEVERE, "Error in extracting class file", e);
    }
}

From source file:fr.ifpen.emptooling.reverse.JavaToEcore.java

License:Open Source License

/**
 * Process (resolve all literals) for the given {@link IType}.
 * /* w w w  . j ava 2  s .  c  o  m*/
 * @param iType the given {@link IType} (a java Enum).
 * @param eEnum the associated {@link EEnum}.
 * @throws JavaModelException
 */
protected void processLiterals(IType iType, EEnum eEnum) throws JavaModelException {
    IField[] fields = iType.getFields();
    int i = 0;
    for (IField iField : fields) {
        if (iField.isEnumConstant()) {
            EEnumLiteral literal = eFactory.createEEnumLiteral();
            literal.setName(iField.getElementName());
            literal.setValue(i++);
            eEnum.getELiterals().add(literal);

        }
    }

}

From source file:mychangedetector.copyclasses.MyRenameLinkedMode.java

License:Open Source License

/**
 * Creates a rename descriptor./*from w  w w .j  av  a  2  s.c o m*/
 * 
 * @param javaElement element to rename 
 * @param newName new name
 * @return a rename descriptor with current settings as used in the refactoring dialogs
 * @throws JavaModelException if an error occurs while accessing the element
 */
private RenameJavaElementDescriptor createRenameDescriptor(IJavaElement javaElement, String newName)
        throws JavaModelException {
    String contributionId;
    // see RefactoringExecutionStarter#createRenameSupport(..):
    int elementType = javaElement.getElementType();
    switch (elementType) {
    case IJavaElement.JAVA_PROJECT:
        contributionId = IJavaRefactorings.RENAME_JAVA_PROJECT;
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        contributionId = IJavaRefactorings.RENAME_SOURCE_FOLDER;
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        contributionId = IJavaRefactorings.RENAME_PACKAGE;
        break;
    case IJavaElement.COMPILATION_UNIT:
        contributionId = IJavaRefactorings.RENAME_COMPILATION_UNIT;
        break;
    case IJavaElement.TYPE:
        contributionId = IJavaRefactorings.RENAME_TYPE;
        break;
    case IJavaElement.METHOD:
        final IMethod method = (IMethod) javaElement;
        if (method.isConstructor())
            return createRenameDescriptor(method.getDeclaringType(), newName);
        else
            contributionId = IJavaRefactorings.RENAME_METHOD;
        break;
    case IJavaElement.FIELD:
        IField field = (IField) javaElement;
        if (field.isEnumConstant())
            contributionId = IJavaRefactorings.RENAME_ENUM_CONSTANT;
        else
            contributionId = IJavaRefactorings.RENAME_FIELD;
        break;
    case IJavaElement.TYPE_PARAMETER:
        contributionId = IJavaRefactorings.RENAME_TYPE_PARAMETER;
        break;
    case IJavaElement.LOCAL_VARIABLE:
        contributionId = IJavaRefactorings.RENAME_LOCAL_VARIABLE;
        break;
    default:
        return null;
    }

    RenameJavaElementDescriptor descriptor = (RenameJavaElementDescriptor) RefactoringCore
            .getRefactoringContribution(contributionId).createDescriptor();
    descriptor.setJavaElement(javaElement);
    descriptor.setNewName(newName);
    if (elementType != IJavaElement.PACKAGE_FRAGMENT_ROOT)
        descriptor.setUpdateReferences(true);

    IDialogSettings javaSettings = JavaPlugin.getDefault().getDialogSettings();
    IDialogSettings refactoringSettings = javaSettings.getSection(RefactoringWizardPage.REFACTORING_SETTINGS); //TODO: undocumented API
    if (refactoringSettings == null) {
        refactoringSettings = javaSettings.addNewSection(RefactoringWizardPage.REFACTORING_SETTINGS);
    }

    switch (elementType) {
    case IJavaElement.METHOD:
    case IJavaElement.FIELD:
        descriptor.setDeprecateDelegate(refactoringSettings.getBoolean(DelegateUIHelper.DELEGATE_DEPRECATION));
        descriptor.setKeepOriginal(refactoringSettings.getBoolean(DelegateUIHelper.DELEGATE_UPDATING));
    }
    switch (elementType) {
    case IJavaElement.TYPE:
        //         case IJavaElement.COMPILATION_UNIT: // TODO
        descriptor.setUpdateSimilarDeclarations(
                refactoringSettings.getBoolean(RenameRefactoringWizard.TYPE_UPDATE_SIMILAR_ELEMENTS));
        int strategy;
        try {
            strategy = refactoringSettings.getInt(RenameRefactoringWizard.TYPE_SIMILAR_MATCH_STRATEGY);
        } catch (NumberFormatException e) {
            strategy = RenamingNameSuggestor.STRATEGY_EXACT;
        }
        descriptor.setMatchStrategy(strategy);
    }
    switch (elementType) {
    case IJavaElement.PACKAGE_FRAGMENT:
        descriptor.setUpdateHierarchy(
                refactoringSettings.getBoolean(RenameRefactoringWizard.PACKAGE_RENAME_SUBPACKAGES));
    }
    switch (elementType) {
    case IJavaElement.PACKAGE_FRAGMENT:
    case IJavaElement.TYPE:
        String fileNamePatterns = refactoringSettings.get(RenameRefactoringWizard.QUALIFIED_NAMES_PATTERNS);
        if (fileNamePatterns != null && fileNamePatterns.length() != 0) {
            descriptor.setFileNamePatterns(fileNamePatterns);
            boolean updateQualifiedNames = refactoringSettings
                    .getBoolean(RenameRefactoringWizard.UPDATE_QUALIFIED_NAMES);
            descriptor.setUpdateQualifiedNames(updateQualifiedNames);
            fShowPreview |= updateQualifiedNames;
        }
    }
    switch (elementType) {
    case IJavaElement.PACKAGE_FRAGMENT:
    case IJavaElement.TYPE:
    case IJavaElement.FIELD:
        boolean updateTextualOccurrences = refactoringSettings
                .getBoolean(RenameRefactoringWizard.UPDATE_TEXTUAL_MATCHES);
        descriptor.setUpdateTextualOccurrences(updateTextualOccurrences);
        fShowPreview |= updateTextualOccurrences;
    }
    switch (elementType) {
    case IJavaElement.FIELD:
        descriptor
                .setRenameGetters(refactoringSettings.getBoolean(RenameRefactoringWizard.FIELD_RENAME_GETTER));
        descriptor
                .setRenameSetters(refactoringSettings.getBoolean(RenameRefactoringWizard.FIELD_RENAME_SETTER));
    }
    return descriptor;
}