Menu

[r3148]: / branches / phpintegration / ch.sahits.codegen.example / jet_templates / daoInsertUnique.javajet  Maximize  Restore  History

Download this file

259 lines (247 with data), 10.0 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.* 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 %>
}
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.