Ubik Batch Server Developing a Mapper
From UbikWiki
(→Examples) |
(→SQL Batch) |
||
Line 121: |
Line 121: | ||
SqlParameter parameter = new SqlParameter(1, "EN", String.class); | SqlParameter parameter = new SqlParameter(1, "EN", String.class); | ||
starter.setParameters(new SqlParameter[] { parameter }); | starter.setParameters(new SqlParameter[] { parameter }); | ||
- | </source | + | </source> |
Revision as of 16:26, 1 May 2009
Contents |
What is a Mapper
A mapper enables mapping a row returned from a data source to a Java Bean.
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()
Invalid language.
You need to specify a language like this: <source lang="html">...</source>
Supported languages for syntax highlighting:
abap, actionscript, ada, apache, applescript, asm, asp, autoit, bash, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp, cpp-qt, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, m68k, matlab, mirc, mpasm, mysql, nsis, objc, ocaml, ocaml-brief, oobas, oracle8, pascal, per, perl, php, php-brief, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80