use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.
the class SystemData method getSystemData.
private Object[] getSystemData(RowMetaInterface inputRowMeta, Object[] inputRowData) throws KettleException {
Object[] row = new Object[data.outputRowMeta.size()];
for (int i = 0; i < inputRowMeta.size(); i++) {
// no data is changed, clone is not needed here.
row[i] = inputRowData[i];
}
for (int i = 0, index = inputRowMeta.size(); i < meta.getFieldName().length; i++, index++) {
Calendar cal;
int argnr = 0;
switch(meta.getFieldType()[i]) {
case TYPE_SYSTEM_INFO_SYSTEM_START:
row[index] = getTrans().getCurrentDate();
break;
case TYPE_SYSTEM_INFO_SYSTEM_DATE:
row[index] = new Date();
break;
case TYPE_SYSTEM_INFO_TRANS_DATE_FROM:
row[index] = getTrans().getStartDate();
break;
case TYPE_SYSTEM_INFO_TRANS_DATE_TO:
row[index] = getTrans().getEndDate();
break;
case TYPE_SYSTEM_INFO_JOB_DATE_FROM:
row[index] = getTrans().getJobStartDate();
break;
case TYPE_SYSTEM_INFO_JOB_DATE_TO:
row[index] = getTrans().getJobEndDate();
break;
case TYPE_SYSTEM_INFO_PREV_DAY_START:
cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_DAY_END:
cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_DAY_START:
cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_DAY_END:
cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_DAY_START:
cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_DAY_END:
cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_MONTH_START:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_MONTH_END:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_MONTH_START:
cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_MONTH_END:
cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_MONTH_START:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_MONTH_END:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_COPYNR:
row[index] = new Long(getCopy());
break;
case TYPE_SYSTEM_INFO_TRANS_NAME:
row[index] = getTransMeta().getName();
break;
case TYPE_SYSTEM_INFO_MODIFIED_USER:
row[index] = getTransMeta().getModifiedUser();
break;
case TYPE_SYSTEM_INFO_MODIFIED_DATE:
row[index] = getTransMeta().getModifiedDate();
break;
case TYPE_SYSTEM_INFO_TRANS_BATCH_ID:
row[index] = new Long(getTrans().getBatchId());
break;
case TYPE_SYSTEM_INFO_JOB_BATCH_ID:
row[index] = new Long(getTrans().getPassedBatchId());
break;
case TYPE_SYSTEM_INFO_HOSTNAME_REAL:
row[index] = Const.getHostnameReal();
break;
case TYPE_SYSTEM_INFO_HOSTNAME:
row[index] = Const.getHostname();
break;
case TYPE_SYSTEM_INFO_IP_ADDRESS:
try {
row[index] = Const.getIPAddress();
} catch (Exception e) {
throw new KettleException(e);
}
break;
case TYPE_SYSTEM_INFO_FILENAME:
row[index] = getTransMeta().getFilename();
break;
case TYPE_SYSTEM_INFO_ARGUMENT_01:
case TYPE_SYSTEM_INFO_ARGUMENT_02:
case TYPE_SYSTEM_INFO_ARGUMENT_03:
case TYPE_SYSTEM_INFO_ARGUMENT_04:
case TYPE_SYSTEM_INFO_ARGUMENT_05:
case TYPE_SYSTEM_INFO_ARGUMENT_06:
case TYPE_SYSTEM_INFO_ARGUMENT_07:
case TYPE_SYSTEM_INFO_ARGUMENT_08:
case TYPE_SYSTEM_INFO_ARGUMENT_09:
case TYPE_SYSTEM_INFO_ARGUMENT_10:
argnr = meta.getFieldType()[i].ordinal() - SystemDataTypes.TYPE_SYSTEM_INFO_ARGUMENT_01.ordinal();
if (getTrans().getArguments() != null && argnr < getTrans().getArguments().length) {
row[index] = getTrans().getArguments()[argnr];
} else {
row[index] = null;
}
break;
case TYPE_SYSTEM_INFO_KETTLE_VERSION:
row[index] = BuildVersion.getInstance().getVersion();
break;
case TYPE_SYSTEM_INFO_KETTLE_BUILD_VERSION:
row[index] = BuildVersion.getInstance().getVersion();
break;
case TYPE_SYSTEM_INFO_KETTLE_BUILD_DATE:
row[index] = BuildVersion.getInstance().getBuildDateAsLocalDate();
break;
case TYPE_SYSTEM_INFO_CURRENT_PID:
row[index] = new Long(Management.getPID());
break;
case TYPE_SYSTEM_INFO_JVM_TOTAL_MEMORY:
row[index] = Runtime.getRuntime().totalMemory();
break;
case TYPE_SYSTEM_INFO_JVM_FREE_MEMORY:
row[index] = Runtime.getRuntime().freeMemory();
break;
case TYPE_SYSTEM_INFO_JVM_MAX_MEMORY:
row[index] = Runtime.getRuntime().maxMemory();
break;
case TYPE_SYSTEM_INFO_JVM_AVAILABLE_MEMORY:
Runtime rt = Runtime.getRuntime();
row[index] = rt.freeMemory() + (rt.maxMemory() - rt.totalMemory());
break;
case TYPE_SYSTEM_INFO_AVAILABLE_PROCESSORS:
row[index] = (long) Runtime.getRuntime().availableProcessors();
break;
case TYPE_SYSTEM_INFO_JVM_CPU_TIME:
row[index] = Management.getJVMCpuTime() / 1000000;
break;
case TYPE_SYSTEM_INFO_TOTAL_PHYSICAL_MEMORY_SIZE:
row[index] = Management.getTotalPhysicalMemorySize();
break;
case TYPE_SYSTEM_INFO_TOTAL_SWAP_SPACE_SIZE:
row[index] = Management.getTotalSwapSpaceSize();
break;
case TYPE_SYSTEM_INFO_COMMITTED_VIRTUAL_MEMORY_SIZE:
row[index] = Management.getCommittedVirtualMemorySize();
break;
case TYPE_SYSTEM_INFO_FREE_PHYSICAL_MEMORY_SIZE:
row[index] = Management.getFreePhysicalMemorySize();
break;
case TYPE_SYSTEM_INFO_FREE_SWAP_SPACE_SIZE:
row[index] = Management.getFreeSwapSpaceSize();
break;
case TYPE_SYSTEM_INFO_PREV_WEEK_START:
cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, -1);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_WEEK_END:
cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_WEEK_OPEN_END:
cal = Calendar.getInstance(Locale.ROOT);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
cal.add(Calendar.DAY_OF_WEEK, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_WEEK_START_US:
cal = Calendar.getInstance(Locale.US);
cal.add(Calendar.WEEK_OF_YEAR, -1);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_WEEK_END_US:
cal = Calendar.getInstance(Locale.US);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_WEEK_START:
cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_WEEK_END:
cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_WEEK_OPEN_END:
cal = Calendar.getInstance(Locale.ROOT);
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
cal.add(Calendar.DAY_OF_WEEK, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_WEEK_START_US:
cal = Calendar.getInstance(Locale.US);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_WEEK_END_US:
cal = Calendar.getInstance(Locale.US);
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_WEEK_START:
cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_WEEK_END:
cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_YEAR, 2);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_WEEK_OPEN_END:
cal = Calendar.getInstance(Locale.ROOT);
cal.add(Calendar.WEEK_OF_YEAR, 2);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
cal.add(Calendar.DAY_OF_WEEK, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_WEEK_START_US:
cal = Calendar.getInstance(Locale.US);
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_WEEK_END_US:
cal = Calendar.getInstance(Locale.US);
cal.add(Calendar.WEEK_OF_YEAR, 2);
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, -1);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_QUARTER_START:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -3 - (cal.get(Calendar.MONTH) % 3));
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_QUARTER_END:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1 - (cal.get(Calendar.MONTH) % 3));
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_QUARTER_START:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 0 - (cal.get(Calendar.MONTH) % 3));
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_QUARTER_END:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 2 - (cal.get(Calendar.MONTH) % 3));
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_QUARTER_START:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 3 - (cal.get(Calendar.MONTH) % 3));
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_QUARTER_END:
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 5 - (cal.get(Calendar.MONTH) % 3));
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_YEAR_START:
cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -1);
cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.DATE));
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREV_YEAR_END:
cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.DATE));
cal.add(Calendar.DAY_OF_YEAR, -1);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_YEAR_START:
cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.DATE));
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_THIS_YEAR_END:
cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 1);
cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.DATE));
cal.add(Calendar.DAY_OF_YEAR, -1);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_YEAR_START:
cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 1);
cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.DATE));
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_NEXT_YEAR_END:
cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 2);
cal.set(Calendar.DAY_OF_YEAR, cal.getActualMinimum(Calendar.DATE));
cal.add(Calendar.DAY_OF_YEAR, -1);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
row[index] = cal.getTime();
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_RESULT:
Result previousResult = getTrans().getPreviousResult();
boolean result = false;
if (previousResult != null) {
result = previousResult.getResult();
}
row[index] = result;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_EXIT_STATUS:
previousResult = getTrans().getPreviousResult();
long value = 0;
if (previousResult != null) {
value = previousResult.getExitStatus();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_ENTRY_NR:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getEntryNr();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_FILES:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getResultFiles().size();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_FILES_RETRIEVED:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrFilesRetrieved();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_LINES_DELETED:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrLinesDeleted();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_LINES_INPUT:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrLinesInput();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_LINES_OUTPUT:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrLinesOutput();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_LINES_READ:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrLinesRead();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_LINES_REJETED:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrLinesRejected();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_LINES_UPDATED:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrLinesUpdated();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_LINES_WRITTEN:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrLinesWritten();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_ROWS:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getRows().size();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_IS_STOPPED:
previousResult = getTrans().getPreviousResult();
boolean stop = false;
if (previousResult != null) {
stop = previousResult.isStopped();
}
row[index] = stop;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_NR_ERRORS:
previousResult = getTrans().getPreviousResult();
value = 0;
if (previousResult != null) {
value = previousResult.getNrErrors();
}
row[index] = value;
break;
case TYPE_SYSTEM_INFO_PREVIOUS_RESULT_LOG_TEXT:
previousResult = getTrans().getPreviousResult();
String errorReason = null;
if (previousResult != null) {
errorReason = previousResult.getLogText();
}
row[index] = errorReason;
break;
default:
break;
}
}
return row;
}
use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.
the class RowsFromResult method processRow.
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
Result previousResult = getTrans().getPreviousResult();
if (previousResult == null || getLinesRead() >= previousResult.getRows().size()) {
setOutputDone();
return false;
}
RowMetaAndData row = previousResult.getRows().get((int) getLinesRead());
incrementLinesRead();
data = (RowsFromResultData) sdi;
// We don't get the meta-data from the previous steps (there aren't any) but from the previous transformation or job
//
data.outputRowMeta = row.getRowMeta();
// copy row to possible alternate rowset(s).
//
putRow(data.outputRowMeta, row.getData());
if (checkFeedback(getLinesRead())) {
if (log.isBasic()) {
logBasic(BaseMessages.getString(PKG, "RowsFromResult.Log.LineNumber") + getLinesRead());
}
}
return true;
}
use of org.pentaho.di.core.Result in project pentaho-metaverse by pentaho.
the class TransformationRuntimeExtensionPoint method createLineGraph.
protected void createLineGraph(final Trans trans) {
try {
// Get the current execution profile for this transformation
LineageHolder holder = TransLineageHolderMap.getInstance().getLineageHolder(trans);
Future lineageTask = holder.getLineageTask();
if (lineageTask != null) {
try {
lineageTask.get();
} catch (InterruptedException e) {
// Do nothing
} catch (ExecutionException e) {
log.warn(Messages.getString("ERROR.CouldNotWriteLineageGraph", trans.getName(), Const.NVL(e.getLocalizedMessage(), "Unspecified")));
log.debug(Messages.getString("ERROR.ErrorDuringAnalysisStackTrace"), e);
}
}
IExecutionProfile executionProfile = holder.getExecutionProfile();
if (executionProfile == null) {
// Something's wrong here, the transStarted method didn't properly store the execution profile. We should know
// the same info, so populate a new ExecutionProfile using the current Trans
// TODO: Beware duplicate profiles!
executionProfile = new ExecutionProfile();
populateExecutionProfile(executionProfile, trans);
}
ExecutionData executionData = (ExecutionData) executionProfile.getExecutionData();
Result result = trans.getResult();
if (result != null) {
executionData.setFailureCount(result.getNrErrors());
}
// Export the lineage info (execution profile, lineage graph, etc.)
try {
if (lineageWriter != null && !"none".equals(lineageWriter.getOutputStrategy())) {
// clearOutput right before the first call to outputXYZ().
if ("latest".equals(lineageWriter.getOutputStrategy())) {
lineageWriter.cleanOutput(holder);
}
lineageWriter.outputExecutionProfile(holder);
}
} catch (IOException e) {
log.warn(Messages.getString("ERROR.CouldNotWriteExecutionProfile", trans.getName(), Const.NVL(e.getLocalizedMessage(), "Unspecified")));
log.debug(Messages.getString("ERROR.ErrorDuringAnalysisStackTrace"), e);
}
// lineage information into its own graph
try {
Job parentJob = trans.getParentJob();
Trans parentTrans = trans.getParentTrans();
if (parentJob == null && parentTrans == null) {
// Add the execution profile information to the lineage graph
addRuntimeLineageInfo(holder);
if (lineageWriter != null && !"none".equals(lineageWriter.getOutputStrategy())) {
lineageWriter.outputLineageGraph(holder);
}
}
} catch (IOException e) {
log.warn(Messages.getString("ERROR.CouldNotWriteExecutionProfile", trans.getName(), Const.NVL(e.getLocalizedMessage(), "Unspecified")));
log.debug(Messages.getString("ERROR.ErrorDuringAnalysisStackTrace"), e);
}
} catch (Throwable t) {
log.warn(Messages.getString("ERROR.ErrorDuringAnalysis", trans.getName(), Const.NVL(t.getLocalizedMessage(), "Unspecified")));
log.debug(Messages.getString("ERROR.ErrorDuringAnalysisStackTrace"), t);
}
}
use of org.pentaho.di.core.Result in project pentaho-metaverse by pentaho.
the class JobEntryExternalResourceListenerTest method testBeforeAfterExecution.
@Test
public void testBeforeAfterExecution() throws Exception {
IJobEntryExternalResourceConsumer consumer = mock(IJobEntryExternalResourceConsumer.class);
JobMeta mockJobMeta = mock(JobMeta.class);
Job job = mock(Job.class);
when(job.getJobMeta()).thenReturn(mockJobMeta);
JobEntryInterface jobEntryInterface = mock(JobEntryInterface.class);
when(jobEntryInterface.getParentJob()).thenReturn(job);
when(jobEntryInterface.getResourceDependencies(mockJobMeta)).thenReturn(Collections.singletonList(new ResourceReference(null, Collections.singletonList(new ResourceEntry("myFile", ResourceEntry.ResourceType.FILE)))));
JobEntryCopy jobEntryCopy = mock(JobEntryCopy.class);
IExecutionProfile executionProfile = mock(IExecutionProfile.class);
IExecutionData executionData = mock(IExecutionData.class);
when(executionProfile.getExecutionData()).thenReturn(executionData);
JobLineageHolderMap.getInstance().getLineageHolder(job).setExecutionProfile(executionProfile);
JobEntryExternalResourceListener listener = new JobEntryExternalResourceListener(consumer);
FileObject mockFile = mock(FileObject.class);
FileName mockFilename = mock(FileName.class);
when(mockFilename.getPath()).thenReturn("/path/to/file");
when(mockFile.getName()).thenReturn(mockFilename);
ResultFile resultFile = mock(ResultFile.class);
when(resultFile.getFile()).thenReturn(mockFile);
List<ResultFile> resultFiles = Collections.singletonList(resultFile);
Result result = mock(Result.class);
when(result.getResultFilesList()).thenReturn(resultFiles);
// Call beforeExecution for coverage
listener.beforeExecution(null, null, null);
listener.afterExecution(job, jobEntryCopy, jobEntryInterface, result);
}
use of org.pentaho.di.core.Result in project pentaho-metaverse by pentaho.
the class TransformationRuntimeExtensionPointTest method testTransFinished.
@Test
public void testTransFinished() throws Exception {
TransformationRuntimeExtensionPoint ext = spy(transExtensionPoint);
ext.transFinished(null);
verify(ext, never()).populateExecutionProfile(Mockito.any(IExecutionProfile.class), Mockito.any(Trans.class));
ext.transFinished(trans);
verify(ext, times(1)).startAnalyzer(trans);
verify(ext, times(1)).populateExecutionProfile(Mockito.any(IExecutionProfile.class), Mockito.any(Trans.class));
Trans mockTrans = spy(trans);
Result result = mock(Result.class);
when(mockTrans.getResult()).thenReturn(result);
ext.transFinished(mockTrans);
// The logic in transFinished() is now in a thread, so we can't verify methods were called
verify(ext, times(1)).startAnalyzer(mockTrans);
verify(ext, times(2)).populateExecutionProfile(Mockito.any(IExecutionProfile.class), Mockito.any(Trans.class));
}
Aggregations