- From: Jean-Guilhem Rouel via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 28 Aug 2009 12:40:08 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/output In directory hutz:/tmp/cvs-serv22368/src/org/w3c/unicorn/output Added Files: SimpleOutputFormater.java XMLOutputFormater.java OutputFactory.java OutputModule.java EnumOutputModule.java SimpleOutputModule.java OutputFormater.java Log Message: Merging dev2 in HEAD --- NEW FILE: OutputFactory.java --- // $Id: OutputFactory.java,v 1.2 2009/08/28 12:40:06 jean-gui Exp $ // Author: Damien LEROY. // (c) COPYRIGHT MIT, ERCIM ant Keio, 2006. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.unicorn.output; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; import org.w3c.unicorn.util.Property; /** * This class allow to manage all output module and output formatter. It provide * a way to share an instance of a output module or output formater between * different call of the framework UniCORN. * * @author Damien LEROY */ public class OutputFactory { protected static final Log logger = LogFactory.getLog(OutputFactory.class); private static final Map<EnumOutputModule, OutputModule> mapOfOutputModule = new LinkedHashMap<EnumOutputModule, OutputModule>(); private static final Map<String, OutputFormater> mapOfOutputFormater = new LinkedHashMap<String, OutputFormater>(); /** * Create a new output module and add it to the map. * * @param aEnumOutputModule * To identify which type of output module will be created. * @return The new output module. */ private static OutputModule createOutputModule( final EnumOutputModule aEnumOutputModule) { OutputFactory.logger.trace("createOutputModule"); if (OutputFactory.logger.isDebugEnabled()) { OutputFactory.logger.debug("Output module : " + aEnumOutputModule + "."); } final OutputModule aOutputModule; switch (aEnumOutputModule) { case SIMPLE: aOutputModule = new SimpleOutputModule(); break; default: return null; } OutputFactory.mapOfOutputModule.put(aEnumOutputModule, aOutputModule); return aOutputModule; } /** * Create a new output formatter and add it to the map. * * @param sOutputFormat * The format who the output formatter must produce. * @return The new output formatter. * @throws ResourceNotFoundException * @throws ParseErrorException * @throws Exception */ private static OutputFormater createOutputFormater( final String sOutputFormat, final String sLang, final String sMimeType) throws ResourceNotFoundException, ParseErrorException, Exception { OutputFactory.logger.trace("createOutputformater"); if (OutputFactory.logger.isDebugEnabled()) { OutputFactory.logger .debug("Output format : " + sOutputFormat + "."); OutputFactory.logger.debug("Language : " + sLang + "."); OutputFactory.logger.debug("Mime type : " + sMimeType + "."); } final String sFormaterName = Property.getProps("specialFormaters.properties") .getProperty(sMimeType); if (null != sFormaterName) { final Class<?> aFormaterClass = Class .forName("org.w3c.unicorn.output." + sFormaterName); final Class<?>[] tClassParamType = { String.class, String.class }; final Object[] tObjectParamValue = { sOutputFormat, sLang }; final OutputFormater aOutputFormater; aOutputFormater = (OutputFormater) aFormaterClass.getConstructor( tClassParamType).newInstance(tObjectParamValue); OutputFactory.mapOfOutputFormater.put(sMimeType + "_" + sLang + "_" + sOutputFormat, aOutputFormater); return aOutputFormater; } final OutputFormater aOutputFormater; aOutputFormater = new SimpleOutputFormater(sOutputFormat, sLang); OutputFactory.mapOfOutputFormater.put(sLang + "_" + sOutputFormat, aOutputFormater); return aOutputFormater; } /** * Return the output module asked. * * @param sOutputModule * The name of the output module to return. * @return The output module asked. */ public static OutputModule getOutputModule(final String sOutputModule) { OutputFactory.logger.trace("getOutputModule"); if (OutputFactory.logger.isDebugEnabled()) { OutputFactory.logger .debug("Output module : " + sOutputModule + "."); } final EnumOutputModule aEnumOutputModule = EnumOutputModule .fromValue(sOutputModule); if (null == aEnumOutputModule) { OutputFactory.logger.error("Unknow output module."); return null; } return OutputFactory.getOutputModule(aEnumOutputModule); } /** * Return the output module asked. * * @param aEnumOutputModule * @return The output module asked. */ public static OutputModule getOutputModule( final EnumOutputModule aEnumOutputModule) { OutputFactory.logger.trace("getOutputModule"); if (OutputFactory.logger.isDebugEnabled()) { OutputFactory.logger.debug("Output module : " + aEnumOutputModule + "."); } final OutputModule aOutputModule = OutputFactory.mapOfOutputModule .get(aEnumOutputModule); // if output module not already exist if (null == aOutputModule) { // create it return OutputFactory.createOutputModule(aEnumOutputModule); } return aOutputModule; } /** * Return the output formatter asked. * * @param sOutputFormat * The output format who be produce by the output formatter. * @return The output formatter asked. * @throws ResourceNotFoundException * @throws ParseErrorException * @throws Exception */ public static OutputFormater getOutputFormater(final String sOutputFormat, final String sLang, final String sMimeType) throws ResourceNotFoundException, ParseErrorException, Exception { OutputFactory.logger.trace("getOutputformater"); if (OutputFactory.logger.isDebugEnabled()) { OutputFactory.logger .debug("Output format : " + sOutputFormat + "."); OutputFactory.logger.debug("Language : " + sLang + "."); } OutputFormater aOutputFormater = OutputFactory.mapOfOutputFormater .get(sMimeType + "_" + sLang + "_" + sOutputFormat); if (null != aOutputFormater) { return aOutputFormater; } aOutputFormater = OutputFactory.mapOfOutputFormater.get(sLang + "_" + sOutputFormat); if (null != aOutputFormater) { return aOutputFormater; } // if output formater not already exist create it aOutputFormater = OutputFactory.createOutputFormater(sOutputFormat, sLang, sMimeType); return aOutputFormater; } } --- NEW FILE: OutputModule.java --- // $Id: OutputModule.java,v 1.2 2009/08/28 12:40:06 jean-gui Exp $ // Author: Damien LEROY. // (c) COPYRIGHT MIT, ERCIM ant Keio, 2006. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.unicorn.output; import java.io.IOException; import java.io.Writer; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; /** * Interface for all output module. * * @author Damien LEROY */ public interface OutputModule { public static final Log logger = LogFactory.getLog(OutputModule.class); /** * Generate the output of all response. * * @throws IOException * @throws Exception * @throws MethodInvocationException * @throws ParseErrorException * @throws ResourceNotFoundException */ public abstract void produceOutput(final OutputFormater aOutputFormater, final Map<String, Object> mapOfStringObject, final Map<String, String[]> mapOfParameter, final Writer aWriter) throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception; /** * Generates an error output * * @throws IOException * @throws Exception * @throws MethodInvocationException * @throws ParseErrorException * @throws ResourceNotFoundException */ public abstract void produceError(final OutputFormater aOutputFormater, final Exception error, final Map<String, String[]> mapOfParameter, final Writer aWriter) throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception; } --- NEW FILE: SimpleOutputModule.java --- // $Id: SimpleOutputModule.java,v 1.2 2009/08/28 12:40:06 jean-gui Exp $ // Author: Damien LEROY. // (c) COPYRIGHT MIT, ERCIM ant Keio, 2006. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.unicorn.output; import java.io.Writer; import java.util.Map; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; /** * This module allow to generate output in text format. * * @author Damien LEROY */ public class SimpleOutputModule implements OutputModule { public void produceOutput(final OutputFormater aOutputFormater, final Map<String, Object> mapOfStringObject, final Map<String, String[]> mapOfParameter, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception { OutputModule.logger.trace("Constructor"); aOutputFormater.produceOutput(mapOfStringObject, aWriter); } public void produceError(final OutputFormater aOutputFormater, final Exception aException, final Map<String, String[]> mapOfParameter, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception { OutputModule.logger.trace("produceError"); aOutputFormater.produceError(aException, aWriter); } } --- NEW FILE: EnumOutputModule.java --- // $Id: EnumOutputModule.java,v 1.2 2009/08/28 12:40:06 jean-gui Exp $ // Author: Damien LEROY. // (c) COPYRIGHT MIT, ERCIM ant Keio, 2006. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.unicorn.output; /** * @author Damien LEROY * */ public enum EnumOutputModule { SIMPLE("simple"), MAIL("mail"); private final String sValue; private EnumOutputModule(final String sValue) { this.sValue = sValue; } public final String value() { return this.sValue; } /** * Returns if the string is an output method possible value * * @param sValue * string to compare * @return the output method if matches and null otherwise */ public static EnumOutputModule fromValue(final String sValue) { for (final EnumOutputModule aEnumOutputMethod : EnumOutputModule .values()) { if (aEnumOutputMethod.sValue.equals(sValue)) { return aEnumOutputMethod; } } return null; } } --- NEW FILE: OutputFormater.java --- // $Id: OutputFormater.java,v 1.2 2009/08/28 12:40:06 jean-gui Exp $ // Author: Jean-Guilhem Rouel // (c) COPYRIGHT MIT, ERCIM and Keio, 2006. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.unicorn.output; import java.io.Writer; import java.util.Map; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; /** * SimpleOutputFormater<br /> * Created: Jul 19, 2006 5:54:33 PM<br /> * * @author Jean-Guilhem Rouel */ public interface OutputFormater { public abstract void produceOutput( final Map<String, Object> mapOfStringObject, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception; /** * @param aException * @param aWriter * @throws Exception * @throws MethodInvocationException * @throws ParseErrorException * @throws ResourceNotFoundException */ public abstract void produceError(final Exception aException, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception; } --- NEW FILE: SimpleOutputFormater.java --- // $Id: SimpleOutputFormater.java,v 1.2 2009/08/28 12:40:06 jean-gui Exp $ // Author: Damien LEROY. // (c) COPYRIGHT MIT, ERCIM ant Keio, 2006. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.unicorn.output; import java.io.Writer; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.velocity.VelocityContext; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; import org.w3c.unicorn.Framework; import org.w3c.unicorn.util.Property; import org.w3c.unicorn.util.Templates; /** * Class for simple output formater. * * @author Jean-Guilhem ROUEL */ public class SimpleOutputFormater implements OutputFormater { private static final Log logger = LogFactory.getLog(SimpleOutputFormater.class); private static VelocityContext aVelocityContext; private String sOutputFormat; private String sLang; public SimpleOutputFormater(final String sOutputFormat, final String sLang) throws ResourceNotFoundException, ParseErrorException, Exception { SimpleOutputFormater.logger.trace("Constructor"); SimpleOutputFormater.logger.debug("Output format : " + sOutputFormat + "."); SimpleOutputFormater.logger.debug("Output language : " + sLang + "."); this.sOutputFormat = sOutputFormat; this.sLang = sLang; } /* * (non-Javadoc) * * @see org.w3c.unicorn.output.OutputFormater#produceOutput(java.util.Map, * java.io.Writer) */ public void produceOutput(final Map<String, Object> mapOfStringObject, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception { if (Framework.getLanguageContexts().get(sLang) != null) { aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(sLang)); } else { aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(Property.get("DEFAULT_LANGUAGE"))); } SimpleOutputFormater.logger.trace("produceOutput"); SimpleOutputFormater.logger.debug("Map of String -> Object : " + mapOfStringObject + "."); SimpleOutputFormater.logger.debug("Writer : " + aWriter + "."); for (final String sObjectName : mapOfStringObject.keySet()) { aVelocityContext.put(sObjectName, mapOfStringObject .get(sObjectName)); } Templates.write(sOutputFormat + ".vm", aVelocityContext, aWriter); aWriter.close(); } /* * (non-Javadoc) * * @see org.w3c.unicorn.output.OutputFormater#produceError(java.lang.Exception, * java.io.Writer) */ public void produceError(final Exception aException, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception { if (Framework.getLanguageContexts().get(sLang) != null) { aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(sLang)); } else { aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(Property.get("DEFAULT_LANGUAGE"))); } SimpleOutputFormater.logger.trace("produceError"); SimpleOutputFormater.logger.debug("Error : " + aException.getMessage() + "."); SimpleOutputFormater.logger.debug("Writer : " + aWriter + "."); if (aException != null) aVelocityContext.put("error", aException); Templates.write(sOutputFormat + ".error.vm", aVelocityContext, aWriter); aWriter.close(); } } --- NEW FILE: XMLOutputFormater.java --- // $Id: XMLOutputFormater.java,v 1.2 2009/08/28 12:40:06 jean-gui Exp $ // Author: Damien LEROY. // (c) COPYRIGHT MIT, ERCIM ant Keio, 2006. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.unicorn.output; import java.io.Writer; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.event.EventCartridge; import org.apache.velocity.app.event.implement.EscapeXmlReference; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; import org.w3c.unicorn.Framework; import org.w3c.unicorn.util.Property; import org.w3c.unicorn.util.Templates; import org.w3c.unicorn.util.XHTMLize; /** * Class for XML output formater. * * @author Jean-Guilhem ROUEL */ public class XMLOutputFormater implements OutputFormater { /** * Object used for complex logging purpose */ private static final Log logger = LogFactory.getLog(XMLOutputFormater.class); /** * Apache velocity context */ private static VelocityContext aVelocityContext; private String sOutputFormat; private String sLang; /** * Write the result of the XML in a file * * @param sOutputFormat * format of the output * @param sLang * Language of the output * @throws ResourceNotFoundException * exception when resources not found using the path * @throws ParseErrorException * error in the parser * @throws Exception * odd error occur */ public XMLOutputFormater(final String sOutputFormat, final String sLang) throws ResourceNotFoundException, ParseErrorException, Exception { XMLOutputFormater.logger.trace("Constructor"); XMLOutputFormater.logger.debug("Output format : " + sOutputFormat + "."); XMLOutputFormater.logger.debug("Output language : " + sLang + "."); this.sOutputFormat = sOutputFormat; this.sLang = sLang; } /* * (non-Javadoc) * * @see org.w3c.unicorn.output.OutputFormater#produceOutput(java.util.Map, * java.io.Writer) */ public void produceOutput(final Map<String, Object> mapOfStringObject, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception { if (Framework.getLanguageContexts().get(sLang) != null) { aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(sLang)); } else { logger.debug("Context for " + sLang + " doesn't exist."); aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(Property.get("DEFAULT_LANGUAGE"))); } XMLOutputFormater.logger.trace("produceOutput"); XMLOutputFormater.logger.debug("Map of String -> Object : " + mapOfStringObject + "."); XMLOutputFormater.logger.debug("Writer : " + aWriter + "."); final EventCartridge aEventCartridge = new EventCartridge(); aEventCartridge.addEventHandler(new XHTMLize()); aEventCartridge.attachToContext(aVelocityContext); for (final String sObjectName : mapOfStringObject.keySet()) { aVelocityContext.put(sObjectName, mapOfStringObject .get(sObjectName)); } Templates.write(sOutputFormat + ".vm", aVelocityContext, aWriter); aWriter.close(); } /* * (non-Javadoc) * * @see org.w3c.unicorn.output.OutputFormater#produceError(java.lang.Exception, * java.io.Writer) */ public void produceError(final Exception aException, final Writer aWriter) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, Exception { if (Framework.getLanguageContexts().get(sLang) != null) { aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(sLang)); } else { logger.debug("Context for " + sLang + " doesn't exist."); aVelocityContext = new VelocityContext(Framework.getLanguageContexts().get(Property.get("DEFAULT_LANGUAGE"))); } XMLOutputFormater.logger.trace("produceError"); XMLOutputFormater.logger.debug("Error : " + aException + "."); XMLOutputFormater.logger.debug("Writer : " + aWriter + "."); final EventCartridge aEventCartridge = new EventCartridge(); aEventCartridge.addEventHandler(new XHTMLize()); aEventCartridge.attachToContext(aVelocityContext); aVelocityContext.put("error", aException); Templates.write(sOutputFormat + ".error.vm", aVelocityContext, aWriter); aWriter.close(); } }
Received on Friday, 28 August 2009 12:40:19 UTC