appfuse ftl

dao层全部文件,Service全部文件,web层部分文件,model层部分文件

dao文件夹:

dao.ftl

package ${basepackage}.dao;

<#assign classbody>
<#assign pojoName = pojo.importType(pojo.getDeclarationName())>
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
import ${pojo.packageName}.${pojoName};
import java.util.List;
import com.launch.mycar.core.util.PagingHelper;
/**
 * An interface that provides a data management interface to the ${pojoName} table.
 */
public interface ${pojoName}Dao extends ${pojo.importType("${appfusepackage}.dao.GenericDao")}<${pojoName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> {

	public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name});
	
	public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}();
	
	public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower});
			
	public void delete${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name});
	
	public ${pojoName} save${pojoName}(${pojoName} ${pojoNameLower});
	
	public ${pojoName} update${pojoName}(${pojoName} ${pojoNameLower});
	
	public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name});
	
	
</#assign>
${pojo.generateImports()
}

${classbody}

}

 dao-bean.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<!--${pojo.shortName}Dao-START-->
<#if daoframework == "hibernate">
    <bean id="${pojoNameLower}Dao" class="${basepackage}.dao.hibernate.${pojo.shortName}DaoHibernate"/>
<#elseif daoframework == "ibatis">
    <bean id="${pojoNameLower}Dao" class="${basepackage}.dao.ibatis.${pojo.shortName}DaoiBatis"/>
<#elseif daoframework == "jpa">
    <bean id="${pojoNameLower}Dao" class="${basepackage}.dao.jpa.${pojo.shortName}DaoJpa"/>
</#if>
    <!--${pojo.shortName}Dao-END-->

    <!-- Add new DAOs here -->

 dao-test.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)>
package ${basepackage}.dao;

import ${appfusepackage}.dao.BaseDaoTestCase;
import ${basepackage}.model.${pojo.shortName};
import org.springframework.dao.DataAccessException;

import static org.junit.Assert.*;
import org.junit.Test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.NotTransactional;
import org.springframework.test.annotation.ExpectedException;

import java.util.List;

public class ${pojo.shortName}DaoTest extends BaseDaoTestCase {
    @Autowired
    private ${pojo.shortName}Dao ${pojoNameLower}Dao;

    @Test
    @ExpectedException(DataAccessException.class)
    public void testAddAndRemove${pojo.shortName}() {
        ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}();

        // enter all required fields
<#foreach field in pojo.getAllPropertiesIterator()>
    <#foreach column in field.getColumnIterator()>
        <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
            <#lt/>        ${pojoNameLower}.set${pojo.getPropertyName(field)}(${data.getValueForJavaTest(column)});
        </#if>
    </#foreach>
</#foreach>

        log.debug("adding ${pojoNameLower}...");
        ${pojoNameLower} = ${pojoNameLower}Dao.save(${pojoNameLower});
        <#lt/><#if daoframework == "daoframework">flush();</#if><#rt/>

        ${pojoNameLower} = ${pojoNameLower}Dao.get(${pojoNameLower}.${getIdMethodName}());

        assertNotNull(${pojoNameLower}.${getIdMethodName}());

        log.debug("removing ${pojoNameLower}...");

        ${pojoNameLower}Dao.remove(${pojoNameLower}.${getIdMethodName}());
        <#lt/><#if daoframework == "daoframework">flush();</#if><#rt/>

        // should throw DataAccessException 
        ${pojoNameLower}Dao.get(${pojoNameLower}.${getIdMethodName}());
    }
}

 sample-data.ftl

    <!--${pojo.shortName}-START-->
    <table name="${clazz.table.name}">
<#foreach field in pojo.getAllPropertiesIterator()>
<#if !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
    <#foreach column in field.getColumnIterator()>
        <column>${column.name}</column>
    </#foreach>
<#elseif c2h.isManyToOne(field)>
    <#foreach column in field.getColumnIterator()>
        <column>${column.name}</column>    
    </#foreach>
</#if>
</#foreach>
<#assign rows = 1 .. 3>
<#foreach num in rows>
    <row>
