Code Generator for Eclipse Code
Brought to you by:
hotzst
<%@ jet imports="java.util.* ch.sahits.model.* ch.sahits.model.db.* ch.sahits.model.java.* ch.sahits.model.java.db.* ch.sahits.codegen.java.model.util.* java.lang.reflect.* " package="PAGAGE_NAME" class="CLASS_NAME" %> <% DataBaseTable dbt = (DataBaseTable) argument; %> <%=ConvenientCodegen.toPackageDefinition(dbt.getPackageName()) %><% Set importClasses = new HashSet(); importClasses.addAll(dbt.usedClasses()); if (dbt.hasSuperClass() && !dbt.superclasses().get(0).equals(Object.class)){ // Add interfaces from abstract methods of super class Class clazz = (Class)dbt.superclasses().get(0); MethodReflector mr = new MethodReflector(clazz); importClasses.addAll(mr.neededImportsOfAbstractMethods()); } if (!dbt. interfaces().isEmpty()){ Class[] interfaces = dbt.getInterfaces(); for (int i=0;i<interfaces.length; i++ ){ MethodReflector mr = new MethodReflector(interfaces[i]); importClasses.addAll(mr.needeImportsOfNonPrivateMethods()); } } for (Iterator i = importClasses.iterator(); i.hasNext(); ){ Class c = (Class)i.next(); if (!ConvenientCodegen.isPrimitiveClass(c)){ %>import <%=c.getName() %>; <% } // end if } %><% if (dbt.hasSuperClass() && !ConvenientCodegen.isPrimitiveClass((Class)dbt.superclasses().get(0))){ %> import <%=((Class)dbt.superclasses().get(0)).getName() %>;<% } %><% if (!dbt.interfaces().isEmpty()){ Class[] interfaces = dbt.getInterfaces(); for (int i=0;i<interfaces.length; i++ ){%> import <%=interfaces[i].getName() %>; <% } } %> /** * This class represents the database table * <%=dbt.getTableName() %>. */ <% if (dbt.isPublic()){ %> public <% } else if (dbt.isProtected()){ %> protected <% } else if (dbt.isPrivate()){ %> private <% } %><% if (dbt.isAbstract()) { %>abstract <% } %><% if (dbt.isFinal()) { %>final <% } %>class <%=dbt.getClassName() %><% if (dbt.hasSuperClass() && !dbt.superclasses().get(0).equals(Object.class)){ %> extends <%=ConvenientCodegen.getSimpleClassName((Class)dbt.superclasses().get(0)) %><% } %><% if (!dbt. interfaces().isEmpty()){ Class[] interfaces = dbt.getInterfaces(); %> implements <% for (int i=0;i<interfaces.length; i++ ){ %><%=ConvenientCodegen.getSimpleClassName((Class)interfaces[i]) %><% if (i==interfaces.length-1){ %> <% } else { %>, <% } %><% } %><% } %> { <% List fields = dbt.getFields(); for (Iterator i = fields.iterator(); i.hasNext(); ){ DataBaseTableField field = (DataBaseTableField)i.next(); %> /** <code><%= ConvenientCodegen.toName( field.getFieldName(),"_" ) %></code> holds the value of the field <%=field.getFieldName() %> */ private <%=ConvenientCodegen.getSimpleClassName( field.getFieldType()) %> <%= ConvenientCodegen.toName( field.getFieldName(),"_" ) %>; <% } %> <% // Add the constructors from the super class if (dbt.hasSuperClass() && !dbt.superclasses().get(0).equals(Object.class)){ Class clazz = (Class)dbt.superclasses().get(0); MethodReflector mr = new MethodReflector(clazz); if (mr.hasMultipleConstructors()){ List<Constructor<?>> constructors = mr.getConstructor(); for (Constructor c : constructors){ %> /** * @see <%=clazz.getName() %>#<%=dbt.getClassName() %>(<% Type[] paramTypes = c.getGenericParameterTypes(); for (int j=0;j<paramTypes.length;j++){ String simpleName = ConvenientCodegen.getSimpleClassName( (Class)paramTypes[j]); %><%=simpleName %><% if (j<paramTypes.length-1){%>, <%} }%>) */ public <%=dbt.getClassName() %>(<% List<Map.Entry<String, Object>> args = mr.getArguments(c); for (int j=0;j<args.size();j++){ Map.Entry<String, Object> p = args.get(j); %><%=p.getKey() %> <%=p.getValue() %><% if (j<args.size()-1){%>, <%} } // End for loop arguments %>)<% List<String> exs = mr.getException(c); for (int j=0;j<exs.size();j++){ %><%=exs.get(j) %><% if (j<exs.size()-1){%>, <%} }%>{ super(<% for (int j=0;j<args.size();j++){ Map.Entry<String, Object> p = args.get(j); %><%=p.getValue() %><% if (j<args.size()-1){%>, <%} } // End for loop arguments %>); }<% } } } // End adding constructors %> <% for (Iterator i = fields.iterator(); i.hasNext(); ){ DataBaseTableField field = (DataBaseTableField)i.next(); %> /** * Retrieve the value of the field <%=field.getFieldName() %>. * @return the value of the field */ public <%=ConvenientCodegen.getSimpleClassName( field.getFieldType()) %> <%= ConvenientCodegen.toName( "get_"+field.getFieldName(),"_" ) %>(){ return <%= ConvenientCodegen.toName( field.getFieldName(),"_" ) %>; } /** * Set the value of the field <%=field.getFieldName() %>. * @param <%= ConvenientCodegen.toName( field.getFieldName(),"_" ) %> value to be set for <%=field.getFieldName() %> */ public void <%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %>(<%=ConvenientCodegen.getSimpleClassName( field.getFieldType()) %> <%= ConvenientCodegen.toName( field.getFieldName(),"_" ) %>){ this.<%= ConvenientCodegen.toName( field.getFieldName(),"_" ) %> = <%= ConvenientCodegen.toName( field.getFieldName(),"_" ) %>; } <% } // End for loop fields %><% // START implementation of abstract methods of super class %> <% /* Abstract classes from the superclass */ if (dbt.hasSuperClass() && !dbt.superclasses().get(0).equals(Object.class)){ Class clazz = dbt.superclasses().get(0); MethodReflector mr = new MethodReflector(clazz); List<Method> ms = mr.getAbstractMethods(); for (Method m : ms){ %> /** * @see <%=clazz.getName() %>#<%=mr.getMethodName(m) %>(<% Type[] paramTypes = m.getGenericParameterTypes(); for (int j=0;j<paramTypes.length;j++){ String simpleName = ConvenientCodegen.getSimpleClassName( (Class)paramTypes[j]); %><%=simpleName %><% if (j<paramTypes.length-1){%>, <%} }%>) */ <%=mr.getAccessModifier(m) %> <%=mr.getReturnType(m) %> <%=mr.getMethodName(m) %>(<% List<Map.Entry<String, Object>> args = mr.getArguments(m); for (int j=0;j<args.size();j++){ Map.Entry<String, Object> p = args.get(j); %><%=p.getKey() %> <%=p.getValue() %><% if (j<paramTypes.length-1){%>, <%} } // End for loop arguments %>)<% List<String> exs = mr.getException(m); for (int j=0;j<exs.size();j++){ %><%=exs.get(j) %><% if (j<paramTypes.length-1){%>, <%} }%>{ // TODO: implement this method-stub <% if (!mr.getReturnType(m).equals("void")){%>return <%=mr.getReturnValue(m) %>; <% } %>}<% } // End of for loop } /* End if superclass*/ %><% // END implementation of abstract methods of super class // START implementation of interface methods if (!dbt. interfaces().isEmpty()){ Class[] interfaces = dbt.getInterfaces(); for (int i=0;i<interfaces.length; i++ ){ MethodReflector mr = new MethodReflector(interfaces[i]); List<Method> ms = mr.getPublicOrProtectedMethods(); for (Method m : ms){ %> /** * @see <%=interfaces[i].getName() %>#<%=mr.getMethodName(m) %>(<% Type[] paramTypes = m.getGenericParameterTypes(); for (int j=0;j<paramTypes.length;j++){ String simpleName = ConvenientCodegen.getSimpleClassName( (Class)paramTypes[j]); %><%=simpleName %><% if (j<paramTypes.length-1){%>, <%} }%>) */ <%=mr.getAccessModifier(m) %> <%=mr.getReturnType(m) %> <%=mr.getMethodName(m) %>(<% List<Map.Entry<String, Object>> args = mr.getArguments(m); for (int j=0;j<args.size();j++){ Map.Entry<String, Object> p = args.get(j); %><%=p.getKey() %> <%=p.getValue() %><% if (j<paramTypes.length-1){%>, <%} } // End for loop arguments %>)<% List<String> exs = mr.getException(m); for (int j=0;j<exs.size();j++){ %><%=exs.get(j) %><% if (j<paramTypes.length-1){%>, <%} }%>{ // TODO: implement this method-stub <% if (!mr.getReturnType(m).equals("void")){%>return <%=mr.getReturnValue(m) %>; <% } %>}<% } // End of for loop methods } // end for interfaces } // end if interfaces %> }