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.*" 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;
}
<%
/*
* 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){
// 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%><%
if (i2<indexFields.size()-1){ // parameter separation
%>, <%
} // End parameter separation
} /* End for loop i2 */
%>) throws SQLException{
String sql = "select * from <%=dbt.getTableName() %> where <%
for (int i3=0;i3<indexFields.size();i3++){ // For i3
DataBaseTableField field2 = (DataBaseTableField)indexFields.get(i3);
String fieldName2 = field2.getFieldName();
String paramName2 = ConvenientCodegen.camelCase(field2.getFieldName(),"_");
%><%=fieldName2 %> = <% if (field2.isAlphaNumeric()){ %>`<% } %>"+<%=paramName2 %>+"<% if (field2.isAlphaNumeric()){ %>`<% }
if (i3<indexFields.size()-1){ %> and <% }
} // End for loop i3
%>";
Connection con = getConnection();
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery(sql);
result.beforeFirst();
return create<%=boName %>Instance(result);
}
<% } // End For-Loop loadInidecs %>
}