<#foreach field in pojo.getAllPropertiesIterator()>
<#if !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
    <#foreach column in field.getColumnIterator()>
        <value description="${column.name}"><#rt/>
        <#if field.equals(pojo.identifierProperty)>
            <#lt/>-${num}<#rt/>
        <#elseif field.equals(pojo.versionProperty)>
            <#if field.value.typeName.equals("timestamp")>
                2000-01-01 00:00:00<#t/>
            <#else>
                1<#rt/>
            </#if>
        <#else>
            <#lt/>${data.getTestValueForDbUnit(column)}<#rt/>
        </#if>
        <#lt/></value>
    </#foreach>
<#elseif c2h.isManyToOne(field)>
    <#foreach column in field.getColumnIterator()>
        <value description="${column.name}"><#rt/>
            <#lt/>-${num}<#rt/>
        <#lt/></value>
    </#foreach>
</#if>
</#foreach>
    </row>
</#foreach>
    </table>
    <!--${pojo.shortName}-END-->
</dataset>

dao/ibatis包:

compass-gps.ftl

<!-- CompassGps allows to perform index operation based on the select statements defined in iBatis -->
    <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
        <property name="compass" ref="compass"/>
        <property name="gpsDevices">
            <list>
                <bean class="org.compass.gps.device.ibatis.SqlMapClientGpsDevice">
                    <property name="name" value="ibatis"/>
                    <property name="sqlMapClient" ref="sqlMapClient"/>
                    <property name="selectStatementsIds">
                        <list>
                            <value>getUsers</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>

    <!-- Add new DAOs here -->

select-ids.ftl

<value>get${util.getPluralForWord(pojo.shortName)}</value>
                            <value>getUsers</value>

dao-impl.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign pojoName = pojo.importType(pojo.getDeclarationName())>
package ${basepackage}.dao.ibatis;

import ${basepackage}.model.${pojo.shortName};
import ${basepackage}.dao.${pojo.shortName}Dao;
import ${appfusepackage}.dao.ibatis.GenericDaoiBatis;
import org.springframework.stereotype.Repository;
import java.util.List;
import com.launch.mycar.core.util.PagingHelper;
@Repository("${pojoNameLower}Dao")
public class ${pojo.shortName}DaoiBatis extends GenericDaoiBatis<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> implements ${pojo.shortName}Dao {

    public ${pojo.shortName}DaoiBatis() 
    {
        super(${pojo.shortName}.class);
    }
    
    
  public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name})
  {
  		return super.get(${pojo.identifierProperty.name});
  }
	
	public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}()
	{
			return super.getAll();
	}
	
	public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower})
	{
		int size = this.getObjectTotal("query${util.getPluralForWord(pojo.shortName)}", ${pojoNameLower});
		pageNo = PagingHelper.getAvailablePageNo(size, pageSize, pageNo);
		int offset = (pageNo - 1) * pageSize;
		List ${util.getPluralForWord(pojoNameLower)} = getSqlMapClientTemplate().queryForList("query${util.getPluralForWord(pojo.shortName)}", ${pojoNameLower}, offset, pageSize);
		return new PagingHelper(size, pageSize, pageNo, ${util.getPluralForWord(pojoNameLower)});
	}
	
	public void delete${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name})
	{
			super.remove(${pojo.identifierProperty.name});
	}
	
	public ${pojoName} save${pojoName}(${pojoName} ${pojoNameLower})
	{
			return super.save(${pojoNameLower});
	}
	
	public ${pojoName} update${pojoName}(${pojoName} ${pojoNameLower})
	{
			return super.save(${pojoNameLower});
	}
	
	public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name})
	{
			return super.exists(${pojo.identifierProperty.name});
	}
	
	
}

sql-map.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign table_name = clazz.table.name>
<#assign numProperties = 0>
<#foreach field in pojo.getAllPropertiesIterator()>
    <#foreach column in field.getColumnIterator()>
        <#if field.equals(pojo.identifierProperty)>
        <#assign idColumn = column.name> 
        <#assign idField = field.name>
        <#else><#assign numProperties = numProperties + 1>
        </#if>
    </#foreach>
