public void formatFieldComment(FieldDetails fieldDetails) { // If a comment was defined, we need to format it if (fieldDetails.getComment() != null) { // First replace all "" with the proper escape sequence \" String unescapedMultiLineComment = fieldDetails.getComment().replaceAll("\"\"", "\\\\\""); // Then unescape all characters unescapedMultiLineComment = StringEscapeUtils.unescapeJava(unescapedMultiLineComment); CommentFormatter commentFormatter = new CommentFormatter(); String javadocComment = commentFormatter.formatStringAsJavadoc(unescapedMultiLineComment); fieldDetails.setComment(commentFormatter.format(javadocComment, 1)); } }
public void insertField( final FieldDetails fieldDetails, final boolean permitReservedWords, final boolean transientModifier) { String module = null; if (!permitReservedWords) { ReservedWords.verifyReservedWordsNotPresent(fieldDetails.getFieldName()); if (fieldDetails.getColumn() != null) { ReservedWords.verifyReservedWordsNotPresent(fieldDetails.getColumn()); } } final List<AnnotationMetadataBuilder> annotations = fieldDetails.getInitedAnnotations(); fieldDetails.decorateAnnotationsList(annotations); fieldDetails.setAnnotations(annotations); if (fieldDetails.getFieldType() != null) { module = fieldDetails.getFieldType().getModule(); } fieldDetails.setModifiers(Modifier.PRIVATE); String initializer = null; if (fieldDetails instanceof CollectionField) { final CollectionField collectionField = (CollectionField) fieldDetails; module = collectionField.getGenericParameterTypeName().getModule(); initializer = "new " + collectionField.getInitializer() + "()"; } else if (fieldDetails instanceof DateField && fieldDetails.getFieldName().getSymbolName().equals("created")) { initializer = "new Date()"; } // Format the passed-in comment (if given) formatFieldComment(fieldDetails); final FieldMetadataBuilder fieldBuilder = new FieldMetadataBuilder(fieldDetails); fieldBuilder.setFieldInitializer(initializer); typeManagementService.addField(fieldBuilder.build()); if (module != null) { projectOperations.addModuleDependency(module); } }
@Override public void decorateAnnotationsList(final List<AnnotationMetadataBuilder> annotations) { super.decorateAnnotationsList(annotations); if (assertTrue) { annotations.add(new AnnotationMetadataBuilder(ASSERT_TRUE)); } if (assertFalse) { annotations.add(new AnnotationMetadataBuilder(ASSERT_FALSE)); } }
@Override public void createOtherField( ClassOrInterfaceTypeDetails cid, JavaType fieldType, JavaSymbolName fieldName, boolean notNull, boolean nullRequired, String comment, String column, boolean permitReservedWords, boolean transientModifier, List<AnnotationMetadataBuilder> extraAnnotations) { final String physicalTypeIdentifier = cid.getDeclaredByMetadataId(); final FieldDetails fieldDetails = new FieldDetails(physicalTypeIdentifier, fieldType, fieldName); fieldDetails.setNotNull(notNull); fieldDetails.setNullRequired(nullRequired); if (comment != null) { fieldDetails.setComment(comment); } if (column != null) { fieldDetails.setColumn(column); } if (extraAnnotations != null && !extraAnnotations.isEmpty()) { fieldDetails.addAnnotations(extraAnnotations); } insertField(fieldDetails, permitReservedWords, false); }