Ubik Batch Server Developing a Mapper
From UbikWiki
(Difference between revisions)
(New page: = What is a Mapper = A mapper enables mapping a row returned from a data source to a Java Bean. = How to = Different base interface exist depending on data source: * JMS : com.ubikingenie...) |
(→What is a Mapper) |
||
(5 intermediate revisions not shown.) | |||
Line 1: |
Line 1: | ||
+ | [[Category:Ubik Batch Server]] | ||
= What is a Mapper = | = What is a Mapper = | ||
A mapper enables mapping a row returned from a data source to a Java Bean. | A mapper enables mapping a row returned from a data source to a Java Bean. | ||
+ | |||
+ | The mapped JavaBean will be return in the List parameter of method ''executeOnBlock(List list) | ||
+ | '' | ||
= How to = | = How to = | ||
- | Different base | + | Different base interfaces exist depending on data source: |
* JMS : com.ubikingenierie.console.apiconsole.mapping.IMessageMapper | * JMS : com.ubikingenierie.console.apiconsole.mapping.IMessageMapper | ||
* SQL : com.ubikingenierie.console.apiconsole.mapping.IRowMapper | * SQL : com.ubikingenierie.console.apiconsole.mapping.IRowMapper | ||
* ... | * ... | ||
- | + | Implementation steps: | |
+ | * Extend a Base class and implement abstract method: | ||
+ | ** This class must have an empty constructor | ||
+ | * Set mapper implementation class on BatchStart implementation | ||
+ | |||
= Examples = | = Examples = | ||
- | == JMS Mapper: == | + | == Implementing mappers == |
+ | === JMS Mapper: === | ||
<source lang="java"> | <source lang="java"> | ||
package com.ubikingenierie.console.demo.jms.mapping; | package com.ubikingenierie.console.demo.jms.mapping; | ||
Line 42: |
Line 51: | ||
} | } | ||
</source> | </source> | ||
- | ==SQL Mapper:== | + | ===SQL Mapper:=== |
<source lang="java"> | <source lang="java"> | ||
/** | /** | ||
Line 91: |
Line 100: | ||
} | } | ||
}</source> | }</source> | ||
+ | |||
+ | == Configuring mappers == | ||
+ | ===JMS Batch=== | ||
+ | Excerpt from <Subclass of BaseJmsBatch>#createConfiguration() | ||
+ | <source lang="java"> | ||
+ | JmsBatchStart batchStart = new JmsBatchStart(); | ||
+ | batchStart.setMapperClassName(PersonMapper.class.getName()); | ||
+ | batchStart.setConnectionFactoryName("java:comp/env/jms/localConnectionFactory"); | ||
+ | batchStart.setDestinationName("java:comp/env/jms/localDemoQueue"); | ||
+ | batchStart.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); | ||
+ | batchStart.setSessionTransacted(false); | ||
+ | </source> | ||
+ | === SQL Batch === | ||
+ | Excerpt from <Subclass of BaseSqlWithMappingBatch>#createConfiguration() | ||
+ | <source lang="java"> | ||
+ | MappedSqlBatchStart starter = new MappedSqlBatchStart( | ||
+ | "jdbc/batchweb",// Pool name | ||
+ | "select translation.trs_context_code, translation.trs_label_code, translation.trs_language, translation.trs_label,trs_update from translation" + | ||
+ | " where trs_language = ? order by trs_language ", // SQL Query | ||
+ | 50, // Number of lines in block | ||
+ | false, //Direct SQL, not Stored Procedure | ||
+ | "com.ubikingenierie.console.demo.mapper.TranslationMapper" // Mapper implementation | ||
+ | ); | ||
+ | SqlParameter parameter = new SqlParameter(1, "EN", String.class); | ||
+ | starter.setParameters(new SqlParameter[] { parameter }); | ||
+ | </source> |
Current revision
Contents |
What is a Mapper
A mapper enables mapping a row returned from a data source to a Java Bean.
The mapped JavaBean will be return in the List parameter of method executeOnBlock(List list)
How to
Different base interfaces exist depending on data source:
- JMS : com.ubikingenierie.console.apiconsole.mapping.IMessageMapper
- SQL : com.ubikingenierie.console.apiconsole.mapping.IRowMapper
- ...
Implementation steps:
- Extend a Base class and implement abstract method:
- This class must have an empty constructor
- Set mapper implementation class on BatchStart implementation
Examples
Implementing mappers
JMS Mapper:
package com.ubikingenierie.console.demo.jms.mapping; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.TextMessage; import com.ubikingenierie.console.apiconsole.mapping.MappingException; /** */ public class PersonMapper extends com.ubikingenierie.console.apiconsole.jms.JmsBaseMapper { /** * @see com.ubikingenierie.console.apiconsole.jms.JmsBaseMapper#mapMessage(javax.jms.Message) */ protected Object mapMessage(Message message) throws MappingException { TextMessage textMessage = (TextMessage) message; Person person = new Person(); try { person.setAge(new Integer(textMessage.getIntProperty("age"))); person.setCut(new Double(textMessage.getDoubleProperty("cut"))); person.setFirstName(textMessage.getStringProperty("firstName")); person.setLastName(textMessage.getStringProperty("lastName")); return person; } catch (JMSException e) { throw new MappingException(e); } } }
SQL Mapper:
/** * */ package com.ubikingenierie.console.demo.mapper; // com.ubikingenierie.console.demo.mapper.TranslationMapper import java.sql.ResultSet; import java.sql.SQLException; import com.ubikingenierie.console.apiconsole.mapping.IRowMapper; import com.ubikingenierie.console.apiconsole.mapping.MappingException; import com.ubikingenierie.console.demo.data.DoTranslation; /** */ public class TranslationMapper implements IRowMapper { /** * */ public TranslationMapper() { super(); } /* (non-Javadoc) * @see com.ubikingenierie.console.apiconsole.mapping.IRowMapper#mapRow(java.sql.ResultSet, int) */ public Object mapRow(ResultSet resultSet, int rowNumber) throws MappingException { try { DoTranslation doTranslation= new DoTranslation(); doTranslation.setTrsContextCode(resultSet.getString("trs_context_code")); doTranslation.setTrsLabelCode(resultSet.getString("trs_label_code")); doTranslation.setTrsLanguage(resultSet.getString("trs_language")); doTranslation.setTrsLabel(resultSet.getString("trs_label")); doTranslation.setTrsUpdate(resultSet.getTimestamp("trs_update")); return doTranslation; } catch (SQLException e) { throw new MappingException(e.getMessage(),e); } } /** * @see java.lang.Object#clone() */ public Object clone() throws CloneNotSupportedException { return super.clone(); } }
Configuring mappers
JMS Batch
Excerpt from <Subclass of BaseJmsBatch>#createConfiguration()
JmsBatchStart batchStart = new JmsBatchStart(); batchStart.setMapperClassName(PersonMapper.class.getName()); batchStart.setConnectionFactoryName("java:comp/env/jms/localConnectionFactory"); batchStart.setDestinationName("java:comp/env/jms/localDemoQueue"); batchStart.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); batchStart.setSessionTransacted(false);
SQL Batch
Excerpt from <Subclass of BaseSqlWithMappingBatch>#createConfiguration()
MappedSqlBatchStart starter = new MappedSqlBatchStart( "jdbc/batchweb",// Pool name "select translation.trs_context_code, translation.trs_label_code, translation.trs_language, translation.trs_label,trs_update from translation" + " where trs_language = ? order by trs_language ", // SQL Query 50, // Number of lines in block false, //Direct SQL, not Stored Procedure "com.ubikingenierie.console.demo.mapper.TranslationMapper" // Mapper implementation ); SqlParameter parameter = new SqlParameter(1, "EN", String.class); starter.setParameters(new SqlParameter[] { parameter });