package com.cloudera.sa.hcu.io.route.scheduler.thread; import java.io.File; import java.util.Properties; import java.util.Map.Entry; import com.cloudera.sa.hcu.io.put.Putter; import com.cloudera.sa.hcu.io.put.hdfs.writer.AbstractWriter; import com.cloudera.sa.hcu.io.put.listener.PutListener; import com.cloudera.sa.hcu.io.put.local.reader.AbstractLocalFileColumnReader; public class PutExecutionThread implements Runnable { Properties p; PutListener listener; File sourceFile; PutExecuterObserver observer; public PutExecutionThread(File sourceFile, Properties p, PutListener listener, PutExecuterObserver observer) { Properties pClone = (Properties)p.clone(); pClone.setProperty(AbstractLocalFileColumnReader.CONF_INPUT_PATHS, sourceFile.getAbsolutePath()); pClone.setProperty(AbstractWriter.CONF_OUTPUT_PATH, p.getProperty(AbstractWriter.CONF_OUTPUT_PATH) + "/" + sourceFile.getName()); this.sourceFile = sourceFile; this.p = pClone; this.listener = listener; this.observer = observer; } public void run() { try { Putter put = new Putter(); put.addListener(listener); put.put(p); observer.onPutSuccess(sourceFile); }catch(Exception e) { for (Entry<Object, Object> e1: p.entrySet()) { System.out.println(e1.getKey() + "-" + e1.getValue()); } e.printStackTrace(); observer.onPutFailure(sourceFile); throw new RuntimeException(e); } } }