</#foreach>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="${pojo.shortName}SQL">

    <typeAlias alias="${pojoNameLower}" type="${basepackage}.model.${pojo.shortName}"/>

    <parameterMap id="addParam" class="${pojoNameLower}">
    <#foreach field in pojo.getAllPropertiesIterator()><#rt/>
        <#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)><#rt/>
        <parameter property="${field.name}" jdbcType="${data.getJdbcType(field.value.typeName)}" javaType="${field.value.typeName}"/>
        </#if>
    </#foreach><#rt/>
    </parameterMap>

    <parameterMap id="updateParam" class="${pojoNameLower}">
    <#foreach field in pojo.getAllPropertiesIterator()><#rt/>
        <#if field.equals(pojo.identifierProperty)>
        <parameter property="${idField}" jdbcType="${data.getJdbcType(field.value.typeName)}" javaType="${field.value.typeName}"/>
        </#if>
        <#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
        <parameter property="${field.name}" jdbcType="${data.getJdbcType(field.value.typeName)}" javaType="${field.value.typeName}"/>
        </#if>
    </#foreach><#rt/>
    </parameterMap>

    <resultMap id="${pojoNameLower}Result" class="${pojoNameLower}">
    <#foreach field in pojo.getAllPropertiesIterator()><#rt/>
        <#foreach column in field.getColumnIterator()><#rt/>
            <#assign columnName = column.name>
        </#foreach>
        <#if field.equals(pojo.identifierProperty)>
        <result property="${field.name}" column="${idColumn}"/>
        <#elseif !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
        <result property="${field.name}" column="${columnName}"/>
        </#if>
    </#foreach>
    </resultMap>

    <select id="query${util.getPluralForWord(pojo.shortName)}" resultMap="${pojoNameLower}Result">
    <![CDATA[
        select * from ${table_name}
    ]]>
    </select>

    <select id="get${pojo.shortName}" parameterClass="${pojo.identifierProperty.value.typeName}" resultMap="${pojoNameLower}Result">
    <![CDATA[
        select * from ${table_name} where ${idColumn} = #${idField}#
    ]]>
    </select>

    <insert id="save${pojo.shortName}" parameterClass="${pojoNameLower}">
        <selectKey resultClass="${pojo.identifierProperty.value.typeName}" keyProperty="${idField}" type="pre">
            SELECT SEQ_${clazz.table.name}.NEXTVAL AS ${idField} FROM DUAL
        </selectKey>
        <![CDATA[
         <#assign fIdx = 1>
            insert into ${table_name} (${idColumn},<#rt/>
            <#lt><#foreach field in pojo.getAllPropertiesIterator()>
								<#list field.getColumnIterator() as column><#rt/>
                    <#assign columnName = column.name>
                </#list>
                <#lt/><#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
                <#lt/>${columnName}<#if fIdx lt numProperties>, </#if><#assign fIdx = fIdx+1></#if><#rt/>
            <#lt/></#foreach>)
            values (#${idField}#,<#rt/><#assign fIdx = 1>
            <#foreach field in pojo.getAllPropertiesIterator()>
                <#lt/><#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
                <#lt/>#${field.name}#<#if fIdx lt numProperties>, </#if><#assign fIdx = fIdx+1></#if><#rt/>
            <#lt/></#foreach>)
        ]]>
    </insert>
    
    <update id="update${pojo.shortName}" parameterClass="${pojoNameLower}">
    <![CDATA[
        update ${table_name} set    <#assign fIdx = 1>
            <#foreach field in pojo.getAllPropertiesIterator()>
                <#list field.getColumnIterator() as column>
                    <#assign columnName = column.name>
                </#list>
                <#if !field.equals(pojo.identifierProperty) && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
                    <#lt/> ${columnName} = #${field.name}#<#if fIdx lt numProperties>, </#if><#assign fIdx = fIdx+1>
                </#if>
            </#foreach>
        where ${idColumn} = #${idField}#
    ]]>
    </update>

    <delete id="delete${pojo.shortName}" parameterClass="${pojo.identifierProperty.value.typeName}">
    <![CDATA[
        delete from ${table_name} where ${idColumn} = #${idField}#
    ]]>
    </delete>
</sqlMap>

hibernate.cfg.ftl

<!-- NOTE: If you're working offline, you might have to change the DOCTYPE to the following:
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">-->
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <mapping class="${appfusepackage}.model.User"/>
        <mapping class="${appfusepackage}.model.Role"/>
    </session-factory>
</hibernate-configuration>

sql-map-config.ftl

    <!--${pojo.shortName}-START-->
    <sqlMap resource="sqlmaps/${pojo.shortName}SQL.xml"/>
    <!--${pojo.shortName}-END-->
</sqlMapConfig>

model包:

Ejb3PropertyGetAnnotation.ftl

<#if ejb3><#rt/>
    <#if pojo.hasIdentifierProperty()><#rt/>
        <#if property.equals(clazz.identifierProperty)><#rt/>
        <#lt/>${pojo.generateAnnIdGenerator()}
        <#lt/>		@SearchableId
        <#lt/>${pojo.generateAnnColumnAnnotation(property)}
        <#lt/>		@${pojo.importType("javax.persistence.GeneratedValue")}(strategy = GenerationType.SEQUENCE, generator="SEQ_${clazz.table.name}")
    		<#lt/>		@${pojo.importType("javax.persistence.SequenceGenerator")}(name="SEQ_${clazz.table.name}", sequenceName="SEQ_${clazz.table.name}", allocationSize=1)<#rt/>
        </#if><#rt/>
        
    </#if><#rt/>
    <#if c2h.isManyToOne(property)><#rt/>
        <#--TODO support @OneToOne true and false-->
        <#lt/>${pojo.generateManyToOneAnnotation(property)}
        <#--TODO support optional and targetEntity-->
        <#lt/>${pojo.generateJoinColumnsAnnotation(property, cfg)}
        <#elseif c2h.isCollection(property)><#rt/>
            <#lt/>${pojo.generateCollectionAnnotation(property, cfg)}
        <#else><#rt/>
        <#if !property.equals(clazz.identifierProperty)><#rt/>
        <#lt/>${pojo.generateAnnColumnAnnotation(property)}
        <#lt/>    @SearchableProperty
        </#if><#rt/>
    </#if><#rt/>
</#if><#rt/>

Ejb3TypeDeclaration.ftl

<#if ejb3?if_exists><#rt/>
    <#if pojo.isComponent()><#rt/>
    <#lt>@${pojo.importType("javax.persistence.Embeddable")}
    <#else><#rt/>
    <#lt>@${pojo.importType("javax.persistence.Entity")}
    <#lt>@${pojo.importType("javax.persistence.Table")}(name="${clazz.table.name}")<#rt/>
    </#if>
</#if>

GetPropertyAnnotation.ftl

<#include "Ejb3PropertyGetAnnotation.ftl"/>

 Pojo.ftl

${pojo.getPackageDeclaration()}

<#assign classbody>
<#include "PojoTypeDeclaration.ftl"/> {
<#if !pojo.isInterface()>
<#include "PojoFields.ftl"/>
<#--include "PojoConstructors.ftl"/-->

<#include "PojoPropertyAccessors.ftl"/>

<#include "PojoEqualsHashcode.ftl"/>

<#include "PojoToString.ftl"/>

<#else>
<#include "PojoInterfacePropertyAccessors.ftl"/>

</#if>
<#include "PojoExtraClassCode.ftl"/>

}
</#assign>
import ${appfusepackage}.model.BaseObject;

import org.compass.annotations.Searchable;
import org.compass.annotations.SearchableComponent;
import org.compass.annotations.SearchableId;
import org.compass.annotations.SearchableProperty;

${pojo.generateImports()}
import javax.persistence.GenerationType;

import javax.xml.bind.annotation.XmlRootElement;

import java.io.Serializable;

${classbody}

PojoFields.ftl

<#foreach field in pojo.getAllPropertiesIterator()><#rt/>
<#if pojo.getMetaAttribAsBool(field, "gen-property", true)><#rt/>
    ${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>;
</#if><#rt/>
</#foreach><#rt/>

PojoTypeDeclaration.ftl

<#include "Ejb3TypeDeclaration.ftl"/>
@Searchable
@XmlRootElement
${pojo.getClassModifiers()} ${pojo.getDeclarationType()} ${pojo.getDeclarationName()} extends BaseObject implements Serializable

service包:

generic-beans.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<!--${pojo.shortName}Manager-START-->
    <bean id="${pojoNameLower}Manager" class="${appfusepackage}.service.impl.GenericManagerImpl">
        <constructor-arg>
            <#if daoframework == "hibernate">
            <bean class="${appfusepackage}.dao.hibernate.GenericDaoHibernate">
                <constructor-arg value="${pojo.packageName}.${pojo.shortName}"/>
            </bean>
            <#elseif daoframework == "ibatis">
            <bean class="${appfusepackage}.dao.ibatis.GenericDaoiBatis">
                <constructor-arg value="${pojo.packageName}.${pojo.shortName}"/>
            </bean>
            <#elseif daoframework == "jpa">
            <bean class="${appfusepackage}.dao.jpa.GenericDaoJpa">
                <constructor-arg value="${pojo.packageName}.${pojo.shortName}"/>
            </bean>
            </#if>
        </constructor-arg>
    </bean>
    <!--${pojo.shortName}Manager-END-->

    <!-- Add new Managers here -->

manager.ftl

package ${basepackage}.service;

import ${appfusepackage}.service.GenericManager;
import ${basepackage}.model.${pojo.shortName};

import java.util.List;
import com.launch.mycar.core.util.PagingHelper;
<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign pojoName = pojo.importType(pojo.getDeclarationName())>
public interface ${pojo.shortName}Manager extends GenericManager<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> {
  
  public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name});
	
	public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}();
	
	public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower});
	
	public void remove${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name});
	
	public ${pojoName} create${pojoName}(${pojoName} ${pojoNameLower});
	
	public ${pojoName} edit${pojoName}(${pojoName} ${pojoNameLower});
	
	public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name});
	
	
}

