Search in sources :

Example 1 with ProcessNetwork

use of com.revolsys.parallel.process.ProcessNetwork in project com.revolsys.open by revolsys.

the class ProcessorPipelineTool method processFile.

private void processFile(final File sourceFile, final File targetFile, final File logFile) {
    final long startTime = System.currentTimeMillis();
    if (this.excludePattern != null) {
        try {
            if (sourceFile.getCanonicalPath().matches(this.excludePattern)) {
                return;
            }
        } catch (final IOException e) {
            log.error(e.getMessage(), e);
        }
    }
    final ThreadLocalFileAppender localAppender = ThreadLocalFileAppender.getAppender();
    if (localAppender != null) {
        final File parentFile = logFile.getParentFile();
        if (parentFile != null) {
            parentFile.mkdirs();
        }
        localAppender.setLocalFile(logFile.getAbsolutePath());
    }
    log.info("Processing file '" + sourceFile + "' to '" + targetFile + "'");
    System.out.println("Processing file '" + sourceFile + "' to '" + targetFile + "'");
    System.setProperty("sourceFile", sourceFile.getAbsolutePath());
    System.setProperty("targetFile", targetFile.getAbsolutePath());
    final BeanFactory beans = new FileSystemXmlApplicationContext("file:" + this.scriptFile.getAbsolutePath());
    try {
        final File parentFile = targetFile.getParentFile();
        if (parentFile != null) {
            parentFile.mkdirs();
        }
        final Object bean = beans.getBean("pipeline");
        final ProcessNetwork pipeline = (ProcessNetwork) bean;
        pipeline.startAndWait();
    } catch (final BeanCreationException e) {
        final Throwable cause = getBeanExceptionCause(e);
        cause.printStackTrace();
    }
    final long endTime = System.currentTimeMillis();
    final long time = endTime - startTime;
    long seconds = time / 1000;
    final long minutes = seconds / 60;
    seconds = seconds % 60;
    log.info(minutes + " minutes " + seconds + " seconds");
    System.out.println(minutes + " minutes " + seconds + " seconds");
}
Also used : FileSystemXmlApplicationContext(org.springframework.context.support.FileSystemXmlApplicationContext) BeanCreationException(org.springframework.beans.factory.BeanCreationException) ThreadLocalFileAppender(com.revolsys.logging.log4j.ThreadLocalFileAppender) ProcessNetwork(com.revolsys.parallel.process.ProcessNetwork) BeanFactory(org.springframework.beans.factory.BeanFactory) IOException(java.io.IOException) File(java.io.File)

Example 2 with ProcessNetwork

use of com.revolsys.parallel.process.ProcessNetwork 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");
    }
}
Also used : BeanCreationException(org.springframework.beans.factory.BeanCreationException) ResourceEditorRegistrar(com.revolsys.beans.propertyeditor.ResourceEditorRegistrar) XmlBeanDefinitionReader(org.springframework.beans.factory.xml.XmlBeanDefinitionReader) ProcessNetwork(com.revolsys.parallel.process.ProcessNetwork) GenericBeanDefinition(org.springframework.beans.factory.support.GenericBeanDefinition) GenericApplicationContext(org.springframework.context.support.GenericApplicationContext) MutablePropertyValues(org.springframework.beans.MutablePropertyValues) File(java.io.File)

Example 3 with ProcessNetwork

use of com.revolsys.parallel.process.ProcessNetwork 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");
}
Also used : Appender(org.apache.log4j.Appender) ThreadLocalFileAppender(com.revolsys.logging.log4j.ThreadLocalFileAppender) ConsoleAppender(org.apache.log4j.ConsoleAppender) FileAppender(org.apache.log4j.FileAppender) ThreadLocalFileAppender(com.revolsys.logging.log4j.ThreadLocalFileAppender) FileAppender(org.apache.log4j.FileAppender) ConsoleAppender(org.apache.log4j.ConsoleAppender) BeanCreationException(org.springframework.beans.factory.BeanCreationException) ResourceEditorRegistrar(com.revolsys.beans.propertyeditor.ResourceEditorRegistrar) XmlBeanDefinitionReader(org.springframework.beans.factory.xml.XmlBeanDefinitionReader) PatternLayout(org.apache.log4j.PatternLayout) ProcessNetwork(com.revolsys.parallel.process.ProcessNetwork) IOException(java.io.IOException) ThreadLocalFileAppender(com.revolsys.logging.log4j.ThreadLocalFileAppender) GenericApplicationContext(org.springframework.context.support.GenericApplicationContext) Layout(org.apache.log4j.Layout) PatternLayout(org.apache.log4j.PatternLayout) File(java.io.File)

Aggregations

ProcessNetwork (com.revolsys.parallel.process.ProcessNetwork)3 File (java.io.File)3 BeanCreationException (org.springframework.beans.factory.BeanCreationException)3 ResourceEditorRegistrar (com.revolsys.beans.propertyeditor.ResourceEditorRegistrar)2 ThreadLocalFileAppender (com.revolsys.logging.log4j.ThreadLocalFileAppender)2 IOException (java.io.IOException)2 XmlBeanDefinitionReader (org.springframework.beans.factory.xml.XmlBeanDefinitionReader)2 GenericApplicationContext (org.springframework.context.support.GenericApplicationContext)2 Appender (org.apache.log4j.Appender)1 ConsoleAppender (org.apache.log4j.ConsoleAppender)1 FileAppender (org.apache.log4j.FileAppender)1 Layout (org.apache.log4j.Layout)1 PatternLayout (org.apache.log4j.PatternLayout)1 MutablePropertyValues (org.springframework.beans.MutablePropertyValues)1 BeanFactory (org.springframework.beans.factory.BeanFactory)1 GenericBeanDefinition (org.springframework.beans.factory.support.GenericBeanDefinition)1 FileSystemXmlApplicationContext (org.springframework.context.support.FileSystemXmlApplicationContext)1