use of com.revolsys.beans.propertyeditor.ResourceEditorRegistrar in project com.revolsys.open by revolsys.
the class ScriptExecutorRunnable method runDo.
@Override
public void runDo() {
final long startTime = System.currentTimeMillis();
try {
String logPath = null;
final String logFileName = (String) this.attributes.get("logFile");
if (logFileName != null && logFileName.trim().length() > 0) {
final File logFile = new File(logFileName);
final File parentFile = logFile.getParentFile();
if (parentFile != null) {
parentFile.mkdirs();
}
logPath = logFile.getAbsolutePath();
ThreadLocalFileAppender.getAppender().setLocalFile(logPath);
}
if (this.logScriptInfo) {
final StringBuilder message = new StringBuilder("Processing ");
message.append(" -s ");
message.append(this.script);
if (logPath != null) {
message.append(" -l ");
message.append(logPath);
}
for (final Entry<String, Object> parameter : this.attributes.entrySet()) {
message.append(" ");
message.append(parameter.getKey());
message.append("=");
message.append(parameter.getValue());
}
Logs.info(this, message.toString());
}
ThreadSharedProperties.setProperties(this.attributes);
final GenericApplicationContext applicationContext = new GenericApplicationContext();
applicationContext.getBeanFactory().addPropertyEditorRegistrar(new ResourceEditorRegistrar());
for (final Entry<String, Object> entry : this.beans.entrySet()) {
final String key = entry.getKey();
if (key.indexOf('.') == -1 && key.indexOf('[') == -1) {
final Object value = entry.getValue();
final GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
beanDefinition.setBeanClass(Parameter.class);
final MutablePropertyValues propertyValues = beanDefinition.getPropertyValues();
propertyValues.add("type", value.getClass());
propertyValues.add("value", value);
applicationContext.registerBeanDefinition(key, beanDefinition);
}
}
final XmlBeanDefinitionReader beanReader = new XmlBeanDefinitionReader(applicationContext);
if (new File(this.script).exists()) {
beanReader.loadBeanDefinitions("file:" + this.script);
} else {
beanReader.loadBeanDefinitions("classpath:" + this.script);
}
applicationContext.refresh();
try {
final Object bean = applicationContext.getBean("processNetwork");
final ProcessNetwork pipeline = (ProcessNetwork) bean;
pipeline.startAndWait();
} finally {
applicationContext.close();
System.gc();
}
} catch (final BeanCreationException e) {
final Throwable cause = getBeanExceptionCause(e);
Logs.error(this, cause.getMessage(), cause);
System.err.println(cause.getMessage());
System.err.flush();
} catch (final Throwable t) {
Logs.error(this, t.getMessage(), t);
}
if (this.logScriptInfo) {
final long endTime = System.currentTimeMillis();
final long time = endTime - startTime;
long seconds = time / 1000;
final long minutes = seconds / 60;
seconds = seconds % 60;
Logs.info(this, minutes + " minutes " + seconds + " seconds");
}
}
use of com.revolsys.beans.propertyeditor.ResourceEditorRegistrar in project com.revolsys.open by revolsys.
the class ScriptTool method run.
private void run() {
final long startTime = System.currentTimeMillis();
final ThreadLocalFileAppender localAppender = ThreadLocalFileAppender.getAppender();
if (localAppender != null && this.logFile != null) {
final File parentFile = this.logFile.getParentFile();
if (parentFile != null) {
parentFile.mkdirs();
}
localAppender.setLocalFile(this.logFile.getAbsolutePath());
} else if (this.logFile != null) {
final org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
try {
final Layout layout = new PatternLayout("%d\t%p\t%m%n");
final Appender appender = new FileAppender(layout, this.logFile.getAbsolutePath(), false);
rootLogger.addAppender(appender);
} catch (final IOException e) {
final Layout layout = new PatternLayout("%p\t%m%n");
final Appender appender = new ConsoleAppender(layout);
rootLogger.addAppender(appender);
Logs.error(this, "Cannot find log file " + this.logFile, e);
}
}
final StringBuilder message = new StringBuilder("Processing ");
message.append(" -s ");
message.append(this.scriptFileName);
if (this.propertiesName != null) {
message.append(" -p ");
message.append(this.propertiesName);
}
for (final Entry<String, String> parameter : this.parameters.entrySet()) {
message.append(" ");
message.append(parameter.getKey());
message.append("=");
message.append(parameter.getValue());
}
System.out.println(message);
if (System.getProperty("applicationHome") == null) {
ThreadSharedProperties.setProperty("applicationHome", ".");
System.setProperty("applicationHome", ".");
}
try {
final GenericApplicationContext beans = new GenericApplicationContext();
AnnotationConfigUtils.registerAnnotationConfigProcessors(beans, null);
beans.getBeanFactory().addPropertyEditorRegistrar(new ResourceEditorRegistrar());
if (this.scriptFile != null) {
new XmlBeanDefinitionReader(beans).loadBeanDefinitions("file:" + this.scriptFile.getAbsolutePath());
} else {
new XmlBeanDefinitionReader(beans).loadBeanDefinitions("classpath:" + this.scriptFileName);
}
beans.refresh();
try {
Logs.info(this, message.toString());
final Object bean = beans.getBean("processNetwork");
final ProcessNetwork pipeline = (ProcessNetwork) bean;
pipeline.startAndWait();
} finally {
beans.close();
}
} catch (final BeanCreationException e) {
final Throwable cause = getBeanExceptionCause(e);
Logs.error(this, cause.getMessage(), cause);
cause.printStackTrace();
System.err.flush();
}
final long endTime = System.currentTimeMillis();
final long time = endTime - startTime;
long seconds = time / 1000;
final long minutes = seconds / 60;
seconds = seconds % 60;
Logs.info(this, minutes + " minutes " + seconds + " seconds");
System.out.println(minutes + " minutes " + seconds + " seconds");
}
Aggregations