manager-bean.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<!--${pojo.shortName}Manager-START-->
    <bean id="${pojoNameLower}Manager" class="${basepackage}.service.impl.${pojo.shortName}ManagerImpl">
        <constructor-arg ref="${pojoNameLower}Dao"/>
    </bean>
    <!--${pojo.shortName}Manager-END-->

    <!-- Add new Managers here -->

manager-impl.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign pojoName = pojo.importType(pojo.getDeclarationName())>
package ${basepackage}.service.impl;

import ${basepackage}.dao.${pojo.shortName}Dao;
import ${basepackage}.model.${pojo.shortName};
import ${basepackage}.service.${pojo.shortName}Manager;
import ${appfusepackage}.service.impl.GenericManagerImpl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import com.launch.mycar.core.util.PagingHelper;

@Service("${pojoNameLower}Manager")
public class ${pojo.shortName}ManagerImpl extends GenericManagerImpl<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> implements ${pojo.shortName}Manager {
    ${pojo.shortName}Dao ${pojoNameLower}Dao;

    @Autowired
    public ${pojo.shortName}ManagerImpl(${pojo.shortName}Dao ${pojoNameLower}Dao) {
        super(${pojoNameLower}Dao);
        this.${pojoNameLower}Dao = ${pojoNameLower}Dao;
    }
    
