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() %>; <% } } %> import java.util.Random; import java.util.UUID; /** * 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 { %>, <% } %><% } %><% } %> { <% String className = dbt.getClassName().substring(0,dbt.getClassName().indexOf("Test")); %> private <%=className %> x; private <%=className %> xx; private <%=className %> y; private <%=className %> z; private <%=className %> zx; private Random rnd = new Random(<%=dbt.getClassName() %>.class.hashCode()+System.nanoTime()); protected void setUp() throws Exception { x = new <%=className %>(); <% List fields = dbt.getFields(); for (Iterator i = fields.iterator(); i.hasNext(); ){ DataBaseTableField field = (DataBaseTableField)i.next(); %>x.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %><% if (ConvenientCodegen.getSimpleClassName( field.getFieldType()).equals("int") || field.getFieldType().equals("Integer")) %>(rnd.nextInt()); <% else %>(UUID.randomUUID().toString()); <% } %> xx = new <%=className %>(); <% for (Iterator i = fields.iterator(); i.hasNext(); ){ DataBaseTableField field = (DataBaseTableField)i.next(); %>xx.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %>(x.<%= ConvenientCodegen.toName( "get_"+field.getFieldName(),"_" ) %>()); <% } %> y = new <%=className %>(); <% for (Iterator i = fields.iterator(); i.hasNext(); ){ DataBaseTableField field = (DataBaseTableField)i.next(); %>y.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %><% if (ConvenientCodegen.getSimpleClassName( field.getFieldType()).equals("int") || field.getFieldType().equals("Integer")) %>(rnd.nextInt()); <% else %>(UUID.randomUUID().toString()); <% } %> z = new <%=className %>(); <% for (Iterator i = fields.iterator(); i.hasNext(); ){ DataBaseTableField field = (DataBaseTableField)i.next(); %>z.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %><% if (ConvenientCodegen.getSimpleClassName( field.getFieldType()).equals("int") || field.getFieldType().equals("Integer")) %>(rnd.nextInt()); <% else %>(UUID.randomUUID().toString()); <% } %> zx = new <%=className %>(); <% for (Iterator i = fields.iterator(); i.hasNext(); ){ DataBaseTableField field = (DataBaseTableField)i.next(); %>zx.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %>(x.<%= ConvenientCodegen.toName( "get_"+field.getFieldName(),"_" ) %>()); <% } %> } public void testEqualsObject() { assertEquals("The equals method fails on the reflexifity test: x.equals(x)==false",x, x); assertEquals("The equals method fails on objects with the same status: xx.equals(x)==false",xx, x); assertEquals("The equals method fails on objects with the same status: zx.equals(xx)==false",zx, xx); assertEquals("The equals method fails on the symetry test: xx.equals(x)== x.equals(xx) is false",xx.equals(x), x.equals(xx)); assertEquals("The equals method fails on the transitivity test: (xx==x && zx==xx) but zx.equals(x)==false",zx, x); assertEquals("The equals method fails on the transitivity test: (x==zx && zx==y)==false but x.equals(y)==true",x.equals(zx) && zx.equals(y), x.equals(y)); assertNotNull(x); assertFalse("The equals test fails on the null comparrison: x!=null == true", x.equals(null)); } public void testHashCode() { final int firstXHash = x.hashCode(); for (int i=0;i<100;i++){ assertEquals("The hash value of x changed without x changing its status",firstXHash, x.hashCode()); } assertEquals(x, xx); for (int i=0;i<100;i++){ if (x.equals(xx)){ assertEquals("The hashCode of equal objects differs.",x.hashCode(), xx.hashCode()); } } assertEquals(x, zx); for (int i=0;i<100;i++){ if (x.equals(zx)){ assertEquals("The hashCode of equal objects differs.",x.hashCode(), zx.hashCode()); } } assertEquals(xx, zx); for (int i=0;i<100;i++){ if (zx.equals(xx)){ assertEquals("The hashCode of equal objects differs.",zx.hashCode(), xx.hashCode()); } } } }