package it.dontesta.lab.jobs.kettle; import org.pentaho.di.core.KettleEnvironment; import org.pentaho.di.core.logging.LogChannel; import org.pentaho.di.core.logging.LogChannelInterface; import org.pentaho.di.core.plugins.PluginRegistry; import org.pentaho.di.core.plugins.RepositoryPluginType; import org.pentaho.di.job.Job; import org.pentaho.di.job.JobMeta; import org.pentaho.di.repository.RepositoriesMeta; import org.pentaho.di.repository.Repository; import org.pentaho.di.repository.RepositoryDirectoryInterface; import org.pentaho.di.repository.RepositoryMeta; /** * @author amusarra */ public class ExecuteGenericJob { public static final String STRING_LOG = "ExecuteGenericJob"; public static void main(String[] args) throws Exception { LogChannelInterface log = new LogChannel(STRING_LOG); String filename = args[0]; KettleEnvironment.init(); RepositoriesMeta repositoriesMeta = new RepositoriesMeta(); repositoriesMeta.readData(); RepositoryMeta repositoryMeta = repositoriesMeta.findRepository("1"); PluginRegistry registry = PluginRegistry.getInstance(); Repository repository = registry.loadClass(RepositoryPluginType.class, repositoryMeta, Repository.class); log.logBasic("Repository Description: " + repositoryMeta.getDescription()); repository.init(repositoryMeta); repository.connect("admin", "admin"); RepositoryDirectoryInterface directory = repository .loadRepositoryDirectoryTree(); directory = directory.findDirectory("ShirusKettleDirectory"); JobMeta jobMeta = new JobMeta(); jobMeta = repository.loadJob(filename, directory, null, null); log.logBasic("JobMeta Description: " + jobMeta.getDescription()); log.logBasic("JobMeta Version: " + jobMeta.getJobversion()); log.logBasic("JobMeta Modify Date: " + jobMeta.getModifiedDate()); log.logBasic("JobMeta Id: " + jobMeta.getObjectId().getId()); Job job = new Job(repository, jobMeta); log.logBasic("Job Name: " + job.getJobname()); job.start(); job.waitUntilFinished(); if (job.getErrors() != 0) { log.logError("Job Error: " + job.getErrors()); log.logError("Error encountered!"); } } }