   public ${pojoName} get${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name})
   {
   		return super.get(${pojo.identifierProperty.name});
   }
	
	public List<${pojoName}> query${util.getPluralForWord(pojo.shortName)}()
	{
			return super.getAll();
	}
	
	public PagingHelper query${util.getPluralForWord(pojo.shortName)}(int pageNo, int pageSize,${pojoName} ${pojoNameLower})
	{
			return ${pojoNameLower}Dao.query${util.getPluralForWord(pojo.shortName)}(pageNo, pageSize, ${pojoNameLower});
	}
	
	public void remove${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name})
	{
			super.remove(${pojo.identifierProperty.name});
	}
	
	public ${pojoName} create${pojoName}(${pojoName} ${pojoNameLower})
	{
			return super.save(${pojoNameLower});
	}
	
	public ${pojoName} edit${pojoName}(${pojoName} ${pojoNameLower})
	{
			return super.save(${pojoNameLower});
	}
	
	public boolean exists${pojoName}(${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)} ${pojo.identifierProperty.name})
	{
			return super.exists(${pojo.identifierProperty.name});
	}
	
}

manager-test.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)>
<#assign setIdMethodName = 'set' + pojo.getPropertyName(pojo.identifierProperty)>
<#assign identifierType = pojo.getJavaTypeName(pojo.identifierProperty, jdk5)>
package ${basepackage}.service.impl;

