Search in sources :

Example 1 with ScriptMeta

use of org.pentaho.di.trans.steps.script.ScriptMeta in project pentaho-kettle by pentaho.

the class ScriptDialog method newTest.

private boolean newTest() {
    PluginRegistry registry = PluginRegistry.getInstance();
    String scriptStepName = wStepname.getText();
    try {
        // What fields are coming into the step?
        // 
        RowMetaInterface rowMeta = transMeta.getPrevStepFields(stepname).clone();
        if (rowMeta != null) {
            // 
            if (genMeta == null) {
                genMeta = new RowGeneratorMeta();
                genMeta.setRowLimit("10");
                genMeta.allocate(rowMeta.size());
                // CHECKSTYLE:Indentation:OFF
                for (int i = 0; i < rowMeta.size(); i++) {
                    ValueMetaInterface valueMeta = rowMeta.getValueMeta(i);
                    if (valueMeta.isStorageBinaryString()) {
                        valueMeta.setStorageType(ValueMetaInterface.STORAGE_TYPE_NORMAL);
                    }
                    genMeta.getFieldName()[i] = valueMeta.getName();
                    genMeta.getFieldType()[i] = valueMeta.getTypeDesc();
                    genMeta.getFieldLength()[i] = valueMeta.getLength();
                    genMeta.getFieldPrecision()[i] = valueMeta.getPrecision();
                    genMeta.getCurrency()[i] = valueMeta.getCurrencySymbol();
                    genMeta.getDecimal()[i] = valueMeta.getDecimalSymbol();
                    genMeta.getGroup()[i] = valueMeta.getGroupingSymbol();
                    String string = null;
                    switch(valueMeta.getType()) {
                        case ValueMetaInterface.TYPE_DATE:
                            genMeta.getFieldFormat()[i] = "yyyy/MM/dd HH:mm:ss";
                            valueMeta.setConversionMask(genMeta.getFieldFormat()[i]);
                            string = valueMeta.getString(new Date());
                            break;
                        case ValueMetaInterface.TYPE_STRING:
                            string = "test value test value";
                            break;
                        case ValueMetaInterface.TYPE_INTEGER:
                            genMeta.getFieldFormat()[i] = "#";
                            valueMeta.setConversionMask(genMeta.getFieldFormat()[i]);
                            string = valueMeta.getString(Long.valueOf(0L));
                            break;
                        case ValueMetaInterface.TYPE_NUMBER:
                            genMeta.getFieldFormat()[i] = "#.#";
                            valueMeta.setConversionMask(genMeta.getFieldFormat()[i]);
                            string = valueMeta.getString(Double.valueOf(0.0D));
                            break;
                        case ValueMetaInterface.TYPE_BIGNUMBER:
                            genMeta.getFieldFormat()[i] = "#.#";
                            valueMeta.setConversionMask(genMeta.getFieldFormat()[i]);
                            string = valueMeta.getString(BigDecimal.ZERO);
                            break;
                        case ValueMetaInterface.TYPE_BOOLEAN:
                            string = valueMeta.getString(Boolean.TRUE);
                            break;
                        case ValueMetaInterface.TYPE_BINARY:
                            string = valueMeta.getString(new byte[] { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 });
                            break;
                        default:
                            break;
                    }
                    genMeta.getValue()[i] = string;
                }
            }
            StepMeta genStep = new StepMeta(registry.getPluginId(StepPluginType.class, genMeta), "## TEST DATA ##", genMeta);
            genStep.setLocation(50, 50);
            // Now create a JavaScript step with the information in this dialog
            // 
            ScriptMeta scriptMeta = new ScriptMeta();
            getInfo(scriptMeta);
            StepMeta scriptStep = new StepMeta(registry.getPluginId(StepPluginType.class, scriptMeta), Const.NVL(scriptStepName, "## SCRIPT ##"), scriptMeta);
            scriptStepName = scriptStep.getName();
            scriptStep.setLocation(150, 50);
            // Create a hop between both steps...
            // 
            TransHopMeta hop = new TransHopMeta(genStep, scriptStep);
            // Generate a new test transformation...
            // 
            TransMeta transMeta = new TransMeta();
            transMeta.setName(wStepname.getText() + " - PREVIEW");
            transMeta.addStep(genStep);
            transMeta.addStep(scriptStep);
            transMeta.addTransHop(hop);
            // 
            if (Spoon.getInstance().editStep(transMeta, genStep) != null) {
                // Now run this transformation and grab the results...
                // 
                TransPreviewProgressDialog progressDialog = new TransPreviewProgressDialog(shell, transMeta, new String[] { scriptStepName }, new int[] { Const.toInt(genMeta.getRowLimit(), 10) });
                progressDialog.open();
                Trans trans = progressDialog.getTrans();
                String loggingText = progressDialog.getLoggingText();
                if (!progressDialog.isCancelled()) {
                    if (trans.getResult() != null && trans.getResult().getNrErrors() > 0) {
                        EnterTextDialog etd = new EnterTextDialog(shell, BaseMessages.getString(PKG, "System.Dialog.PreviewError.Title"), BaseMessages.getString(PKG, "System.Dialog.PreviewError.Message"), loggingText, true);
                        etd.setReadOnly();
                        etd.open();
                    }
                }
                RowMetaInterface previewRowsMeta = progressDialog.getPreviewRowsMeta(wStepname.getText());
                List<Object[]> previewRows = progressDialog.getPreviewRows(wStepname.getText());
                if (previewRowsMeta != null && previewRows != null && previewRows.size() > 0) {
                    PreviewRowsDialog prd = new PreviewRowsDialog(shell, transMeta, SWT.NONE, wStepname.getText(), previewRowsMeta, previewRows, loggingText);
                    prd.open();
                }
            }
            return true;
        } else {
            throw new KettleException(BaseMessages.getString(PKG, "ScriptDialog.Exception.CouldNotGetFields"));
        }
    } catch (Exception e) {
        new ErrorDialog(shell, BaseMessages.getString(PKG, "ScriptDialog.TestFailed.DialogTitle"), BaseMessages.getString(PKG, "ScriptDialog.TestFailed.DialogMessage"), e);
        return false;
    }
}
Also used : KettleException(org.pentaho.di.core.exception.KettleException) TransPreviewProgressDialog(org.pentaho.di.ui.trans.dialog.TransPreviewProgressDialog) TransMeta(org.pentaho.di.trans.TransMeta) ErrorDialog(org.pentaho.di.ui.core.dialog.ErrorDialog) RowMetaInterface(org.pentaho.di.core.row.RowMetaInterface) PreviewRowsDialog(org.pentaho.di.ui.core.dialog.PreviewRowsDialog) RowGeneratorMeta(org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta) StepMeta(org.pentaho.di.trans.step.StepMeta) BaseStepMeta(org.pentaho.di.trans.step.BaseStepMeta) Point(org.eclipse.swt.graphics.Point) Date(java.util.Date) EvaluatorException(org.mozilla.javascript.EvaluatorException) JavaScriptException(org.mozilla.javascript.JavaScriptException) KettleException(org.pentaho.di.core.exception.KettleException) ValueMetaInterface(org.pentaho.di.core.row.ValueMetaInterface) ScriptMeta(org.pentaho.di.trans.steps.script.ScriptMeta) StepPluginType(org.pentaho.di.core.plugins.StepPluginType) PluginRegistry(org.pentaho.di.core.plugins.PluginRegistry) EnterTextDialog(org.pentaho.di.ui.core.dialog.EnterTextDialog) TransHopMeta(org.pentaho.di.trans.TransHopMeta) Trans(org.pentaho.di.trans.Trans)

