Search in sources :

Example 36 with Result

use of org.pentaho.di.core.Result 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 37 with Result

use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.

the class JobEntrySSH2GET method execute.

@Override
public Result execute(Result previousResult, int nr) {
    Result result = previousResult;
    result.setResult(false);
    if (log.isRowLevel()) {
        logRowlevel(BaseMessages.getString(PKG, "JobSSH2GET.Log.GettingFieldsValue"));
    }
    // Get real variable value
    String realServerName = environmentSubstitute(serverName);
    int realServerPort = Const.toInt(environmentSubstitute(serverPort), 22);
    String realUserName = environmentSubstitute(userName);
    String realServerPassword = Encr.decryptPasswordOptionallyEncrypted(environmentSubstitute(password));
    // Proxy Host
    String realProxyHost = environmentSubstitute(httpProxyHost);
    int realProxyPort = Const.toInt(environmentSubstitute(httpproxyport), 22);
    String realproxyUserName = environmentSubstitute(httpproxyusername);
    String realProxyPassword = Encr.decryptPasswordOptionallyEncrypted(environmentSubstitute(httpProxyPassword));
    // Key file
    String realKeyFilename = environmentSubstitute(keyFilename);
    String relKeyFilepass = environmentSubstitute(keyFilePass);
    // target files
    String realLocalDirectory = environmentSubstitute(localDirectory);
    String realwildcard = environmentSubstitute(wildcard);
    // Remote source
    String realftpDirectory = environmentSubstitute(ftpDirectory);
    // Destination folder (Move to)
    String realDestinationFolder = environmentSubstitute(destinationfolder);
    try {
        // Remote source
        realftpDirectory = FTPUtils.normalizePath(realftpDirectory);
        // Destination folder (Move to)
        realDestinationFolder = FTPUtils.normalizePath(realDestinationFolder);
    } catch (Exception e) {
        logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.CanNotNormalizePath", e.getMessage()));
        result.setNrErrors(1);
        return result;
    }
    // Check for mandatory fields
    if (log.isRowLevel()) {
        logRowlevel(BaseMessages.getString(PKG, "JobSSH2GET.Log.CheckingMandatoryFields"));
    }
    boolean mandatoryok = true;
    if (Utils.isEmpty(realServerName)) {
        mandatoryok = false;
        logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.ServernameMissing"));
    }
    if (usehttpproxy) {
        if (Utils.isEmpty(realProxyHost)) {
            mandatoryok = false;
            logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.HttpProxyhostMissing"));
        }
    }
    if (publicpublickey) {
        if (Utils.isEmpty(realKeyFilename)) {
            mandatoryok = false;
            logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.KeyFileMissing"));
        } else {
            // Let's check if key file exists...
            if (!new File(realKeyFilename).exists()) {
                mandatoryok = false;
                logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.KeyFileNotExist"));
            }
        }
    }
    if (Utils.isEmpty(realLocalDirectory)) {
        mandatoryok = false;
        logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.LocalFolderMissing"));
    } else {
        // Check if target folder exists...
        if (!new File(realLocalDirectory).exists()) {
            if (createtargetfolder) {
                // Create Target folder
                if (!CreateFolder(realLocalDirectory)) {
                    mandatoryok = false;
                }
            } else {
                mandatoryok = false;
                logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.LocalFolderNotExists", realLocalDirectory));
            }
        } else {
            if (!new File(realLocalDirectory).isDirectory()) {
                mandatoryok = false;
                logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.LocalFolderNotFolder", realLocalDirectory));
            }
        }
    }
    if (afterFtpPut.equals("move_file")) {
        if (Utils.isEmpty(realDestinationFolder)) {
            mandatoryok = false;
            logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.DestinatFolderMissing"));
        }
    }
    if (mandatoryok) {
        Connection conn = null;
        SFTPv3Client client = null;
        boolean good = true;
        try {
            // Create a connection instance
            conn = getConnection(realServerName, realServerPort, realProxyHost, realProxyPort, realproxyUserName, realProxyPassword);
            if (log.isDetailed()) {
                logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.ConnectionInstanceCreated"));
            }
            if (timeout > 0) {
                // Cache Host Key
                if (cachehostkey) {
                    conn.connect(new SimpleVerifier(database), 0, timeout * 1000);
                } else {
                    conn.connect(null, 0, timeout * 1000);
                }
            } else {
                // Cache Host Key
                if (cachehostkey) {
                    conn.connect(new SimpleVerifier(database));
                } else {
                    conn.connect();
                }
            }
            // Authenticate
            boolean isAuthenticated = false;
            if (publicpublickey) {
                isAuthenticated = conn.authenticateWithPublicKey(realUserName, new File(realKeyFilename), relKeyFilepass);
            } else {
                isAuthenticated = conn.authenticateWithPassword(realUserName, realServerPassword);
            }
            // LET'S CHECK AUTHENTICATION ...
            if (isAuthenticated == false) {
                logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.AuthenticationFailed"));
            } else {
                if (log.isBasic()) {
                    logBasic(BaseMessages.getString(PKG, "JobSSH2GET.Log.Connected", serverName, userName));
                }
                client = new SFTPv3Client(conn);
                if (log.isDetailed()) {
                    logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.ProtocolVersion", "" + client.getProtocolVersion()));
                }
                // Check if ftp (source) directory exists
                if (!Utils.isEmpty(realftpDirectory)) {
                    if (!sshDirectoryExists(client, realftpDirectory)) {
                        good = false;
                        logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.RemoteDirectoryNotExist", realftpDirectory));
                    } else if (log.isDetailed()) {
                        logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.RemoteDirectoryExist", realftpDirectory));
                    }
                }
                if (!Utils.isEmpty(realDestinationFolder)) {
                    // Check now destination folder
                    if (!sshDirectoryExists(client, realDestinationFolder)) {
                        if (createdestinationfolder) {
                            if (!CreateRemoteFolder(client, realDestinationFolder)) {
                                good = false;
                            }
                        } else {
                            good = false;
                            logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.DestinatFolderNotExist", realDestinationFolder));
                        }
                    }
                }
                if (good) {
                    Pattern pattern = null;
                    if (!Utils.isEmpty(realwildcard)) {
                        pattern = Pattern.compile(realwildcard);
                    }
                    if (includeSubFolders) {
                        if (log.isDetailed()) {
                            logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.RecursiveModeOn"));
                        }
                        copyRecursive(realftpDirectory, realLocalDirectory, client, pattern, parentJob);
                    } else {
                        if (log.isDetailed()) {
                            logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.RecursiveModeOff"));
                        }
                        GetFiles(realftpDirectory, realLocalDirectory, client, pattern, parentJob);
                    }
                    /**
                     ****************************** RESULT *******************
                     */
                    if (log.isDetailed()) {
                        logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.Result.JobEntryEnd1"));
                        logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.Result.TotalFiles", "" + nbfilestoget));
                        logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.Result.TotalFilesPut", "" + nbgot));
                        logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.Result.TotalFilesError", "" + nbrerror));
                        logDetailed(BaseMessages.getString(PKG, "JobSSH2GET.Log.Result.JobEntryEnd2"));
                    }
                    if (nbrerror == 0) {
                        result.setResult(true);
                    /**
                     ****************************** RESULT *******************
                     */
                    }
                }
            }
        } catch (Exception e) {
            result.setNrErrors(nbrerror);
            logError(BaseMessages.getString(PKG, "JobSSH2GET.Log.Error.ErrorFTP", e.getMessage()));
        } finally {
            if (conn != null) {
                conn.close();
            }
            if (client != null) {
                client.close();
            }
        }
    }
    return result;
}
Also used : Pattern(java.util.regex.Pattern) Connection(com.trilead.ssh2.Connection) SFTPv3Client(com.trilead.ssh2.SFTPv3Client) File(java.io.File) KettleException(org.pentaho.di.core.exception.KettleException) KettleDatabaseException(org.pentaho.di.core.exception.KettleDatabaseException) KettleXMLException(org.pentaho.di.core.exception.KettleXMLException) Result(org.pentaho.di.core.Result)

