Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package pt.webdetails.cda.exporter;
  
  import java.io.File;
  import java.util.Calendar;
 import java.util.List;
 import java.util.UUID;
 
 import  org.apache.commons.io.IOUtils;
 import  org.apache.commons.logging.Log;
 import  org.apache.commons.logging.LogFactory;
 import  org.pentaho.di.core.exception.KettleException;
 import  org.pentaho.di.core.util.StringUtil;
 
 import  plugins.org.pentaho.di.robochef.kettle.DynamicTransConfig;
 import  plugins.org.pentaho.di.robochef.kettle.DynamicTransMetaConfig;
 import  plugins.org.pentaho.di.robochef.kettle.DynamicTransformation;
 import  plugins.org.pentaho.di.robochef.kettle.RowProductionManager;
 import  plugins.org.pentaho.di.robochef.kettle.TableModelInput;

Generic Kettle class to handle exports User: pedro Date: Mar 12, 2010 Time: 3:01:27 PM
 
 public abstract class AbstractKettleExporter implements Exporter, RowProductionManager
 {
 
   private static final Log logger = LogFactory.getLog(AbstractKettleExporter.class);
 
   protected ExecutorService executorService = Executors.newCachedThreadPool();
 
   private SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMddHHmmssZ");
   private String filename;
   
   private static long DEFAULT_ROW_PRODUCTION_TIMEOUT = 120;
 
 
   public void startRowProduction()
   {
     String timeoutStr = CdaBoot.getInstance().getGlobalConfig().getConfigProperty("pt.webdetails.cda.DefaultRowProductionTimeout");
     long timeout = StringUtil.isEmpty(timeoutStr)?  : Long.parseLong(timeoutStr);
     String unitStr = CdaBoot.getInstance().getGlobalConfig().getConfigProperty("pt.webdetails.cda.DefaultRowProductionTimeoutTimeUnit");
     TimeUnit unit = StringUtil.isEmpty(unitStr)?  : TimeUnit.valueOf(unitStr);
     startRowProduction(timeoutunit);
   }
 
 
   public void startRowProduction(long timeoutTimeUnit unit)
   {
     try
     {
       List<Future<Boolean>> results = .invokeAll(timeoutunit);
       for (Future<Booleanresult : results)
       {
         result.get();
       }
     }
     catch (InterruptedException e)
     {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
     catch (ExecutionException e)
     {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
   }
 
 
   public void export(final OutputStream outfinal TableModel tableModelthrows ExporterException
   {
     TableModel output = null;
     .clear();
 
     try
     {
 
       final DynamicTransMetaConfig transMetaConfig = new DynamicTransMetaConfig(DynamicTransMetaConfig.Type.EMPTY, "Exporter"nullnull);
       final DynamicTransConfig transConfig = new DynamicTransConfig();
 
      transConfig.addConfigEntry(DynamicTransConfig.EntryType.STEP, "input""<step><name>input</name><type>Injector</type></step>");
      transConfig.addConfigEntry(DynamicTransConfig.EntryType.STEP, "export"getExportStepDefinition("export"));
      transConfig.addConfigEntry(DynamicTransConfig.EntryType.HOP, "input""export");
      TableModelInput input = new TableModelInput();
      transConfig.addInput("input"input);
      .add(input.getCallableRowProducer(tableModeltrue));
      RowMetaToTableModel outputListener = new RowMetaToTableModel(falsetruefalse);
      transConfig.addOutput("export"outputListener);
      DynamicTransformation trans = new DynamicTransformation(transConfigtransMetaConfig);
      trans.executeCheckedSuccess(nullnullthis);
      .info(trans.getReadWriteThroughput());
      copyFileToOutputStream(out);
      // Transformation executed ok, lets return the file
      output = outputListener.getRowsWritten();
    }
    catch (KettleException e)
    {
      throw new ExporterException("Kettle exception during " + getType() + " query "e);
    }
    catch (Exception e)
    {
      throw new ExporterException("Unknown exception during " + getType() + " query "e);
    }
  }
  protected String getFileName()
  {
     = "pentaho-cda-" + getType() + "-" + .format(Calendar.getInstance().getTime()) + "-" + UUID.randomUUID().toString();
    return ;
  }
  private void copyFileToOutputStream(OutputStream osthrows IOException
  {
    
    File file = new File(System.getProperty("java.io.tmpdir") + . +  + "." + getType());
    FileInputStream is = new FileInputStream(file);
    try{
      IOUtils.copy(isos);
    } 
    finally {
      IOUtils.closeQuietly(is);
    }
    // temp file not needed anymore - delete it
    file.delete();
  }
  protected abstract String getExportStepDefinition(String name);
  public abstract String getMimeType();
  public abstract String getType();
New to GrepCode? Check out our FAQ X