import java.util.ArrayList;
import java.util.List;

import ${basepackage}.dao.${pojo.shortName}Dao;
import ${basepackage}.model.${pojo.shortName};
import ${appfusepackage}.service.impl.BaseManagerMockTestCase;

import org.jmock.Expectations;
import org.junit.Before;
import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.*;

public class ${pojo.shortName}ManagerImplTest extends BaseManagerMockTestCase {
    private ${pojo.shortName}ManagerImpl manager = null;
    private ${pojo.shortName}Dao dao = null;

    @Before
    public void setUp() {
        dao = context.mock(${pojo.shortName}Dao.class);
        manager = new ${pojo.shortName}ManagerImpl(dao);
    }

    @After
    public void tearDown() {
        manager = null;
    }

    @Test
    public void testGet${pojo.shortName}() {
        log.debug("testing get...");

        final ${identifierType} ${pojo.identifierProperty.name} = 7L;
        final ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}();

        // set expected behavior on dao
        context.checking(new Expectations() {{
            one(dao).get(with(equal(${pojo.identifierProperty.name})));
            will(returnValue(${pojoNameLower}));
        }});

        ${pojo.shortName} result = manager.get(${pojo.identifierProperty.name});
        assertSame(${pojoNameLower}, result);
    }

    @Test
    public void testGet${util.getPluralForWord(pojo.shortName)}() {
        log.debug("testing getAll...");

        final List ${util.getPluralForWord(pojoNameLower)} = new ArrayList();

        // set expected behavior on dao
        context.checking(new Expectations() {{
            one(dao).getAll();
            will(returnValue(${util.getPluralForWord(pojoNameLower)}));
        }});

        List result = manager.getAll();
        assertSame(${util.getPluralForWord(pojoNameLower)}, result);
    }

    @Test
    public void testSave${pojo.shortName}() {
        log.debug("testing save...");

        final ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}();
        // enter all required fields
<#foreach field in pojo.getAllPropertiesIterator()>
    <#foreach column in field.getColumnIterator()>
        <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
            <#lt/>        ${pojoNameLower}.set${pojo.getPropertyName(field)}(${data.getValueForJavaTest(column)});
        </#if>
    </#foreach>
</#foreach>
        
        // set expected behavior on dao
        context.checking(new Expectations() {{
            one(dao).save(with(same(${pojoNameLower})));
        }});

        manager.save(${pojoNameLower});
    }

    @Test
    public void testRemove${pojo.shortName}() {
        log.debug("testing remove...");

        final ${identifierType} ${pojo.identifierProperty.name} = -11L;

        // set expected behavior on dao
        context.checking(new Expectations() {{
            one(dao).remove(with(equal(${pojo.identifierProperty.name})));
        }});

        manager.remove(${pojo.identifierProperty.name});
    }
}

web包:

web/struts包:

action.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)>
<#assign setIdMethodName = 'set' + pojo.getPropertyName(pojo.identifierProperty)>
<#assign identifierType = pojo.getJavaTypeName(pojo.identifierProperty, jdk5)>
<#assign pojoName = pojo.importType(pojo.getDeclarationName())>
package ${basepackage}.webapp.action;

import com.opensymphony.xwork2.Preparable;
<#if genericcore>
import ${appfusepackage}.service.GenericManager;
<#else>
import ${basepackage}.service.${pojo.shortName}Manager;
</#if>
import ${basepackage}.model.${pojo.shortName};
import ${basepackage}.webapp.action.BaseAction;
import com.launch.mycar.core.webapp.Constants;
import com.launch.mycar.core.util.PagingHelper;
import java.util.List;

