Menu

[r2658]: / trunk / ch.sahits.codegen.example / jet_templates / daoInsertUnique.javajet  Maximize  Restore  History

Download this file

187 lines (181 with data), 7.2 kB

<%@ 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 %>
}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.