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
%>
}