Ubik Batch Server Developing a Mapper

From UbikWiki

(Difference between revisions)
(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 lang="java">
+
</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

Personal tools