[virtualcommons-svn] SF.net SVN: virtualcommons:[428] csidex/trunk
Status: Beta
Brought to you by:
alllee
From: <al...@us...> - 2010-01-14 06:30:40
|
Revision: 428 http://virtualcommons.svn.sourceforge.net/virtualcommons/?rev=428&view=rev Author: alllee Date: 2010-01-14 06:30:33 +0000 (Thu, 14 Jan 2010) Log Message: ----------- adding freemarker dependency and starting to implement freemarker support for experiment and round configuration Modified Paths: -------------- csidex/trunk/ivy.xml csidex/trunk/pom.xml csidex/trunk/src/main/java/edu/asu/commons/conf/ConfigurationAssistant.java csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentConfiguration.java csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentRoundParameters.java Modified: csidex/trunk/ivy.xml =================================================================== --- csidex/trunk/ivy.xml 2010-01-12 21:42:47 UTC (rev 427) +++ csidex/trunk/ivy.xml 2010-01-14 06:30:33 UTC (rev 428) @@ -5,9 +5,10 @@ <ivy-module version="2.0"> <info organisation="edu.asu.commons" module="csidex"/> <dependencies> - <dependency org='junit' name='junit' rev='4.4'/> + <dependency org='org.freemarker' name='freemarker' rev='4.5'/> + <dependency org='junit' name='junit' rev='4.5'/> <dependency org='xpp3' name='xpp3' rev='1.1.4c'/> - <dependency org='com.thoughtworks.xstream' name='xstream' rev='1.3'/> + <dependency org='com.thoughtworks.xstream' name='xstream' rev='1.3.1'/> </dependencies> </ivy-module> Modified: csidex/trunk/pom.xml =================================================================== --- csidex/trunk/pom.xml 2010-01-12 21:42:47 UTC (rev 427) +++ csidex/trunk/pom.xml 2010-01-14 06:30:33 UTC (rev 428) @@ -41,6 +41,11 @@ </repositories> <dependencies> <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + <version>2.3.16</version> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.5</version> Modified: csidex/trunk/src/main/java/edu/asu/commons/conf/ConfigurationAssistant.java =================================================================== --- csidex/trunk/src/main/java/edu/asu/commons/conf/ConfigurationAssistant.java 2010-01-12 21:42:47 UTC (rev 427) +++ csidex/trunk/src/main/java/edu/asu/commons/conf/ConfigurationAssistant.java 2010-01-14 06:30:33 UTC (rev 428) @@ -3,9 +3,15 @@ import java.io.IOException; import java.io.InputStream; import java.io.Serializable; +import java.io.StringWriter; import java.util.Properties; import edu.asu.commons.util.ResourceLoader; +import freemarker.cache.StringTemplateLoader; +import freemarker.template.Configuration; +import freemarker.template.DefaultObjectWrapper; +import freemarker.template.Template; +import freemarker.template.TemplateException; /** * $Id$ @@ -22,12 +28,19 @@ private final Properties properties; + private final Configuration freemarkerConfiguration; + private final StringTemplateLoader templateLoader; + public ConfigurationAssistant() { this(new Properties()); } public ConfigurationAssistant(Properties properties) { this.properties = properties; + this.freemarkerConfiguration = new Configuration(); + this.templateLoader = new StringTemplateLoader(); + freemarkerConfiguration.setObjectWrapper(new DefaultObjectWrapper()); + freemarkerConfiguration.setTemplateLoader(templateLoader); } public Properties getProperties() { @@ -47,6 +60,27 @@ } } + public void addTemplate(String templateName, String templateSource) { + templateLoader.putTemplate(templateName, templateSource); + } + + public String transform(String templateName, Object data) { + try { + Template template = freemarkerConfiguration.getTemplate(templateName); + StringWriter writer = new StringWriter(); + template.process(data, writer); + return writer.toString(); + } + catch (IOException exception) { + exception.printStackTrace(); + } + catch (TemplateException exception) { + exception.printStackTrace(); + } + return ""; + } + + public String getProperty(String key) { return getStringProperty(key, ""); } Modified: csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentConfiguration.java =================================================================== --- csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentConfiguration.java 2010-01-12 21:42:47 UTC (rev 427) +++ csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentConfiguration.java 2010-01-14 06:30:33 UTC (rev 428) @@ -9,11 +9,15 @@ * $Id$ * * All experiment server configurations should follow this contract. + * + * FIXME: properly genericize ExperimentRoundParameters circular types... + * something like + * ExperimentConfiguration<T extends ExperimentRoundParameters<this-type>> * * @author <a href='mailto:All...@as...'>Allen Lee</a> * @version $Revision$ */ - +@SuppressWarnings("unchecked") public interface ExperimentConfiguration<T extends ExperimentRoundParameters> extends Serializable { public List<T> getAllParameters(); @@ -86,7 +90,12 @@ loadServerProperties(); } - protected abstract E createConfiguration(String roundConfigurationResource); + @Deprecated + protected E createConfiguration(String roundConfigurationResource) { + return createRoundConfiguration(roundConfigurationResource); + } + + protected abstract E createRoundConfiguration(String roundConfigurationResource); /** * Override if you want to use a different server configuration file. */ @@ -104,10 +113,10 @@ for (int roundNumber = 0; roundNumber < getNumberOfRounds(); roundNumber++) { String roundConfigurationResource = getConfigurationDirectory() + getRoundParametersFile(roundNumber); if (roundConfigurationResource == null || "".equals(roundConfigurationResource)) { - System.err.println("invalid experiment: " + roundNumber); + System.err.println("no round configuration available: " + roundNumber); continue; } - E configuration = createConfiguration(roundConfigurationResource); + E configuration = createRoundConfiguration(roundConfigurationResource); configuration.setParentConfiguration(this); allParameters.add(configuration); } @@ -190,6 +199,10 @@ String persistenceType = assistant.getStringProperty("persistence-type", "ALL"); return PersistenceType.valueOf(persistenceType); } + + public String getTemplate(String templateName) { + return assistant.transform(templateName, this); + } } Modified: csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentRoundParameters.java =================================================================== --- csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentRoundParameters.java 2010-01-12 21:42:47 UTC (rev 427) +++ csidex/trunk/src/main/java/edu/asu/commons/conf/ExperimentRoundParameters.java 2010-01-14 06:30:33 UTC (rev 428) @@ -141,5 +141,9 @@ public boolean isLastRound() { return parentConfiguration.isLastRound(); } + + public String getTemplate(String templateName) { + return assistant.transform(templateName, this); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |