Search in sources :

Example 96 with RowMetaAndData

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;
    }
}
Also used : RowMetaAndData(org.pentaho.di.core.RowMetaAndData) Job(org.pentaho.di.job.Job) Result(org.pentaho.di.core.Result)

Example 97 with RowMetaAndData

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;
}
Also used : RowMetaAndData(org.pentaho.di.core.RowMetaAndData) Result(org.pentaho.di.core.Result)

Example 98 with RowMetaAndData

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;
}
Also used : KettleStepException(org.pentaho.di.core.exception.KettleStepException) RowMetaAndData(org.pentaho.di.core.RowMetaAndData) Properties(java.util.Properties) Result(org.pentaho.di.core.Result) StreamResult(javax.xml.transform.stream.StreamResult)

Example 99 with RowMetaAndData

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;
}
Also used : RowMetaAndData(org.pentaho.di.core.RowMetaAndData) ValueMetaInteger(org.pentaho.di.core.row.value.ValueMetaInteger) ValueMetaInterface(org.pentaho.di.core.row.ValueMetaInterface)

Example 100 with RowMetaAndData

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());
}
Also used : RowMetaAndData(org.pentaho.di.core.RowMetaAndData) Result(org.pentaho.di.core.Result) CheckResult(org.pentaho.di.core.CheckResult)

Aggregations

RowMetaAndData (org.pentaho.di.core.RowMetaAndData)563 ValueMetaString (org.pentaho.di.core.row.value.ValueMetaString)225 ArrayList (java.util.ArrayList)172 RowMetaInterface (org.pentaho.di.core.row.RowMetaInterface)145 TransMeta (org.pentaho.di.trans.TransMeta)116 Test (org.junit.Test)108 ValueMetaInteger (org.pentaho.di.core.row.value.ValueMetaInteger)94 KettleException (org.pentaho.di.core.exception.KettleException)89 StepMeta (org.pentaho.di.trans.step.StepMeta)80 LongObjectId (org.pentaho.di.repository.LongObjectId)75 StepInterface (org.pentaho.di.trans.step.StepInterface)75 RowStepCollector (org.pentaho.di.trans.RowStepCollector)73 Trans (org.pentaho.di.trans.Trans)73 PluginRegistry (org.pentaho.di.core.plugins.PluginRegistry)71 TransHopMeta (org.pentaho.di.trans.TransHopMeta)71 KettleValueException (org.pentaho.di.core.exception.KettleValueException)58 RowProducer (org.pentaho.di.trans.RowProducer)56 DummyTransMeta (org.pentaho.di.trans.steps.dummytrans.DummyTransMeta)54 KettleDatabaseException (org.pentaho.di.core.exception.KettleDatabaseException)53 RowMeta (org.pentaho.di.core.row.RowMeta)51