package open.dolphin.msg; import java.beans.XMLDecoder; import java.io.BufferedInputStream; import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.StringWriter; import java.util.List; import java.util.logging.Logger; import open.dolphin.infomodel.DocumentModel; import open.dolphin.infomodel.IInfoModel; import open.dolphin.infomodel.ModuleModel; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; /** * * @author kazushi */ public class MMLSender { private static final String OBJECT_NAME = "mmlHelper"; private static final String TEMPLATE_NAME = "mmlHelper.vm"; private static final String TEMPLATE_ENC = "SHIFT_JIS"; private boolean DEBUG; public MMLSender() { DEBUG = Logger.getLogger("open.dolphin").getLevel().equals(java.util.logging.Level.FINE); } public void send(DocumentModel dm) throws Exception { if (DEBUG) { log("patientId = " + dm.getKarteBean().getPatientModel().getPatientId()); log("patientName = " + dm.getKarteBean().getPatientModel().getFullName()); log("userId = " + dm.getUserModel().getUserId()); log("userName = " + dm.getUserModel().getCommonName()); } // decode List<ModuleModel> modules = dm.getModules(); for (ModuleModel mm : modules) { mm.setModel((IInfoModel)this.xmlDecode(mm.getBeanBytes())); } MMLHelper helper = new MMLHelper(); helper.setDocument(dm); helper.buildText(); VelocityContext context = new VelocityContext(); context.put(OBJECT_NAME, helper); StringWriter sw = new StringWriter(); BufferedWriter bw = new BufferedWriter(sw); Velocity.mergeTemplate(TEMPLATE_NAME, TEMPLATE_ENC, context, bw); bw.flush(); bw.close(); String mml = sw.toString(); if (DEBUG) { log(mml); } } private void log(String msg) { Logger.getLogger("open.dolphin").info(msg); } private void warning(String msg) { Logger.getLogger("open.dolphin").warning(msg); } private Object xmlDecode(byte[] bytes) { XMLDecoder d = new XMLDecoder( new BufferedInputStream( new ByteArrayInputStream(bytes))); return d.readObject(); } }