use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.
the class JobEntrySuccess method execute.
/**
* Execute this job entry and return the result. In this case it means, just set the result boolean in the Result
* class.
*
* @param previousResult
* The result of the previous execution
* @return The Result of the execution.
*/
public Result execute(Result previousResult, int nr) {
Result result = previousResult;
result.setNrErrors(0);
result.setResult(true);
return result;
}
use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.
the class JobEntryTableExists method execute.
public Result execute(Result previousResult, int nr) {
Result result = previousResult;
result.setResult(false);
if (connection != null) {
Database db = new Database(this, connection);
db.shareVariablesWith(this);
try {
db.connect(parentJob.getTransactionId(), null);
String realTablename = environmentSubstitute(tablename);
String realSchemaname = environmentSubstitute(schemaname);
if (!Utils.isEmpty(realSchemaname)) {
realTablename = db.getDatabaseMeta().getQuotedSchemaTableCombination(realSchemaname, realTablename);
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "TableExists.Log.SchemaTable", realTablename));
}
} else {
realTablename = db.getDatabaseMeta().quoteField(realTablename);
}
if (db.checkTableExists(realTablename)) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "TableExists.Log.TableExists", realTablename));
}
result.setResult(true);
} else {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "TableExists.Log.TableNotExists", realTablename));
}
}
} catch (KettleDatabaseException dbe) {
result.setNrErrors(1);
logError(BaseMessages.getString(PKG, "TableExists.Error.RunningJobEntry", dbe.getMessage()));
} finally {
if (db != null) {
try {
db.disconnect();
} catch (Exception e) {
/* Ignore */
}
}
}
} else {
result.setNrErrors(1);
logError(BaseMessages.getString(PKG, "TableExists.Error.NoConnectionDefined"));
}
return result;
}
use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.
the class JobEntryTelnet method execute.
public Result execute(Result previousResult, int nr) {
Result result = previousResult;
result.setNrErrors(1);
result.setResult(false);
String hostname = getRealHostname();
int port = Const.toInt(getRealPort(), DEFAULT_PORT);
int timeoutInt = Const.toInt(getRealTimeOut(), -1);
if (Utils.isEmpty(hostname)) {
// No Host was specified
logError(BaseMessages.getString(PKG, "JobTelnet.SpecifyHost.Label"));
return result;
}
try {
SocketUtil.connectToHost(hostname, port, timeoutInt);
if (isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobTelnet.OK.Label", hostname, port));
}
result.setNrErrors(0);
result.setResult(true);
} catch (Exception ex) {
logError(BaseMessages.getString(PKG, "JobTelnet.NOK.Label", hostname, String.valueOf(port)));
logError(BaseMessages.getString(PKG, "JobTelnet.Error.Label") + ex.getMessage());
}
return result;
}
use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.
the class JobEntryEvalFilesMetrics method execute.
public Result execute(Result previousResult, int nr) throws KettleException {
Result result = previousResult;
result.setNrErrors(1);
result.setResult(false);
List<RowMetaAndData> rows = result.getRows();
RowMetaAndData resultRow = null;
// Set Embedded NamedCluter MetatStore Provider Key so that it can be passed to VFS
if (parentJobMeta.getNamedClusterEmbedManager() != null) {
parentJobMeta.getNamedClusterEmbedManager().passEmbeddedMetastoreKey(this, parentJobMeta.getEmbeddedMetastoreProviderKey());
}
try {
initMetrics();
} catch (Exception e) {
logError(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Error.Init", e.toString()));
return result;
}
// Get source and destination files, also wildcard
String[] vsourcefilefolder = sourceFileFolder;
String[] vwildcard = sourceWildcard;
String[] vincludeSubFolders = sourceIncludeSubfolders;
switch(getSourceFiles()) {
case SOURCE_FILES_PREVIOUS_RESULT:
// Filenames are retrieved from previous result rows
String realResultFieldFile = environmentSubstitute(getResultFieldFile());
String realResultFieldWildcard = environmentSubstitute(getResultFieldWildcard());
String realResultFieldIncluseSubfolders = environmentSubstitute(getResultFieldIncludeSubfolders());
int indexOfResultFieldFile = -1;
if (Utils.isEmpty(realResultFieldFile)) {
logError(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Error.ResultFieldsFileMissing"));
return result;
}
int indexOfResultFieldWildcard = -1;
int indexOfResultFieldIncludeSubfolders = -1;
// as such we must get rows
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Log.ArgFromPrevious.Found", (rows != null ? rows.size() : 0) + ""));
}
if (rows != null && rows.size() > 0) {
// We get rows
RowMetaAndData firstRow = rows.get(0);
indexOfResultFieldFile = firstRow.getRowMeta().indexOfValue(realResultFieldFile);
if (indexOfResultFieldFile == -1) {
logError(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Error.CanNotFindField", realResultFieldFile));
return result;
}
if (!Utils.isEmpty(realResultFieldWildcard)) {
indexOfResultFieldWildcard = firstRow.getRowMeta().indexOfValue(realResultFieldWildcard);
if (indexOfResultFieldWildcard == -1) {
logError(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Error.CanNotFindField", realResultFieldWildcard));
return result;
}
}
if (!Utils.isEmpty(realResultFieldIncluseSubfolders)) {
indexOfResultFieldIncludeSubfolders = firstRow.getRowMeta().indexOfValue(realResultFieldIncluseSubfolders);
if (indexOfResultFieldIncludeSubfolders == -1) {
logError(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Error.CanNotFindField", realResultFieldIncluseSubfolders));
return result;
}
}
for (int iteration = 0; iteration < rows.size() && !parentJob.isStopped(); iteration++) {
resultRow = rows.get(iteration);
// Get source and destination file names, also wildcard
String vsourcefilefolder_previous = resultRow.getString(indexOfResultFieldFile, null);
String vwildcard_previous = null;
if (indexOfResultFieldWildcard > -1) {
vwildcard_previous = resultRow.getString(indexOfResultFieldWildcard, null);
}
String vincludeSubFolders_previous = NO;
if (indexOfResultFieldIncludeSubfolders > -1) {
vincludeSubFolders_previous = resultRow.getString(indexOfResultFieldIncludeSubfolders, NO);
}
if (isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Log.ProcessingRow", vsourcefilefolder_previous, vwildcard_previous));
}
ProcessFileFolder(vsourcefilefolder_previous, vwildcard_previous, vincludeSubFolders_previous, parentJob, result);
}
}
break;
case SOURCE_FILES_FILENAMES_RESULT:
List<ResultFile> resultFiles = result.getResultFilesList();
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Log.ResultFilenames.Found", (resultFiles != null ? resultFiles.size() : 0) + ""));
}
if (resultFiles != null && resultFiles.size() > 0) {
// Let's check wildcard
Pattern pattern = null;
String realPattern = environmentSubstitute(getResultFilenamesWildcard());
if (!Utils.isEmpty(realPattern)) {
pattern = Pattern.compile(realPattern);
}
for (Iterator<ResultFile> it = resultFiles.iterator(); it.hasNext() && !parentJob.isStopped(); ) {
ResultFile resultFile = it.next();
FileObject file = resultFile.getFile();
try {
if (file != null && file.exists()) {
boolean getIt = true;
if (pattern != null) {
Matcher matcher = pattern.matcher(file.getName().getBaseName());
getIt = matcher.matches();
}
if (getIt) {
getFileSize(file, result, parentJob);
}
}
} catch (Exception e) {
incrementErrors();
logError(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Error.GettingFileFromResultFilenames", file.toString(), e.toString()));
} finally {
if (file != null) {
try {
file.close();
} catch (Exception e) {
/* Ignore */
}
}
}
}
}
break;
default:
// from grid entered by user
if (vsourcefilefolder != null && vsourcefilefolder.length > 0) {
for (int i = 0; i < vsourcefilefolder.length && !parentJob.isStopped(); i++) {
if (isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Log.ProcessingRow", vsourcefilefolder[i], vwildcard[i]));
}
ProcessFileFolder(vsourcefilefolder[i], vwildcard[i], vincludeSubFolders[i], parentJob, result);
}
} else {
logError(BaseMessages.getString(PKG, "JobEvalFilesMetrics.Error.FilesGridEmpty"));
return result;
}
break;
}
result.setResult(isSuccess());
result.setNrErrors(getNrError());
displayResults();
return result;
}
use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.
the class JobEntryExportRepository method execute.
public Result execute(Result previousResult, int nr) {
Result result = previousResult;
result.setNrErrors(1);
result.setResult(false);
String realrepName = environmentSubstitute(repositoryname);
String realusername = environmentSubstitute(username);
String realpassword = Encr.decryptPasswordOptionallyEncrypted(environmentSubstitute(password));
String realfoldername = environmentSubstitute(directoryPath);
String realoutfilename = environmentSubstitute(targetfilename);
if (export_type.equals(Export_All) || export_type.equals(Export_Jobs) || export_type.equals(Export_Trans) || export_type.equals(Export_One_Folder)) {
realoutfilename = buildFilename(realoutfilename);
}
NrErrors = 0;
successConditionBroken = false;
limitErr = Const.toInt(environmentSubstitute(getNrLimit()), 10);
try {
file = KettleVFS.getFileObject(realoutfilename, this);
if (file.exists()) {
if (export_type.equals(Export_All) || export_type.equals(Export_Jobs) || export_type.equals(Export_Trans) || export_type.equals(Export_One_Folder)) {
if (iffileexists.equals(If_FileExists_Fail)) {
logError(BaseMessages.getString(PKG, "JobExportRepository.Log.Failing", realoutfilename));
return result;
} else if (iffileexists.equals(If_FileExists_Skip)) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.Exit", realoutfilename));
}
result.setResult(true);
result.setNrErrors(0);
return result;
} else if (iffileexists.equals(If_FileExists_Uniquename)) {
String parentFolder = KettleVFS.getFilename(file.getParent());
String shortFilename = file.getName().getBaseName();
shortFilename = buildUniqueFilename(shortFilename);
file = KettleVFS.getFileObject(parentFolder + Const.FILE_SEPARATOR + shortFilename, this);
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.NewFilename", file.toString()));
}
}
} else if (export_type.equals(Export_By_Folder)) {
if (file.getType() != FileType.FOLDER) {
logError(BaseMessages.getString(PKG, "JobExportRepository.Log.NotFolder", "" + file.getName()));
return result;
}
}
} else {
if (export_type.equals(Export_By_Folder)) {
// create folder?
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.FolderNotExists", "" + file.getName()));
}
if (!createfolder) {
return result;
}
file.createFolder();
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.FolderCreated", file.toString()));
}
} else if (export_type.equals(Export_All) || export_type.equals(Export_Jobs) || export_type.equals(Export_Trans) || export_type.equals(Export_One_Folder)) {
// create parent folder?
if (!file.getParent().exists()) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.FolderNotExists", "" + file.getParent().toString()));
}
if (createfolder) {
file.getParent().createFolder();
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.FolderCreated", file.getParent().toString()));
}
} else {
return result;
}
}
}
}
realoutfilename = KettleVFS.getFilename(this.file);
// connect to repository
connectRep(log, realrepName, realusername, realpassword);
IRepositoryExporter exporter = repository.getExporter();
if (export_type.equals(Export_All)) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.StartingExportAllRep", realoutfilename));
}
exporter.exportAllObjects(null, realoutfilename, null, "all");
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.EndExportAllRep", realoutfilename));
}
if (add_result_filesname) {
addFileToResultFilenames(realoutfilename, log, result, parentJob);
}
} else if (export_type.equals(Export_Jobs)) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.StartingExportJobsRep", realoutfilename));
}
exporter.exportAllObjects(null, realoutfilename, null, "jobs");
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.EndExportJobsRep", realoutfilename));
}
if (add_result_filesname) {
addFileToResultFilenames(realoutfilename, log, result, parentJob);
}
} else if (export_type.equals(Export_Trans)) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.StartingExportTransRep", realoutfilename));
}
exporter.exportAllObjects(null, realoutfilename, null, "trans");
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.EndExportTransRep", realoutfilename));
}
if (add_result_filesname) {
addFileToResultFilenames(realoutfilename, log, result, parentJob);
}
} else if (export_type.equals(Export_One_Folder)) {
RepositoryDirectoryInterface directory = new RepositoryDirectory();
directory = repository.findDirectory(realfoldername);
if (directory != null) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.ExpAllFolderRep", directoryPath, realoutfilename));
}
exporter.exportAllObjects(null, realoutfilename, directory, "all");
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.EndExpAllFolderRep", directoryPath, realoutfilename));
}
if (add_result_filesname) {
addFileToResultFilenames(realoutfilename, log, result, parentJob);
}
} else {
logError(BaseMessages.getString(PKG, "JobExportRepository.Error.CanNotFindFolderInRep", realfoldername, realrepName));
return result;
}
} else if (export_type.equals(Export_By_Folder)) {
// User must give a destination folder..
RepositoryDirectoryInterface directory = new RepositoryDirectory();
directory = this.repository.loadRepositoryDirectoryTree().findRoot();
// Loop over all the directory id's
ObjectId[] dirids = directory.getDirectoryIDs();
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobExportRepository.Log.TotalFolders", "" + dirids.length));
}
for (int d = 0; d < dirids.length && !parentJob.isStopped(); d++) {
// Success condition broken?
if (successConditionBroken) {
logError(BaseMessages.getString(PKG, "JobExportRepository.Error.SuccessConditionbroken", "" + NrErrors));
throw new Exception(BaseMessages.getString(PKG, "JobExportRepository.Error.SuccessConditionbroken", "" + NrErrors));
}
RepositoryDirectoryInterface repdir = directory.findDirectory(dirids[d]);
if (!processOneFolder(parentJob, result, log, repdir, realoutfilename, d, dirids.length)) {
// updateErrors
updateErrors();
}
}
// end for
}
} catch (Exception e) {
updateErrors();
logError(BaseMessages.getString(PKG, "JobExportRepository.UnExpectedError", e.toString()));
logError("Stack trace: " + Const.CR + Const.getStackTracker(e));
} finally {
if (this.repository != null) {
this.repository.disconnect();
this.repository = null;
}
if (this.repositoryMeta != null) {
this.repositoryMeta = null;
}
if (this.repsinfo != null) {
this.repsinfo.clear();
this.repsinfo = null;
}
if (this.file != null) {
try {
this.file.close();
this.file = null;
} catch (Exception e) {
// Ignore close errors
}
}
}
// Success Condition
result.setNrErrors(NrErrors);
if (getSuccessStatus()) {
result.setResult(true);
}
return result;
}
Aggregations