Aggregations

Date (java.util.Date)1 Point (org.eclipse.swt.graphics.Point)1 EvaluatorException (org.mozilla.javascript.EvaluatorException)1 JavaScriptException (org.mozilla.javascript.JavaScriptException)1 KettleException (org.pentaho.di.core.exception.KettleException)1 PluginRegistry (org.pentaho.di.core.plugins.PluginRegistry)1 StepPluginType (org.pentaho.di.core.plugins.StepPluginType)1 RowMetaInterface (org.pentaho.di.core.row.RowMetaInterface)1 ValueMetaInterface (org.pentaho.di.core.row.ValueMetaInterface)1 Trans (org.pentaho.di.trans.Trans)1 TransHopMeta (org.pentaho.di.trans.TransHopMeta)1 TransMeta (org.pentaho.di.trans.TransMeta)1 BaseStepMeta (org.pentaho.di.trans.step.BaseStepMeta)1 StepMeta (org.pentaho.di.trans.step.StepMeta)1 RowGeneratorMeta (org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta)1 ScriptMeta (org.pentaho.di.trans.steps.script.ScriptMeta)1 EnterTextDialog (org.pentaho.di.ui.core.dialog.EnterTextDialog)1 ErrorDialog (org.pentaho.di.ui.core.dialog.ErrorDialog)1 PreviewRowsDialog (org.pentaho.di.ui.core.dialog.PreviewRowsDialog)1 TransPreviewProgressDialog (org.pentaho.di.ui.trans.dialog.TransPreviewProgressDialog)1