Example 38 with Result

use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.

the class TransWebSocketEngineAdapter method getResult.

@Override
public Result getResult() {
    Result toRet = new Result();
    toRet.setNrErrors(getErrors());
    return toRet;
}
Also used : Result(org.pentaho.di.core.Result)

Example 39 with Result

use of org.pentaho.di.core.Result 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)

Example 40 with Result

use of org.pentaho.di.core.Result in project pentaho-kettle by pentaho.

the class HL7MLLPAcknowledge method execute.

public Result execute(Result previousResult, int nr) {
    Result result = previousResult;
    try {
        String serverName = environmentSubstitute(server);
        int portNumber = Integer.parseInt(environmentSubstitute(port));
        String variable = environmentSubstitute(variableName);
        MLLPSocketCacheEntry entry = MLLPSocketCache.getInstance().getServerSocketStreamSource(serverName, portNumber);
        MLLPTransport transport = entry.getTransport();
        // 
        synchronized (transport) {
            String message = getVariable(variable);
            // Parse the message and extract the acknowledge message.
            // 
            Parser parser = new GenericParser();
            ValidationContext validationContext = new NoValidation();
            parser.setValidationContext(validationContext);
            Message msg = parser.parse(message);
            Message ack = msg.generateACK();
            String ackMessage = ack.encode();
            String APPNAME = "PDI4";
            if (ack instanceof ca.uhn.hl7v2.model.v21.message.ACK) {
                ca.uhn.hl7v2.model.v21.message.ACK mod = (ca.uhn.hl7v2.model.v21.message.ACK) ack;
                mod.getMSH().getSENDINGAPPLICATION().setValue(APPNAME);
                mod.getMSH().getSENDINGFACILITY().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v22.message.ACK) {
                ca.uhn.hl7v2.model.v22.message.ACK mod = (ca.uhn.hl7v2.model.v22.message.ACK) ack;
                mod.getMSH().getSendingApplication().setValue(APPNAME);
                mod.getMSH().getSendingFacility().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v23.message.ACK) {
                ca.uhn.hl7v2.model.v23.message.ACK mod = (ca.uhn.hl7v2.model.v23.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v231.message.ACK) {
                ca.uhn.hl7v2.model.v231.message.ACK mod = (ca.uhn.hl7v2.model.v231.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v24.message.ACK) {
                ca.uhn.hl7v2.model.v24.message.ACK mod = (ca.uhn.hl7v2.model.v24.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v25.message.ACK) {
                ca.uhn.hl7v2.model.v25.message.ACK mod = (ca.uhn.hl7v2.model.v25.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v251.message.ACK) {
                ca.uhn.hl7v2.model.v251.message.ACK mod = (ca.uhn.hl7v2.model.v251.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else if (ack instanceof ca.uhn.hl7v2.model.v26.message.ACK) {
                ca.uhn.hl7v2.model.v26.message.ACK mod = (ca.uhn.hl7v2.model.v26.message.ACK) ack;
                mod.getMSH().getSendingApplication().getNamespaceID().setValue(APPNAME);
                mod.getMSH().getSendingFacility().getNamespaceID().setValue(APPNAME);
                ackMessage = mod.encode();
            } else {
                logError("This job entry does not support the HL7 dialect used. Found ACK class: " + ack.getClass().getName());
            }
            Transportable transportable = new TransportableImpl(ackMessage);
            transport.doSend(transportable);
        }
        // All went well..
        // 
        result.setNrErrors(0);
        result.setResult(true);
    } catch (Exception e) {
        log.logError(BaseMessages.getString(PKG, "HL7MLLPInput.Exception.UnexpectedError"), e);
        result.setNrErrors(1);
        result.setResult(false);
    }
    return result;
}
Also used : Message(ca.uhn.hl7v2.model.Message) Result(org.pentaho.di.core.Result) MLLPSocketCacheEntry(org.pentaho.di.trans.steps.hl7input.common.MLLPSocketCacheEntry) Transportable(ca.uhn.hl7v2.protocol.Transportable) TransportableImpl(ca.uhn.hl7v2.protocol.impl.TransportableImpl) KettleException(org.pentaho.di.core.exception.KettleException) KettleDatabaseException(org.pentaho.di.core.exception.KettleDatabaseException) KettleXMLException(org.pentaho.di.core.exception.KettleXMLException) Parser(ca.uhn.hl7v2.parser.Parser) GenericParser(ca.uhn.hl7v2.parser.GenericParser) GenericParser(ca.uhn.hl7v2.parser.GenericParser) ValidationContext(ca.uhn.hl7v2.validation.ValidationContext) MLLPTransport(ca.uhn.hl7v2.protocol.impl.MLLPTransport) NoValidation(ca.uhn.hl7v2.validation.impl.NoValidation)

Aggregations

Result (org.pentaho.di.core.Result)192 Test (org.junit.Test)75 KettleException (org.pentaho.di.core.exception.KettleException)75 KettleDatabaseException (org.pentaho.di.core.exception.KettleDatabaseException)64 KettleXMLException (org.pentaho.di.core.exception.KettleXMLException)57 RowMetaAndData (org.pentaho.di.core.RowMetaAndData)40 FileObject (org.apache.commons.vfs2.FileObject)34 Job (org.pentaho.di.job.Job)32 IOException (java.io.IOException)24 ResultFile (org.pentaho.di.core.ResultFile)20 File (java.io.File)17 ArrayList (java.util.ArrayList)16 ValueMetaString (org.pentaho.di.core.row.value.ValueMetaString)15 KettleExtensionPoint (org.pentaho.di.core.extension.KettleExtensionPoint)12 Pattern (java.util.regex.Pattern)10 KettleFileException (org.pentaho.di.core.exception.KettleFileException)10 Database (org.pentaho.di.core.database.Database)9 Date (java.util.Date)8 Trans (org.pentaho.di.trans.Trans)8 Matcher (java.util.regex.Matcher)7