Package com.dp.nebula.wormhole.engine.core

Source Code of com.dp.nebula.wormhole.engine.core.WriterThread

package com.dp.nebula.wormhole.engine.core;

import java.util.concurrent.Callable;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.dp.nebula.wormhole.common.JobStatus;
import com.dp.nebula.wormhole.common.WormholeException;
import com.dp.nebula.wormhole.common.interfaces.ILineReceiver;
import com.dp.nebula.wormhole.common.interfaces.IParam;
import com.dp.nebula.wormhole.common.interfaces.IPluginMonitor;
import com.dp.nebula.wormhole.common.interfaces.IWriter;
import com.dp.nebula.wormhole.engine.utils.JarLoader;
import com.dp.nebula.wormhole.engine.utils.ReflectionUtil;

final class WriterThread implements Callable<Integer>{
 
  private static final Log s_logger = LogFactory.getLog(WriterThread.class);

  private IWriter writer;
  private ILineReceiver lineReceiver;
 
  public static WriterThread getInstance(ILineReceiver lineReceiver, IParam param, String writerClassName,
      String writerPath, IPluginMonitor pm){
    try{
      IWriter writer = ReflectionUtil.createInstanceByDefaultConstructor(
          writerClassName, IWriter.class,
          JarLoader.getInstance(new String[]{writerPath}));
      writer.setParam(param);
      writer.setMonitor(pm);
      return new WriterThread(lineReceiver, writer);
    } catch(Exception e){
      s_logger.error("Error to create WriterThread: ", e);
      return null;
    }
   
  }

  private WriterThread(ILineReceiver lineReceiver, IWriter writer) {
    super();
    this.lineReceiver = lineReceiver;
    this.writer = writer;
  }

  @Override
  public Integer call() throws Exception {
    try{
      writer.init();
      writer.connection();
      writer.write(lineReceiver);
      writer.commit();
      writer.finish();
      return JobStatus.SUCCESS.getStatus();
    } catch(WormholeException e){
      s_logger.error("Exception occurs in writer thread!", e);
      return e.getStatusCode();
    } catch(Exception e){
      s_logger.error("Exception occurs in writer thread!", e);
      return JobStatus.FAILED.getStatus();
    }
  }

}
TOP

Related Classes of com.dp.nebula.wormhole.engine.core.WriterThread

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.