View Javadoc
1 /* 2 * Copyright (c) 2003 3 * Information Desire GmbH 4 * All rights reserved. 5 */ 6 package com.infodesire.infobit.external.impl; 7 8 import com.infodesire.infobit.InfobitManager; 9 import com.infodesire.infobit.InfobitException; 10 11 import com.infodesire.infobit.external.InfobitExporter; 12 13 import org.apache.commons.logging.Log; 14 import org.apache.commons.logging.LogFactory; 15 16 import org.apache.velocity.VelocityContext; 17 import org.apache.velocity.app.Velocity; 18 import org.apache.velocity.app.VelocityEngine; 19 import org.apache.velocity.runtime.RuntimeConstants; 20 import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; 21 22 import java.io.InputStream; 23 import java.io.Writer; 24 25 import java.util.Collection; 26 import java.util.Properties; 27 28 /*** 29 * Converts infobits to XML (as defined by {@link InfobitExporter}, relying on a 30 * {@link VelocityRenderer}. 31 * 32 * @author peter2 33 * @created August 26, 2003 34 * @version $Revision: 1.2 $ 35 */ 36 public class VelocityExporter implements InfobitExporter { 37 38 private final static Log _log = LogFactory.getLog(VelocityExporter.class); 39 40 /*** 41 * Resource path to the tmeplate formatting infobit collections 42 */ 43 private final static String COLLECTION_TEMPLATE = 44 "com/infodesire/infobit/external/impl/infobit-collection.vm"; 45 46 /*** 47 * Resource path to the velocity properties file applicable for infobit XML 48 * export 49 */ 50 private final static String VELO_PROP_PATH = 51 "/com/infodesire/infobit/external/impl/exporterVelocity.properties"; 52 53 /*** 54 * The collaborating manager 55 */ 56 private static InfobitManager _manager; 57 58 /*** 59 * Used engine 60 */ 61 private VelocityEngine _engine = null; 62 63 /*** 64 * Locally reused instance 65 */ 66 private ExportRenderHelper _helper = new ExportRenderHelper(); 67 68 69 /*** 70 * Initializes an incomplete instance. 71 */ 72 public VelocityExporter() { 73 _engine = new VelocityEngine(); 74 } 75 76 77 /*** 78 * Gets the Manager attribute of the VelocityRenderer object 79 * 80 * @return The Manager value 81 */ 82 public InfobitManager getManager() { 83 return _manager; 84 } 85 86 87 /*** 88 * Sets the Manager attribute of the VelocityRenderer object 89 * 90 * @param manager The new Manager value 91 */ 92 public void setManager(InfobitManager manager) { 93 _manager = manager; 94 } 95 96 97 /*** 98 * Prepares the instance to be used. 99 * 100 * @exception InfobitException Description of Exception 101 */ 102 public void init() throws InfobitException { 103 try { 104 Properties vp = new Properties(); 105 InputStream ps = getClass().getResourceAsStream(VELO_PROP_PATH); 106 vp.load(ps); 107 _engine.init(vp); 108 109 _helper.init(); 110 } catch (Exception e) { 111 _log.error("unable to init velocity", e); 112 throw new InfobitException(e); 113 } 114 } 115 116 117 /*** 118 * Converts the specified set of infobits into an XML representation. 119 * 120 * @param infobits The infobits to externalize. Infobits are 121 * externalized in the order obtained from than argument. Collection of 122 * {@link Infobit}. 123 * @param writer The destination where to write the XML 124 * representation of <code>infobits</code> to 125 * @exception InfobitException Unexpected error condition 126 */ 127 public synchronized void export(Collection infobits, Writer writer) 128 throws InfobitException { 129 130 try { 131 VelocityContext vc = new VelocityContext(); 132 vc.put("manager", _manager); 133 vc.put("infobits", infobits); 134 vc.put("helper", _helper); 135 136 _engine.mergeTemplate(COLLECTION_TEMPLATE, vc, writer); 137 } catch (Exception e) { 138 _log.error("failure converting infobits to XML", e); 139 throw new InfobitException(e); 140 } 141 } 142 143 }

This page was automatically generated by Maven