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.* ch.sahits.datastructure.* " package="PAGAGE_NAME" class="CLASS_NAME" %> <% /* * This jet template generates a rump for a DAO class. It is * assumed that the class name is <TableName>DAO and its * matching business object is <TableName>. * The class name provided by the model is ignored. */ DataBaseTable dbt = (DataBaseTable) argument; %> <%=ConvenientCodegen.toPackageDefinition(dbt.getPackageName()) %><% List importClasses = dbt.usedClasses(); 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() %>; <% } } %> import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.sql.Statement; <% String boName = ConvenientCodegen.camelCase(dbt.getTableName(),"_"); %> /** * This class is the data access class for 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(); %> /** * Insert a record set that is represented by the businessObject User * @param bo Business object * @return value of the generated key id or 0 if the record was inserted, but * the key could not be extracted or -1 if no record was inserted * @throws SQLException Some error occurred along the way */ public int insert(<%=boName %> bo) throws SQLException{ String sql = "insert into <%=dbt.getTableName() %> (<% /* * If the primary key is a autogenerated number don't add it in the insert SQL */ for (int i=0;i<fields.size();i++ ){ DataBaseTableField field = (DataBaseTableField)fields.get(i); if (!field.isAutoGenKey()){ %><%=field.getFieldName() %><% if (i<fields.size()-1){ %>, <% } } } %>) values (<% for (int i=0;i<fields.size();i++ ){ DataBaseTableField field = (DataBaseTableField)fields.get(i); if (!field.isAutoGenKey()){ if (field.isAlphaNumeric()){ %>'<% }%>"+bo.<%=ConvenientCodegen.toName( "get_"+field.getFieldName(),"_" )%>()+"<% if (field.isAlphaNumeric()){ %>'<% } if (i<fields.size()-1){ %>, <% } } } %>)"; Connection con = getConnection(); Statement stmt = con.createStatement(); try { int count = stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); if (count!=1){ return -1; } } catch (SQLFeatureNotSupportedException e) { // The JDBC driver does not support the return of generated keys int count = stmt.executeUpdate(sql); if (count!=1){ return -1; } else { return 0; } } ResultSet rs = stmt.getGeneratedKeys(); rs.beforeFirst(); if (rs.next()){ return Integer.parseInt(rs.getString("id")); } return 0; } /** * Create a new <%=boName %> instance from a result set * @param result ResultSet to be used to create the instance from * @return new <%=boName %> instance or null if the result set was empty or has no more elements * @throws SQLException Error while extracting the data */ private <%=boName %> create<%=boName %>Instance(ResultSet result) throws SQLException{ if (result.next()) { <%=boName %> obj = new <%=boName %>(); <% for (int i=0;i<fields.size();i++ ){ // for loop fields DataBaseTableField field = (DataBaseTableField)fields.get(i); String fieldName = field.getFieldName(); String setterMethod = ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ); %>obj.<%=setterMethod %>(result.getString("<%=fieldName %>").trim()); <% } /* end for loop fields */%> return obj; } return null; } <% SQLProvider provider = new SQLProvider(dbt,true); Vector<Pair> list = new Vector<Pair>(); /* * Load methods for all unique Indexes */ List<DataBaseTableIndex> indices = dbt.uniqueKeys(); for (Iterator i = indices.iterator(); i.hasNext(); ){ // For-Loop loadInidecs DataBaseTableIndex index = (DataBaseTableIndex)i.next();%> /** * Load a data set by the unique index <%=index.getIndexName() %> <% List<DataBaseTableField> indexFields = index.getFields(); for (DataBaseTableField field : indexFields){ list.clear(); // for (Iterator iter = indexFields.iterator(); iter.hasNext(); ){ // for loop javadoc param // DataBaseTableField field = (DataBaseTableField)iter.next(); String fieldName = field.getFieldName(); %> * @param <%=fieldName %> value that is part of the index<% } /* end for loop javadoc param */%> * @return selected <%=boName %> * @throws SQLException Error while extracting the data */ public <%=boName %> selectBy<%=ConvenientCodegen.camelCase(index.getIndexName(),"_") %>(<% for (int i2=0;i2<indexFields.size();i2++){ // for loop i2 DataBaseTableField field = (DataBaseTableField)indexFields.get(i2); String fieldName = ConvenientCodegen.toLowerCaseFirst(ConvenientCodegen.camelCase(field.getFieldName(),"_")); DataBaseTableField f = dbt.findField(field.getFieldName()); String type = ConvenientCodegen.getClassShortName(f);%><%=type %> <%= fieldName%><% list.add(new Pair(field.getFieldName(),fieldName)); if (i2<indexFields.size()-1){ // parameter separation %>, <% } // End parameter separation } /* End for loop i2 */ %>) throws SQLException{ String sql = "<%=provider.getSelectByIndex(list,index.getIndexName()) %>"; Connection con = getConnection(); Statement stmt = con.createStatement(); ResultSet result = stmt.executeQuery(sql); result.beforeFirst(); return create<%=boName %>Instance(result); } <% } // End For-Loop loadInidecs // 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 %> }