Example: Spring Configuration
Here is the complete Spring XML for migration of the Footwear Orders sample MAPPER data report:
FootWearOrders_12D3954.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <!-- ===== Define ETL configuration items not derived from Hibernate configuration ===== --> <bean id="__propertyPlaceholder__" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:etl_config.properties</value> </list> </property> </bean> <bean id="etlConfig" class="com.arsi.mj.maprpt.entity.etlgen.config.HibernateEtlConfig" p:etlUserId="${etl.userId}" p:jdbcClasspath="${etl.jdbcClasspath}" p:nullString="${etl.nullString}"> </bean> <!-- ***** FOOTWEAR_ORDER_ADDRESSEE ***** --> <!-- ===== First, define columns that make up FOOTWEAR_ORDER_ADDRESSEE table ===== --> <bean id="addrInlineHandler.coldefAddressee" class="com.arsi.mj.config.atoms.ColumnDef"> <!-- entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="addressee"/> <constructor-arg index="1" value="addressee"/> <constructor-arg index="2" value="50"/> <constructor-arg index="3" value="false"/> <constructor-arg index="4"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="addrInlineHandler.coldefStreet" class="com.arsi.mj.config.atoms.ColumnDef"> <!-- entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="street"/> <constructor-arg index="1" value="street"/> <constructor-arg index="2" value="80"/> <constructor-arg index="3" value="false"/> <constructor-arg index="4"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="addrInlineHandler.coldefCityState" class="com.arsi.mj.config.atoms.ColumnDef"> <!-- entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="cityState"/> <constructor-arg index="1" value="city_state_province"/> <constructor-arg index="2" value="60"/> <constructor-arg index="3" value="false"/> <constructor-arg index="4"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="addrInlineHandler.coldefPostalCode" class="com.arsi.mj.config.atoms.ColumnDef"> <!-- entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="postalCode"/> <constructor-arg index="1" value="postal_code"/> <constructor-arg index="2" value="25"/> <constructor-arg index="3" value="false"/> <constructor-arg index="4"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="addrInlineHandler.coldefEmail" class="com.arsi.mj.config.atoms.ColumnDef"> <!-- entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="email"/> <constructor-arg index="1" value="email"/> <constructor-arg index="2" value="60"/> <constructor-arg index="3" value="true"/> <constructor-arg index="4"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="addrInlineHandler.coldefPhone" class="com.arsi.mj.config.atoms.ColumnDef"> <!-- entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="phone"/> <constructor-arg index="1" value="phone"/> <constructor-arg index="2" value="25"/> <constructor-arg index="3" value="true"/> <constructor-arg index="4"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <!-- ========================================================================= Setup the inline handler for FOOTWEAR_ORDER_ADDRESSEE that parses and extract fields from text of trailing lines, referencing columns above. Asterisk lines that encompass the addressee appears as follows: * Dave Bennet 123 Main St * Burr, MN 55038-1234 * dave@home.com 4567-9876-1234-6543 ========================================================================= --> <bean id="addrInlineHandler" class="com.arsi.mj.maprpt.parser.tuple.inline.RegexInlineDataHandler" p:className="com.arsi.mj.testapp.hibgen.model.FootwearOrderAddressee" p:baseClassSuffix="Base" p:tableName="FOOTWEAR_ORDER_ADDRESSEE" p:column1-ref="addrInlineHandler.coldefAddressee" p:column2-ref="addrInlineHandler.coldefStreet" p:column3-ref="addrInlineHandler.coldefCityState" p:column4-ref="addrInlineHandler.coldefPostalCode" p:column5-ref="addrInlineHandler.coldefEmail" p:column6-ref="addrInlineHandler.coldefPhone" p:matchFullInput="false" p:multiline="true" p:unixLines="true" p:textStripRegex="^\*"> <property name="fieldParseRegex1"> <!-- column name, field selector regex --> <list> <value>addressee</value> <value>^[^\t]*\t([^\t]*)</value> </list> </property> <property name="fieldParseRegex2"> <!-- column name, field selector regex --> <list> <value>street</value> <value>\t([^\t]*)$</value> </list> </property> <property name="fieldParseRegex3"> <!-- column name, field selector regex --> <list> <value>city_state_province</value> <value>^[^\t]*\t([^\t]*)</value> </list> </property> <property name="fieldParseRegex4"> <!-- column name, field selector regex --> <list> <value>postal_code</value> <value>\t([^\t]*)$</value> </list> </property> <property name="fieldParseRegex5"> <!-- column name, field selector regex --> <list> <value>email</value> <value>^[^\t]*\t([^\t]*)</value> </list> </property> <property name="fieldParseRegex6"> <!-- column name, field selector regex --> <list> <value>phone</value> <value>\t([^\t]*)$</value> </list> </property> </bean> <!-- this last step validates regex inline data handler after setup --> <bean id="addrInlineHandler.validateSetup" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" p:targetObject-ref="addrInlineHandler" p:targetMethod="validate"> </bean> <!-- ***** FOOTWEAR_ORDER_LINEITEM ***** --> <!-- ===== First, define columns that make up FOOTWEAR_ORDER_LINEITEM table ===== --> <bean id="orderEntityHandler.coldefOrderNumber" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="OrdNo" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.INTEGER"/> </constructor-arg> <constructor-arg index="2" value="orderNumber"/> <constructor-arg index="3" value="order_no"/> <constructor-arg index="4" value="5"/> <constructor-arg index="5" value="false"/> <constructor-arg index="6"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.INTEGER"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefQuantity" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="Qty" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.INTEGER"/> </constructor-arg> <constructor-arg index="2" value="quantity"/> <constructor-arg index="3" value="QTY"/> <constructor-arg index="4" value="3"/> <constructor-arg index="5" value="false"/> <constructor-arg index="6"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.INTEGER"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefShoeType" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="Type" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.STRING"/> </constructor-arg> <constructor-arg index="2" value="shoeType"/> <constructor-arg index="3" value="SHOE_TYPE"/> <constructor-arg index="4" value="5"/> <constructor-arg index="5" value="false"/> <constructor-arg index="6"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefShoeGender" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="Gender" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.STRING"/> </constructor-arg> <constructor-arg index="2" value="shoeGender"/> <constructor-arg index="3" value="SHOE_GENDER"/> <constructor-arg index="4" value="1"/> <constructor-arg index="5" value="false"/> <constructor-arg index="6"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.CHARACTER"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefShoeSize" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="Siz" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.STRING"/> </constructor-arg> <constructor-arg index="2" value="shoeSize"/> <constructor-arg index="3" value="SHOE_SIZE"/> <constructor-arg index="4" value="3"/> <constructor-arg index="5" value="false"/> <constructor-arg index="6"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefShoeColor" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="Color" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.STRING"/> </constructor-arg> <constructor-arg index="2" value="shoeColor"/> <constructor-arg index="3" value="SHOE_COLOR"/> <constructor-arg index="4" value="40"/> <constructor-arg index="5" value="true"/> <constructor-arg index="6"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.STRING"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefPrice" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, scale, NULLABLE, data type --> <constructor-arg index="0" value="Price" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.FLOAT"/> </constructor-arg> <constructor-arg index="2" value="price"/> <constructor-arg index="3" value="PRICE"/> <constructor-arg index="4" value="8"/> <constructor-arg index="5" value="2"/> <constructor-arg index="6" value="false"/> <constructor-arg index="7"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.BIG_DECIMAL"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefOrderDateTime" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, NULLABLE, data type --> <constructor-arg index="0" value="Date, Time" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.STRING"/> </constructor-arg> <constructor-arg index="2" value="dateAndTimeOrdered"/> <constructor-arg index="3" value="ORDER_DATE_TIME"/> <constructor-arg index="4" value="8"/> <constructor-arg index="5" value="false"/> <constructor-arg index="6"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.TIMESTAMP"/> </constructor-arg> </bean> <bean id="orderEntityHandler.coldefCost" class="com.arsi.mj.maprpt.entity.handler.AnnotatedColumnDef"> <!-- Mapper name, Mapper type, entity attrname, column name, length, scale, NULLABLE, data type --> <constructor-arg index="0" value="Cost" /> <constructor-arg index="1"> <util:constant static-field="com.arsi.mj.datatype.MaprptDataType.FLOAT"/> </constructor-arg> <constructor-arg index="2" value="cost"/> <constructor-arg index="3" value="COST"/> <constructor-arg index="4" value="8"/> <constructor-arg index="5" value="2"/> <constructor-arg index="6" value="true"/> <constructor-arg index="7"> <util:constant static-field="org.hibernate.type.StandardBasicTypes.BIG_DECIMAL"/> </constructor-arg> </bean> <!-- ===== Setup enumeration mappings for ShoeType and ShoeGender ===== --> <bean id="orderEntityHandler.enumShoeType" class="com.arsi.mj.maprpt.enums.StringKeyEnumMapping" p:enumClassName="com.arsi.mj.testapp.hibgen.enums.ShoeType"> <property name="enumsFromProperties"> <value> Basketball=BASKETBALL -> BSKBL Running=RUNNING -> RUN Golf=GOLF -> GOLF Tennis=TENNIS -> TENIS </value> </property> </bean> <bean id="orderEntityHandler.enumShoeGender" class="com.arsi.mj.maprpt.enums.StringKeyEnumMapping" p:enumClassName="com.arsi.mj.testapp.hibgen.enums.ShoeGender"> <property name="enumsFromProperties"> <value> Womens=WOMENS -> F Mens=MENS -> M </value> </property> </bean> <bean id="orderEntityHandler.enumLineType" class="com.arsi.mj.maprpt.enums.LineTypeEnumMapping" p:enumClassName="com.arsi.mj.testapp.hibgen.enums.LineType"> <property name="enumsFromProperties"> <value> \\t=TABLINE -> T </value> </property> </bean> <!-- ========================================================================= Setup the data entity handler for FOOTWEAR_ORDER_LINEITEM, referencing columns and enumerations defined above. ========================================================================= --> <bean id="orderEntityHandler" class="com.arsi.mj.maprpt.entity.handler.DataEntityHandler" p:tableName="FOOTWEAR_ORDER_LINEITEM" p:entityPackageName="com.arsi.mj.testapp.hibgen.model" p:entityClassName="FootwearOrderLineitem" p:entityBaseClassSuffix="Base" p:entityManagerClassSuffix="Mgr" p:surrogateKeyColumnName="fw_order_li_id" p:updateTimestampColumnName="DATE_OF_LAST_UPDATE" p:createUserColumnName="CREATED_BY_USER" p:column1-ref="orderEntityHandler.coldefOrderNumber" p:column2-ref="orderEntityHandler.coldefQuantity" p:column3-ref="orderEntityHandler.coldefShoeType" p:enumForColumn3-ref="orderEntityHandler.enumShoeType" p:column4-ref="orderEntityHandler.coldefShoeGender" p:enumForColumn4-ref="orderEntityHandler.enumShoeGender" p:column5-ref="orderEntityHandler.coldefShoeSize" p:column6-ref="orderEntityHandler.coldefShoeColor" p:column7-ref="orderEntityHandler.coldefPrice" p:column8-ref="orderEntityHandler.coldefOrderDateTime" p:column9-ref="orderEntityHandler.coldefCost"> </bean> <!-- this last step validates the data entity handler after setup --> <bean id="orderEntityHandler.validateSetup" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" p:targetObject-ref="orderEntityHandler" p:targetMethod="validate"> </bean> </beans>