Example usage for org.eclipse.jdt.core.dom Javadoc setProperty

List of usage examples for org.eclipse.jdt.core.dom Javadoc setProperty

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom Javadoc setProperty.

Prototype

public final void setProperty(String propertyName, Object data) 

Source Link

Document

Sets the named property of this node to the given value, or to null to clear it.

Usage

From source file:com.crispico.flower.mp.metamodel.codesyncjava.algorithm.forward.ForwardJavaDeclaration.java

License:Open Source License

/**
 * @throws CodeSyncException //from  ww  w. j a v a2s .c  o  m
 * @flowerModelElementId _zbgpOpiOEd6aNMdNFvR5WQ
 */
@SuppressWarnings("unchecked")
@Override
protected void setASTFeatureValue(EStructuralFeature feature, TDeclaration astElement, Object value)
        throws CodeSyncException {
    if (astElement == null)
        throw new IllegalArgumentException("astElement null ");
    AST ast = astElement.getAST();

    switch (feature.getFeatureID()) {
    case UMLPackage.NAMED_ELEMENT__VISIBILITY:
        JavaSyncUtils.updateVisibilityFromModelToJavaClass(astElement, (VisibilityKind) value);
        break;
    case UMLPackage.ELEMENT__OWNED_COMMENT:
        List<Comment> listComments = (List<Comment>) value;
        if (listComments.size() > 1)
            throw new IllegalArgumentException("setting more than one documentation ");
        else if (listComments.size() == 1) {
            String documentation = listComments.get(0).getBody();
            Javadoc javadoc = ast.newJavadoc();
            if (documentation != null) {
                javadoc.setProperty("comment", "\r\n" + documentation + "\r\n");
                documentation = documentation.replace("\n", "\n * ");
            }
            TagElement tag = ast.newTagElement();
            TextElement te = ast.newTextElement();
            tag.fragments().add(te);
            te.setText(documentation);
            javadoc.tags().add(tag);
            astElement.setJavadoc(javadoc);
        } else if (listComments.isEmpty())
            astElement.setJavadoc(null);
        break;
    case UMLPackage.FEATURE__IS_STATIC:
        JavaSyncUtils.updateModifierFromModelToJavaClass(astElement, (Boolean) value,
                JavaSyncUtils.MODIFIER_STATIC);
        break;
    case CodeSyncPackage.FINAL_FEATURE__IS_FINAL:
        JavaSyncUtils.updateModifierFromModelToJavaClass(astElement, (Boolean) value,
                JavaSyncUtils.MODIFIER_FINAL);
        break;
    default:
        throw new IllegalArgumentException("Cannot get value for feature in ForwardJavaDeclaration:" + feature);
    }
}

From source file:com.crispico.flower.mp.metamodel.codesyncjava.algorithm.forward.ForwardJavaType.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from w  w  w. j a va2  s.c  om*/
protected void setASTFeatureValue(EStructuralFeature feature, CompilationUnit astElement, Object value)
        throws CodeSyncException {
    if (astElement == null)
        throw new IllegalArgumentException("astElement null ");
    AST ast = astElement.getAST();
    TypeDeclaration masterClass = JavaSyncUtils.getMasterClass(astElement);

    switch (feature.getFeatureID()) {
    case UMLPackage.NAMED_ELEMENT__NAME:
        if (value == null)
            throw new IllegalArgumentException("setting name to null value ");

        String oldName = masterClass.getName().toString();
        if (!oldName.equals(value) && !oldName.equals("MISSING")) { // rename case
            try {
                SyncUtils.renameFile(oldName.toString(), (String) value, ".java", parentFolder);
            } catch (CoreException e) {
                throw new RuntimeException("Error during folder refresh: " + parentFolder, e);
            } catch (Exception e) {
                throw new RuntimeException("Error during file rename ", e);
            }
        }
        try {
            masterClass.setName(ast.newSimpleName((String) value));
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    case UMLPackage.NAMED_ELEMENT__VISIBILITY:
        JavaSyncUtils.updateVisibilityFromModelToJavaClass(masterClass, (VisibilityKind) value);
        break;
    case UMLPackage.CLASSIFIER__IS_ABSTRACT:
        JavaSyncUtils.updateModifierFromModelToJavaClass(masterClass, (Boolean) value,
                JavaSyncUtils.MODIFIER_ABSTRACT);
        break;
    case UMLPackage.ELEMENT__OWNED_COMMENT:
        List<Comment> listComments = (List<Comment>) value;
        if (listComments.size() > 1)
            throw new IllegalArgumentException("setting more than one documentation ");
        else if (listComments.size() == 1) {
            String documentation = listComments.get(0).getBody();
            Javadoc javadoc = ast.newJavadoc();
            if (documentation != null) {
                javadoc.setProperty("comment", "\r\n" + documentation + "\r\n");
                documentation = documentation.replace("\n", "\n * ");
            }
            TagElement tag = ast.newTagElement();
            TextElement te = ast.newTextElement();
            tag.fragments().add(te);
            te.setText(documentation);
            javadoc.tags().add(tag);
            JavaSyncUtils.getMasterClass(astElement).setJavadoc(javadoc);
        } else if (listComments.isEmpty())
            JavaSyncUtils.getMasterClass(astElement).setJavadoc(null);
        break;
    default:
        throw new IllegalArgumentException("Cannot get value for feature in ForwardJavaType:" + feature);
    }
}

From source file:com.crispico.flower.mp.metamodel.codesyncjava.algorithm.JavaSyncUtils.java

License:Open Source License

/**
 * Loads the java file and sets the retrieved comments for every method/attribute found inside it
 * @throws JavaModelException //from   ww w  . java2s . c  o  m
 * @flowerModelElementId _zVs8LZiOEd6aNMdNFvR5WQ
 */
@SuppressWarnings("unchecked")
public static CompilationUnit loadJavaFile(IFile file, ASTParser parser) throws Exception {
    CompilationUnit result = null;
    char[] fileContent;
    try {
        fileContent = getFileContent(file).toCharArray();
    } catch (ResourceException e) {
        file.refreshLocal(IResource.DEPTH_INFINITE, null);
        fileContent = getFileContent(file).toCharArray();
    }

    HashMap defaultOptions = new HashMap(JavaCore.getOptions());
    String compilerSourceLevel = (String) defaultOptions.get(JavaCore.COMPILER_SOURCE);

    // Source level 1.5 is necessary to enable annotations
    if (Double.valueOf(compilerSourceLevel) < 1.5) {
        defaultOptions.put(JavaCore.COMPILER_SOURCE, "1.5");
        parser.setCompilerOptions(defaultOptions);
    }

    parser.setSource(fileContent);
    result = (CompilationUnit) parser.createAST(null);

    for (Object o : result.getCommentList()) {
        if (o instanceof Javadoc) {
            Javadoc doc = (Javadoc) o;
            String docComment = new String(fileContent, doc.getStartPosition(), doc.getLength());

            //use Pattern and Matcher instead of string.replaceAll(...) to compile the pattern only once
            Matcher matcher = COMMENT_LINE_PATTERN.matcher(docComment);
            docComment = matcher.replaceAll("\r\n");
            matcher = COMMENT_MARKERS_PATTERN.matcher(docComment);
            docComment = matcher.replaceAll("");

            doc.setProperty("comment", docComment);
        }
    }
    return result;
}