public class ${pojo.shortName}Action extends BaseAction implements Preparable {
<#if genericcore>
    private GenericManager<${pojo.shortName}, ${pojo.getJavaTypeName(pojo.identifierProperty, jdk5)}> ${pojoNameLower}Manager;
<#else>
    private ${pojo.shortName}Manager ${pojoNameLower}Manager;
</#if>
    
    private ${pojo.shortName} ${pojoNameLower};
    private ${identifierType} ${pojo.identifierProperty.name};
 

<#if genericcore>
    public void set${pojo.shortName}Manager(GenericManager<${pojo.shortName}, ${identifierType}> ${pojoNameLower}Manager) {
<#else>
    public void set${pojo.shortName}Manager(${pojo.shortName}Manager ${pojoNameLower}Manager) {
</#if>
        this.${pojoNameLower}Manager = ${pojoNameLower}Manager;
    }

    

    /**
     * Grab the entity from the database before populating with request parameters
     */
    public void prepare() {
        if (getRequest().getMethod().equalsIgnoreCase("post")) {
            // prevent failures on new
            String ${pojoNameLower}Id = getRequest().getParameter("${pojoNameLower}.${pojo.identifierProperty.name}");
            if (${pojoNameLower}Id != null && !${pojoNameLower}Id.equals("")) {
                ${pojoNameLower} = ${pojoNameLower}Manager.get(new ${identifierType}(${pojoNameLower}Id));
            }
        }
    }


    public void ${setIdMethodName}(${identifierType} ${pojo.identifierProperty.name}) {
        this.${pojo.identifierProperty.name} = ${pojo.identifierProperty.name};
    }

		public ${identifierType} ${getIdMethodName}(){
				return this.${pojo.identifierProperty.name};
		}
		
    public ${pojo.shortName} get${pojo.shortName}() {
        return ${pojoNameLower};
    }

    public void set${pojo.shortName}(${pojo.shortName} ${pojoNameLower}) {
        this.${pojoNameLower} = ${pojoNameLower};
    }

    public String remove${pojoName}() {
        ${pojoNameLower}Manager.remove${pojoName}(${pojoNameLower}.${getIdMethodName}());
        saveMessage(getText("${pojoNameLower}.remove"));

        return SUCCESS;
    }

    public String edit${pojoName}() {
        if (${pojo.identifierProperty.name} != null) {
            ${pojoNameLower} = ${pojoNameLower}Manager.get${pojoName}(${pojo.identifierProperty.name});
        } else {
            ${pojoNameLower} = new ${pojo.shortName}();
        }

        return SUCCESS;
    }

		public String query${util.getPluralForWord(pojo.shortName)}()
		{
				PagingHelper ${util.getPluralForWord(pojoNameLower)} = ${pojoNameLower}Manager.query${util.getPluralForWord(pojo.shortName)}(pageNo,Constants.PAGE_SIZE, ${pojoNameLower});
				this.setValueStack("${util.getPluralForWord(pojoNameLower)}", ${util.getPluralForWord(pojoNameLower)});
				return SUCCESS;
		}
		
    public String create${pojoName}() throws Exception {
       
        boolean isNew = (${pojoNameLower}.${getIdMethodName}() == null);

        ${pojoNameLower}Manager.create${pojoName}(${pojoNameLower});

        String key = (isNew) ? "${pojoNameLower}.added" : "${pojoNameLower}.updated";
        saveMessage(getText(key));

        if (!isNew) {
            return INPUT;
        } else {
            return SUCCESS;
        }
    }
}

action-test.ftl

<#assign pojoNameLower = pojo.shortName.substring(0,1).toLowerCase()+pojo.shortName.substring(1)>
<#assign getIdMethodName = pojo.getGetterSignature(pojo.identifierProperty)>
<#assign setIdMethodName = 'set' + pojo.getPropertyName(pojo.identifierProperty)>
<#assign identifierType = pojo.getJavaTypeName(pojo.identifierProperty, jdk5)>
package ${basepackage}.webapp.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
<#if genericcore>
import ${appfusepackage}.service.GenericManager;
<#assign managerClass = 'GenericManager'>
<#else>
import ${basepackage}.service.${pojo.shortName}Manager;
<#assign managerClass = pojo.shortName + 'Manager'>
</#if>
import ${pojo.packageName}.${pojo.shortName};
import ${basepackage}.webapp.action.BaseActionTestCase;
import org.compass.gps.CompassGps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;

public class ${pojo.shortName}ActionTest extends BaseActionTestCase {
    private ${pojo.shortName}Action action;
    @Autowired
    private CompassGps compassGps;

