Author: tchemit Date: 2011-10-20 02:15:43 +0200 (Thu, 20 Oct 2011) New Revision: 1108 Url: http://nuiton.org/repositories/revision/eugene/1108 Log: Evolution #1779: Improve java generation Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2011-10-14 14:21:35 UTC (rev 1107) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2011-10-20 00:15:43 UTC (rev 1108) @@ -31,7 +31,10 @@ import java.util.Arrays; import java.util.Collection; import java.util.Iterator; +import java.util.List; import java.util.Set; + +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -112,8 +115,8 @@ // Imports, package et documentation generateHeader(output, input); - String abstractStr = input.isAbstract() ? " abstract " : " "; - String staticStr = input.isStatic() ? " static " : " "; + String abstractStr = input.isAbstract() ? " abstract" : ""; + String staticStr = input.isStatic() ? " static" : ""; String className = input.getName(); String extend = ""; @@ -140,7 +143,7 @@ } generateAnnotations(output, input, input); -/*{<%=prefix%>public<%=staticStr%><%=abstractStr%>class <%=className%>}*/ +/*{<%=prefix%>public<%=staticStr%><%=abstractStr%> class <%=className%>}*/ /* * Définition de la super classe : il ne doit y avoir qu'une @@ -154,14 +157,12 @@ } /*{ { - }*/ generateInnerClassifiers(output, input.getInnerClassifiers()); generateAttributes(output, input, input.getAttributes()); generateOperations(output, input, input.getOperations()); -/*{ -<%=prefix%>} //<%=className%> +/*{<%=prefix%>} //<%=className%> }*/ } @@ -198,12 +199,10 @@ /*{ extends <%=extend%>}*/ } /*{ { - }*/ generateAttributes(output, input, input.getAttributes()); generateOperations(output, input, input.getOperations()); -/*{ -<%=prefix%>} //<%=interfaceName%> +/*{<%=prefix%>} //<%=interfaceName%> }*/ } @@ -223,13 +222,12 @@ if (element instanceof ObjectModelOperation) { annotation = " "+annotation; } +/*{<%=annotation%>}*/ + if (element instanceof ObjectModelClassifier || element instanceof ObjectModelOperation) { /*{ -<%=annotation%>}*/ - } - if (element instanceof ObjectModelClassifier) { -/*{ }*/ } + } } public void generateFromEnumeration(Writer output, @@ -260,12 +258,10 @@ if (extend.length() > 0) { /*{ implements <%=extend%> { - }*/ } else { /*{ { - }*/ } // generation of literal @@ -281,8 +277,7 @@ } generateAttributes(output, input, input.getAttributes()); generateOperations(output, input, input.getOperations()); -/*{ -<%=prefix%>} //<%=enumzName%> +/*{<%=prefix%>} //<%=enumzName%> }*/ } @@ -352,11 +347,15 @@ ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - for (String imports : managers.getImports(classifier)) { -/*{import <%=imports%>; + List<String> imports = managers.getImports(classifier); + for (String singleImport : imports) { +/*{import <%=singleImport%>; }*/ } - + if (CollectionUtils.isNotEmpty(imports)) { +/*{ +}*/ + } } /** @@ -371,17 +370,22 @@ Collection<ObjectModelAttribute> attributes) throws IOException { - if (!attributes.isEmpty()) { -/*{}*/ - } + for (ObjectModelAttribute attr : attributes) { - if (attr.getDocumentation() != null && - !attr.getDocumentation().isEmpty()) { +/*{ +}*/ + String documentation = attr.getDocumentation(); + if (StringUtils.isNotEmpty(documentation)) { /*{<%=prefix%> /** -<%=prefix%> * <%=attr.getDocumentation()%> -<%=prefix%> *) }*/ + String[] lines = documentation.split("\n"); + for (String line : lines) { +/*{<%=prefix%> * <%=line%> +}*/ + } +/*{<%=prefix%> *) +}*/ } generateAnnotations(output, clazz, attr); @@ -438,26 +442,9 @@ generateBlock(output, clazz, op); continue; } -/*{<%=prefix%> /** -<%=prefix%> * <%=opName%> : -<%=prefix%>}*/ - if (op.getDocumentation() != null && - !op.getDocumentation().isEmpty()) { - String opDocumentation = op.getDocumentation(); -/*{<%=prefix%> * <%=opDocumentation%> -}*/ - } - Collection<ObjectModelParameter> params = op.getParameters(); - for (ObjectModelParameter param : params) { - String paramName = param.getName(); - String paramDocumentation = param.getDocumentation(); - if (paramDocumentation == null) { - paramDocumentation = ""; - } -/*{<%=prefix%> * @param <%=paramName%> <%=paramDocumentation%> -}*/ - } - String opVisibility = !interfacez ? op.getVisibility() : ""; + generateOperationDocumentation(output, op); + + String opVisibility = !interfacez ? op.getVisibility()+" " : ""; String opStatic = op.isStatic() ? "static " : ""; String opAbstract = op.isAbstract() ? "abstract " : ""; @@ -466,27 +453,12 @@ if (returnParam != null) { opReturn = GeneratorUtil.getSimpleName( returnParam.getType()) + " "; - if (!opReturn.contains("void")) { - String paramDocumentation = returnParam.getDocumentation(); - if (paramDocumentation == null) { - paramDocumentation = opReturn; - } -/*{<%=prefix%> * @return <%=paramDocumentation%> -}*/ - } } - Set<String> exceptions = op.getExceptions(); - for (String exception : exceptions) { - String exceptionName = GeneratorUtil.getSimpleName(exception); -/*{<%=prefix%> * @throws <%=exceptionName%> -}*/ - } -/*{<%=prefix%> *) -}*/ generateAnnotations(output, clazz, op); -/*{<%=prefix%> <%=opVisibility%> <%=opStatic%><%=opAbstract%><%=opReturn%><%=opName%>(}*/ +/*{<%=prefix%> <%=opVisibility%><%=opStatic%><%=opAbstract%><%=opReturn%><%=opName%>(}*/ String comma = ""; + Collection<ObjectModelParameter> params = op.getParameters(); for (ObjectModelParameter param : params) { String paramName = param.getName(); String paramType = GeneratorUtil.getSimpleName(param.getType()); @@ -496,6 +468,7 @@ /*{)}*/ comma = " throws "; + Set<String> exceptions = op.getExceptions(); for (String exception : exceptions) { String exceptionName = GeneratorUtil.getSimpleName(exception); /*{<%=comma%><%=exceptionName%>}*/ @@ -516,13 +489,66 @@ } } - protected void generateBlock(Writer output,ObjectModelClassifier clazz, + protected void generateOperationDocumentation(Writer output, + ObjectModelOperation op) throws IOException { + String documentation = op.getDocumentation(); + if (StringUtils.isEmpty(documentation)) { + + // no documentation for this operation + return; + } +/*{<%=prefix%> /** +<%=prefix%>}*/ + + String[] documentationLines = documentation.split("\n"); + for (String documentationLine : documentationLines) { +/*{<%=prefix%> * <%=documentationLine%> +}*/ + } + Collection<ObjectModelParameter> params = op.getParameters(); + for (ObjectModelParameter param : params) { + String paramName = param.getName(); + String paramDocumentation = param.getDocumentation(); + if (paramDocumentation == null) { + paramDocumentation = ""; + } +/*{<%=prefix%> * @param <%=paramName%> <%=paramDocumentation%> +}*/ + } + + ObjectModelParameter returnParam = op.getReturnParameter(); + String opReturn = ""; + if (returnParam != null) { + opReturn = GeneratorUtil.getSimpleName( + returnParam.getType()) + " "; + if (!opReturn.contains("void")) { + String paramDocumentation = returnParam.getDocumentation(); + if (paramDocumentation == null) { + paramDocumentation = ""; + } +/*{<%=prefix%> * @return <%=paramDocumentation%> +}*/ + } + } + Set<String> exceptions = op.getExceptions(); + for (String exception : exceptions) { + String exceptionName = GeneratorUtil.getSimpleName(exception); +/*{<%=prefix%> * @throws <%=exceptionName%> +}*/ + } +/*{<%=prefix%> *) +}*/ + + } + protected void generateBlock(Writer output, + ObjectModelClassifier clazz, ObjectModelOperation op) throws IOException { String opStatic = op.isStatic() ? "static " : " "; -/*{<%=prefix%><%=opStatic%>{ - <%=prefix%><%=op.getBodyCode()%> - <%=prefix%>} +/*{<%=prefix%> <%=opStatic%>{ +<%=prefix%> <%=op.getBodyCode()%> +<%=prefix%> } + }*/ }
participants (1)
-
tchemit@users.nuiton.org