use of org.pentaho.di.core.RowMetaAndData in project pentaho-kettle by pentaho.
the class JobLogTable method getLogRecord.
/**
* This method calculates all the values that are required
*
* @param id
* the id to use or -1 if no id is needed
* @param status
* the log status to use
*/
public RowMetaAndData getLogRecord(LogStatus status, Object subject, Object parent) {
if (subject == null || subject instanceof Job) {
Job job = (Job) subject;
Result result = null;
if (job != null) {
result = job.getResult();
}
RowMetaAndData row = new RowMetaAndData();
for (LogTableField field : fields) {
if (field.isEnabled()) {
Object value = null;
if (job != null) {
switch(ID.valueOf(field.getId())) {
case ID_JOB:
value = new Long(job.getBatchId());
break;
case CHANNEL_ID:
value = job.getLogChannelId();
break;
case JOBNAME:
value = job.getJobname();
break;
case STATUS:
value = status.getStatus();
break;
case LINES_READ:
value = result == null ? null : new Long(result.getNrLinesRead());
break;
case LINES_WRITTEN:
value = result == null ? null : new Long(result.getNrLinesWritten());
break;
case LINES_INPUT:
value = result == null ? null : new Long(result.getNrLinesInput());
break;
case LINES_OUTPUT:
value = result == null ? null : new Long(result.getNrLinesOutput());
break;
case LINES_UPDATED:
value = result == null ? null : new Long(result.getNrLinesUpdated());
break;
case LINES_REJECTED:
value = result == null ? null : new Long(result.getNrLinesRejected());
break;
case ERRORS:
value = result == null ? null : new Long(result.getNrErrors());
break;
case STARTDATE:
value = job.getStartDate();
break;
case LOGDATE:
value = job.getLogDate();
break;
case ENDDATE:
value = job.getEndDate();
break;
case DEPDATE:
value = job.getDepDate();
break;
case REPLAYDATE:
value = job.getCurrentDate();
break;
case LOG_FIELD:
value = getLogBuffer(job, job.getLogChannelId(), status, logSizeLimit);
break;
case EXECUTING_SERVER:
value = job.getExecutingServer();
break;
case EXECUTING_USER:
value = job.getExecutingUser();
break;
case START_JOB_ENTRY:
value = job.getStartJobEntryCopy() != null ? job.getStartJobEntryCopy().getName() : null;
break;
case CLIENT:
value = KettleClientEnvironment.getInstance().getClient() != null ? KettleClientEnvironment.getInstance().getClient().toString() : "unknown";
break;
default:
break;
}
}
row.addValue(field.getFieldName(), field.getDataType(), value);
row.getRowMeta().getValueMeta(row.size() - 1).setLength(field.getLength());
}
}
return row;
} else {
return null;
}
}
use of org.pentaho.di.core.RowMetaAndData in project pentaho-kettle by pentaho.
the class JobEntryXMLWellFormed 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;
NrErrors = 0;
NrWellFormed = 0;
NrBadFormed = 0;
limitFiles = Const.toInt(environmentSubstitute(getNrErrorsLessThan()), 10);
successConditionBroken = false;
successConditionBrokenExit = false;
// Get source and destination files, also wildcard
String[] vsourcefilefolder = source_filefolder;
String[] vwildcard = wildcard;
if (arg_from_previous) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobXMLWellFormed.Log.ArgFromPrevious.Found", (rows != null ? rows.size() : 0) + ""));
}
}
if (arg_from_previous && rows != null) {
// Copy the input row to the (command line) arguments
for (int iteration = 0; iteration < rows.size() && !parentJob.isStopped(); iteration++) {
if (successConditionBroken) {
if (!successConditionBrokenExit) {
logError(BaseMessages.getString(PKG, "JobXMLWellFormed.Error.SuccessConditionbroken", "" + NrAllErrors));
successConditionBrokenExit = true;
}
result.setEntryNr(NrAllErrors);
result.setNrLinesRejected(NrBadFormed);
result.setNrLinesWritten(NrWellFormed);
return result;
}
resultRow = rows.get(iteration);
// Get source and destination file names, also wildcard
String vsourcefilefolder_previous = resultRow.getString(0, null);
String vwildcard_previous = resultRow.getString(1, null);
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobXMLWellFormed.Log.ProcessingRow", vsourcefilefolder_previous, vwildcard_previous));
}
processFileFolder(vsourcefilefolder_previous, vwildcard_previous, parentJob, result);
}
} else if (vsourcefilefolder != null) {
for (int i = 0; i < vsourcefilefolder.length && !parentJob.isStopped(); i++) {
if (successConditionBroken) {
if (!successConditionBrokenExit) {
logError(BaseMessages.getString(PKG, "JobXMLWellFormed.Error.SuccessConditionbroken", "" + NrAllErrors));
successConditionBrokenExit = true;
}
result.setEntryNr(NrAllErrors);
result.setNrLinesRejected(NrBadFormed);
result.setNrLinesWritten(NrWellFormed);
return result;
}
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobXMLWellFormed.Log.ProcessingRow", vsourcefilefolder[i], vwildcard[i]));
}
processFileFolder(vsourcefilefolder[i], vwildcard[i], parentJob, result);
}
}
// Success Condition
result.setNrErrors(NrAllErrors);
result.setNrLinesRejected(NrBadFormed);
result.setNrLinesWritten(NrWellFormed);
if (getSuccessStatus()) {
result.setNrErrors(0);
result.setResult(true);
}
displayResults();
return result;
}
use of org.pentaho.di.core.RowMetaAndData in project pentaho-kettle by pentaho.
the class JobEntryXSLT method execute.
public Result execute(Result previousResult, int nr) throws KettleException {
Result result = previousResult;
int NrErrors = 0;
int NrSuccess = 0;
// Check output parameters
int nrOutputProps = getOutputPropertyName() == null ? 0 : getOutputPropertyName().length;
if (nrOutputProps > 0) {
outputProperties = new Properties();
for (int i = 0; i < nrOutputProps; i++) {
outputProperties.put(getOutputPropertyName()[i], environmentSubstitute(getOutputPropertyValue()[i]));
}
setOutputProperties = true;
}
// Check parameters
nrParams = getParameterField() == null ? 0 : getParameterField().length;
if (nrParams > 0) {
nameOfParams = new String[nrParams];
valueOfParams = new String[nrParams];
for (int i = 0; i < nrParams; i++) {
String name = environmentSubstitute(getParameterName()[i]);
String value = environmentSubstitute(getParameterField()[i]);
if (Utils.isEmpty(value)) {
throw new KettleStepException(BaseMessages.getString(PKG, "Xslt.Exception.ParameterFieldMissing", name, i));
}
nameOfParams[i] = name;
valueOfParams[i] = value;
}
useParameters = true;
}
List<RowMetaAndData> rows = result.getRows();
if (isFilenamesFromPrevious()) {
if (log.isDetailed()) {
logDetailed(BaseMessages.getString(PKG, "JobEntryXSLT.Log.ArgFromPrevious.Found", (rows != null ? rows.size() : 0) + ""));
}
}
if (isFilenamesFromPrevious() && rows != null) {
// Copy the input row to the (command line) arguments
RowMetaAndData resultRow = null;
for (int iteration = 0; iteration < rows.size() && !parentJob.isStopped(); iteration++) {
resultRow = rows.get(iteration);
// Get filenames (xml, xsl, output filename)
String xmlfilename_previous = resultRow.getString(0, null);
String xslfilename_previous = resultRow.getString(1, null);
String ouputfilename_previous = resultRow.getString(2, null);
if (!Utils.isEmpty(xmlfilename_previous) && !Utils.isEmpty(xslfilename_previous) && !Utils.isEmpty(ouputfilename_previous)) {
if (processOneXMLFile(xmlfilename_previous, xslfilename_previous, ouputfilename_previous, result, parentJob)) {
NrSuccess++;
} else {
NrErrors++;
}
} else {
// We failed!
logError(BaseMessages.getString(PKG, "JobEntryXSLT.AllFilesNotNull.Label"));
NrErrors++;
}
}
} else {
String realxmlfilename = getRealxmlfilename();
String realxslfilename = getRealxslfilename();
String realoutputfilename = getoutputfilename();
if (!Utils.isEmpty(realxmlfilename) && !Utils.isEmpty(realxslfilename) && !Utils.isEmpty(realoutputfilename)) {
if (processOneXMLFile(realxmlfilename, realxslfilename, realoutputfilename, result, parentJob)) {
NrSuccess++;
} else {
NrErrors++;
}
} else {
// We failed!
logError(BaseMessages.getString(PKG, "JobEntryXSLT.AllFilesNotNull.Label"));
NrErrors++;
}
}
result.setResult(NrErrors == 0);
result.setNrErrors(NrErrors);
result.setNrLinesWritten(NrSuccess);
return result;
}
use of org.pentaho.di.core.RowMetaAndData in project pentaho-kettle by pentaho.
the class ExecSQLRow method getResultRow.
public static final RowMetaAndData getResultRow(Result result, String upd, String ins, String del, String read) {
RowMetaAndData resultRow = new RowMetaAndData();
if (upd != null && upd.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(upd);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesUpdated()));
}
if (ins != null && ins.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(ins);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesOutput()));
}
if (del != null && del.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(del);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesDeleted()));
}
if (read != null && read.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(read);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesRead()));
}
return resultRow;
}
use of org.pentaho.di.core.RowMetaAndData in project pentaho-kettle by pentaho.
the class ExecSQLRowMeta method getFields.
public void getFields(RowMetaInterface r, String name, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space, Repository repository, IMetaStore metaStore) throws KettleStepException {
RowMetaAndData add = ExecSQL.getResultRow(new Result(), getUpdateField(), getInsertField(), getDeleteField(), getReadField());
r.mergeRowMeta(add.getRowMeta());
}
Aggregations