    @Before
    public void onSetUp() {
        super.onSetUp();
        compassGps.index();

        action = new ${pojo.shortName}Action();
        ${managerClass} ${pojoNameLower}Manager = (${managerClass}) applicationContext.getBean("${pojoNameLower}Manager");
        action.set${pojo.shortName}Manager(${pojoNameLower}Manager);

        // add a test ${pojoNameLower} to the database
        ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}();

        // enter all required fields
<#foreach field in pojo.getAllPropertiesIterator()>
    <#foreach column in field.getColumnIterator()>
        <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
            <#lt/>        ${pojoNameLower}.set${pojo.getPropertyName(field)}(<#rt/>
            <#if field.value.typeName == "java.lang.String" && column.isUnique()><#lt/>${data.generateRandomStringValue(column)}<#else>${data.getValueForJavaTest(column)}</#if><#lt/>);
        </#if>
    </#foreach>
</#foreach>

        ${pojoNameLower}Manager.save(${pojoNameLower});
    }

    @Test
    public void testGetAll${util.getPluralForWord(pojo.shortName)}() throws Exception {
        assertEquals(action.list(), ActionSupport.SUCCESS);
        assertTrue(action.get${util.getPluralForWord(pojo.shortName)}().size() >= 1);
    }

    @Test
    public void testSearch() throws Exception {
        action.setQ("*");
        assertEquals(action.list(), ActionSupport.SUCCESS);
        assertEquals(4, action.get${util.getPluralForWord(pojo.shortName)}().size());
    }

    @Test
    public void testEdit() throws Exception {
        log.debug("testing edit...");
        action.${setIdMethodName}(-1L);
        assertNull(action.get${pojo.shortName}());
        assertEquals("success", action.edit());
        assertNotNull(action.get${pojo.shortName}());
        assertFalse(action.hasActionErrors());
    }

    @Test
    public void testSave() throws Exception {
        MockHttpServletRequest request = new MockHttpServletRequest();
        ServletActionContext.setRequest(request);
        action.${setIdMethodName}(-1L);
        assertEquals("success", action.edit());
        assertNotNull(action.get${pojo.shortName}());

        ${pojo.shortName} ${pojoNameLower} = action.get${pojo.shortName}();
        // update required fields
<#foreach field in pojo.getAllPropertiesIterator()>
    <#foreach column in field.getColumnIterator()>
        <#if !field.equals(pojo.identifierProperty) && !column.nullable && !c2h.isCollection(field) && !c2h.isManyToOne(field) && !c2j.isComponent(field)>
            <#lt/>        ${pojoNameLower}.set${pojo.getPropertyName(field)}(${data.getValueForJavaTest(column)});
        </#if>
    </#foreach>
</#foreach>

        action.set${pojo.shortName}(${pojoNameLower});

        assertEquals("input", action.save());
        assertFalse(action.hasActionErrors());
        assertFalse(action.hasFieldErrors());
        assertNotNull(request.getSession().getAttribute("messages"));
    }

    @Test
    public void testRemove() throws Exception {
        MockHttpServletRequest request = new MockHttpServletRequest();
        ServletActionContext.setRequest(request);
        action.setDelete("");
        ${pojo.shortName} ${pojoNameLower} = new ${pojo.shortName}();
        ${pojoNameLower}.${setIdMethodName}(-2L);
        action.set${pojo.shortName}(${pojoNameLower});
        assertEquals("success", action.delete());
        assertNotNull(request.getSession().getAttribute("messages"));
    }
}

猜你喜欢

转载自szqfsx123.iteye.com/blog/1602394