List of usage examples for org.eclipse.jdt.core.dom Javadoc setProperty
public final void setProperty(String propertyName, Object data)
null to clear it. 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; }