Search in sources :

Example 1 with Point

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

the class BaseStreamingDialog method createSubTransMeta.

protected TransMeta createSubTransMeta() {
    RecordsFromStreamMeta rm = new RecordsFromStreamMeta();
    String[] fieldNames = getFieldNames();
    int[] empty = new int[fieldNames.length];
    Arrays.fill(empty, -1);
    rm.setFieldname(fieldNames);
    rm.setType(getFieldTypes());
    rm.setLength(empty);
    rm.setPrecision(empty);
    StepMeta recsFromStream = new StepMeta("RecordsFromStream", "Get records from stream", rm);
    recsFromStream.setLocation(new Point(100, 100));
    recsFromStream.setDraw(true);
    TransMeta transMeta = new TransMeta();
    transMeta.addStep(recsFromStream);
    transMeta.setFilename("");
    return transMeta;
}
Also used : TransMeta(org.pentaho.di.trans.TransMeta) RecordsFromStreamMeta(org.pentaho.di.trans.steps.recordsfromstream.RecordsFromStreamMeta) Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint) StepMeta(org.pentaho.di.trans.step.StepMeta) BaseStepMeta(org.pentaho.di.trans.step.BaseStepMeta) BaseStreamStepMeta(org.pentaho.di.trans.streaming.common.BaseStreamStepMeta)

Example 2 with Point

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

the class SpoonJobDelegate method pasteXML.

public void pasteXML(JobMeta jobMeta, String clipcontent, Point loc) {
    try {
        Document doc = XMLHandler.loadXMLString(clipcontent);
        // De-select all, re-select pasted steps...
        jobMeta.unselectAll();
        Node entriesnode = XMLHandler.getSubNode(doc, Spoon.XML_TAG_JOB_JOB_ENTRIES);
        int nr = XMLHandler.countNodes(entriesnode, "entry");
        spoon.getLog().logDebug(spoon.toString(), "I found " + nr + " job entries to paste on location: " + loc);
        List<JobEntryCopy> entryList = new ArrayList<>(nr);
        // Point min = new Point(loc.x, loc.y);
        Point min = new Point(99999999, 99999999);
        for (int i = 0; i < nr; i++) {
            Node entrynode = XMLHandler.getSubNodeByNr(entriesnode, "entry", i);
            JobEntryCopy copy = new JobEntryCopy(entrynode, jobMeta.getDatabases(), jobMeta.getSlaveServers(), spoon.getRepository(), spoon.getMetaStore());
            if (copy.isStart() && (jobMeta.findStart() != null)) {
                JobGraph.showOnlyStartOnceMessage(spoon.getShell());
                continue;
            }
            String name = jobMeta.getAlternativeJobentryName(copy.getName());
            copy.setName(name);
            if (loc != null) {
                Point p = copy.getLocation();
                if (min.x > p.x) {
                    min.x = p.x;
                }
                if (min.y > p.y) {
                    min.y = p.y;
                }
            }
            entryList.add(copy);
        }
        JobEntryCopy[] entries = entryList.toArray(new JobEntryCopy[] {});
        // What's the difference between loc and min?
        // This is the offset:
        Point offset = new Point(loc.x - min.x, loc.y - min.y);
        // Undo/redo object positions...
        int[] position = new int[entries.length];
        for (int i = 0; i < entries.length; i++) {
            Point p = entries[i].getLocation();
            String name = entries[i].getName();
            entries[i].setLocation(p.x + offset.x, p.y + offset.y);
            // Check the name, find alternative...
            entries[i].setName(jobMeta.getAlternativeJobentryName(name));
            jobMeta.addJobEntry(entries[i]);
            position[i] = jobMeta.indexOfJobEntry(entries[i]);
        }
        // Save undo information too...
        spoon.addUndoNew(jobMeta, entries, position);
        if (jobMeta.hasChanged()) {
            spoon.refreshTree();
            spoon.refreshGraph();
        }
    } catch (KettleException e) {
        new ErrorDialog(spoon.getShell(), BaseMessages.getString(PKG, "Spoon.ErrorDialog.ErrorPasingJobEntries.Title"), BaseMessages.getString(PKG, "Spoon.ErrorDialog.ErrorPasingJobEntries.Message"), e);
    }
}
Also used : KettleException(org.pentaho.di.core.exception.KettleException) JobEntryCopy(org.pentaho.di.job.entry.JobEntryCopy) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) ErrorDialog(org.pentaho.di.ui.core.dialog.ErrorDialog) Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint) Document(org.w3c.dom.Document) Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint)

Example 3 with Point

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

the class SpoonJobDelegate method ripDB.

public JobMeta ripDB(final List<DatabaseMeta> databases, final String jobname, final RepositoryDirectoryInterface repdir, final String directory, final DatabaseMeta sourceDbInfo, final DatabaseMeta targetDbInfo, final String[] tables) {
    // 
    // Create a new job...
    // 
    final JobMeta jobMeta = new JobMeta();
    jobMeta.setDatabases(databases);
    jobMeta.setFilename(null);
    jobMeta.setName(jobname);
    if (spoon.getRepository() != null) {
        jobMeta.setRepositoryDirectory(repdir);
    } else {
        jobMeta.setFilename(Const.createFilename(directory, jobname, "." + Const.STRING_JOB_DEFAULT_EXT));
    }
    spoon.refreshTree();
    spoon.refreshGraph();
    final Point location = new Point(50, 50);
    // The start entry...
    final JobEntryCopy start = JobMeta.createStartEntry();
    start.setLocation(new Point(location.x, location.y));
    start.setDrawn();
    jobMeta.addJobEntry(start);
    // final Thread parentThread = Thread.currentThread();
    // Create a dialog with a progress indicator!
    IRunnableWithProgress op = monitor -> {
        try {
            // This is running in a new process: copy some KettleVariables
            // info
            // LocalVariables.getInstance().createKettleVariables(Thread.currentThread().getName(),
            // parentThread.getName(), true);
            monitor.beginTask(BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.BuildingNewJob"), tables.length);
            monitor.worked(0);
            JobEntryCopy previous = start;
            // Loop over the table-names...
            for (int i = 0; i < tables.length && !monitor.isCanceled(); i++) {
                monitor.setTaskName(BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.ProcessingTable") + tables[i] + "]...");
                // 
                // Create the new transformation...
                // 
                String transname = BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.Transname1") + sourceDbInfo + "].[" + tables[i] + BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.Transname2") + targetDbInfo + "]";
                TransMeta transMeta = new TransMeta();
                if (repdir != null) {
                    transMeta.setRepositoryDirectory(repdir);
                } else {
                    transMeta.setFilename(Const.createFilename(directory, transname, "." + Const.STRING_TRANS_DEFAULT_EXT));
                }
                // Add the source & target db
                transMeta.addDatabase(sourceDbInfo);
                transMeta.addDatabase(targetDbInfo);
                // 
                // Add a note
                // 
                String note = BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.Note1") + tables[i] + BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.Note2") + sourceDbInfo + "]" + Const.CR;
                note += BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.Note3") + tables[i] + BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.Note4") + targetDbInfo + "]";
                NotePadMeta ni = new NotePadMeta(note, 150, 10, -1, -1);
                transMeta.addNote(ni);
                // 
                // Add the TableInputMeta step...
                // 
                String fromstepname = BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.FromStep.Name") + tables[i] + "]";
                TableInputMeta tii = new TableInputMeta();
                tii.setDefault();
                tii.setDatabaseMeta(sourceDbInfo);
                // It's already quoted!
                tii.setSQL("SELECT * FROM " + tables[i]);
                String fromstepid = PluginRegistry.getInstance().getPluginId(StepPluginType.class, tii);
                StepMeta fromstep = new StepMeta(fromstepid, fromstepname, tii);
                fromstep.setLocation(150, 100);
                fromstep.setDraw(true);
                fromstep.setDescription(BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.FromStep.Description") + tables[i] + BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.FromStep.Description2") + sourceDbInfo + "]");
                transMeta.addStep(fromstep);
                // 
                // Add the TableOutputMeta step...
                // 
                String tostepname = BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.ToStep.Name") + tables[i] + "]";
                TableOutputMeta toi = new TableOutputMeta();
                toi.setDatabaseMeta(targetDbInfo);
                toi.setTableName(tables[i]);
                toi.setCommitSize(100);
                toi.setTruncateTable(true);
                String tostepid = PluginRegistry.getInstance().getPluginId(StepPluginType.class, toi);
                StepMeta tostep = new StepMeta(tostepid, tostepname, toi);
                tostep.setLocation(500, 100);
                tostep.setDraw(true);
                tostep.setDescription(BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.ToStep.Description1") + tables[i] + BaseMessages.getString(PKG, "Spoon.RipDB.Monitor.ToStep.Description2") + targetDbInfo + "]");
                transMeta.addStep(tostep);
                // 
                // Add a hop between the two steps...
                // 
                TransHopMeta hi = new TransHopMeta(fromstep, tostep);
                transMeta.addTransHop(hi);
                // 
                // Now we generate the SQL needed to run for this
                // transformation.
                // 
                // First set the limit to 1 to speed things up!
                String tmpSql = tii.getSQL();
                tii.setSQL(tii.getSQL() + sourceDbInfo.getLimitClause(1));
                String sql;
                try {
                    sql = transMeta.getSQLStatementsString();
                } catch (KettleStepException kse) {
                    throw new InvocationTargetException(kse, BaseMessages.getString(PKG, "Spoon.RipDB.Exception.ErrorGettingSQLFromTransformation") + transMeta + "] : " + kse.getMessage());
                }
                // remove the limit
                tii.setSQL(tmpSql);
                // 
                // Now, save the transformation...
                // 
                boolean ok;
                if (spoon.getRepository() != null) {
                    ok = spoon.saveToRepository(transMeta, false);
                } else {
                    ok = spoon.saveToFile(transMeta);
                }
                if (!ok) {
                    throw new InvocationTargetException(new Exception(BaseMessages.getString(PKG, "Spoon.RipDB.Exception.UnableToSaveTransformationToRepository")), BaseMessages.getString(PKG, "Spoon.RipDB.Exception.UnableToSaveTransformationToRepository"));
                }
                // We can now continue with the population of the job...
                // //////////////////////////////////////////////////////////////////////
                location.x = 250;
                if (i > 0) {
                    location.y += 100;
                }
                // 
                if (!Utils.isEmpty(sql)) {
                    String jesqlname = BaseMessages.getString(PKG, "Spoon.RipDB.JobEntrySQL.Name") + tables[i] + "]";
                    JobEntrySQL jesql = new JobEntrySQL(jesqlname);
                    jesql.setDatabase(targetDbInfo);
                    jesql.setSQL(sql);
                    jesql.setDescription(BaseMessages.getString(PKG, "Spoon.RipDB.JobEntrySQL.Description") + targetDbInfo + "].[" + tables[i] + "]");
                    JobEntryCopy jecsql = new JobEntryCopy();
                    jecsql.setEntry(jesql);
                    jecsql.setLocation(new Point(location.x, location.y));
                    jecsql.setDrawn();
                    jobMeta.addJobEntry(jecsql);
                    // Add the hop too...
                    JobHopMeta jhi = new JobHopMeta(previous, jecsql);
                    jobMeta.addJobHop(jhi);
                    previous = jecsql;
                }
                // 
                // Add the jobentry for the transformation too...
                // 
                String jetransname = BaseMessages.getString(PKG, "Spoon.RipDB.JobEntryTrans.Name") + tables[i] + "]";
                JobEntryTrans jetrans = new JobEntryTrans(jetransname);
                jetrans.setTransname(transMeta.getName());
                if (spoon.getRepository() != null) {
                    jetrans.setSpecificationMethod(ObjectLocationSpecificationMethod.REPOSITORY_BY_NAME);
                    jetrans.setDirectory(transMeta.getRepositoryDirectory().getPath());
                } else {
                    jetrans.setSpecificationMethod(ObjectLocationSpecificationMethod.FILENAME);
                    jetrans.setFileName(Const.createFilename("${" + Const.INTERNAL_VARIABLE_JOB_FILENAME_DIRECTORY + "}", transMeta.getName(), "." + Const.STRING_TRANS_DEFAULT_EXT));
                }
                JobEntryCopy jectrans = new JobEntryCopy(jetrans);
                jectrans.setDescription(BaseMessages.getString(PKG, "Spoon.RipDB.JobEntryTrans.Description1") + Const.CR + BaseMessages.getString(PKG, "Spoon.RipDB.JobEntryTrans.Description2") + sourceDbInfo + "].[" + tables[i] + "]" + Const.CR + BaseMessages.getString(PKG, "Spoon.RipDB.JobEntryTrans.Description3") + targetDbInfo + "].[" + tables[i] + "]");
                jectrans.setDrawn();
                location.x += 400;
                jectrans.setLocation(new Point(location.x, location.y));
                jobMeta.addJobEntry(jectrans);
                // Add a hop between the last 2 job entries.
                JobHopMeta jhi2 = new JobHopMeta(previous, jectrans);
                jobMeta.addJobHop(jhi2);
                previous = jectrans;
                monitor.worked(1);
            }
            monitor.worked(100);
            monitor.done();
        } catch (Exception e) {
            new ErrorDialog(spoon.getShell(), "Error", "An unexpected error occurred!", e);
        }
    };
    try {
        ProgressMonitorDialog pmd = new ProgressMonitorDialog(spoon.getShell());
        pmd.run(false, true, op);
    } catch (InvocationTargetException | InterruptedException e) {
        new ErrorDialog(spoon.getShell(), BaseMessages.getString(PKG, "Spoon.ErrorDialog.RipDB.ErrorRippingTheDatabase.Title"), BaseMessages.getString(PKG, "Spoon.ErrorDialog.RipDB.ErrorRippingTheDatabase.Message"), e);
        return null;
    } finally {
        spoon.refreshGraph();
        spoon.refreshTree();
    }
    return jobMeta;
}
Also used : DatabaseMeta(org.pentaho.di.core.database.DatabaseMeta) ObjectType(org.pentaho.di.ui.spoon.TabMapEntry.ObjectType) JobGraph(org.pentaho.di.ui.spoon.job.JobGraph) StepPluginType(org.pentaho.di.core.plugins.StepPluginType) TableOutputMeta(org.pentaho.di.trans.steps.tableoutput.TableOutputMeta) Point(org.pentaho.di.core.gui.Point) Date(java.util.Date) JobEntrySQL(org.pentaho.di.job.entries.sql.JobEntrySQL) GUIResource(org.pentaho.di.ui.core.gui.GUIResource) TransMeta(org.pentaho.di.trans.TransMeta) TabMapEntry(org.pentaho.di.ui.spoon.TabMapEntry) Document(org.w3c.dom.Document) Job(org.pentaho.di.job.Job) Map(java.util.Map) NotePadMeta(org.pentaho.di.core.NotePadMeta) JobEntryCopy(org.pentaho.di.job.entry.JobEntryCopy) BaseMessages(org.pentaho.di.i18n.BaseMessages) StepMeta(org.pentaho.di.trans.step.StepMeta) ProgressMonitorDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog) PropsUI(org.pentaho.di.ui.core.PropsUI) Wizard(org.eclipse.jface.wizard.Wizard) TabItem(org.pentaho.xul.swt.tab.TabItem) Utils(org.pentaho.di.core.util.Utils) JobEntryInterface(org.pentaho.di.job.entry.JobEntryInterface) InvocationTargetException(java.lang.reflect.InvocationTargetException) List(java.util.List) JobEntrySpecial(org.pentaho.di.job.entries.special.JobEntrySpecial) JobEntryDialogInterface(org.pentaho.di.job.entry.JobEntryDialogInterface) WizardDialog(org.eclipse.jface.wizard.WizardDialog) SWT(org.eclipse.swt.SWT) KettleStepException(org.pentaho.di.core.exception.KettleStepException) TransAction(org.pentaho.di.core.undo.TransAction) ErrorDialog(org.pentaho.di.ui.core.dialog.ErrorDialog) ObjectLocationSpecificationMethod(org.pentaho.di.core.ObjectLocationSpecificationMethod) JobHopMeta(org.pentaho.di.job.JobHopMeta) KettleException(org.pentaho.di.core.exception.KettleException) HashMap(java.util.HashMap) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint) JobEntryPluginType(org.pentaho.di.core.plugins.JobEntryPluginType) Constructor(java.lang.reflect.Constructor) Spoon(org.pentaho.di.ui.spoon.Spoon) ArrayList(java.util.ArrayList) PluginInterface(org.pentaho.di.core.plugins.PluginInterface) Const(org.pentaho.di.core.Const) XMLHandler(org.pentaho.di.core.xml.XMLHandler) PluginRegistry(org.pentaho.di.core.plugins.PluginRegistry) Node(org.w3c.dom.Node) JobExecutionConfiguration(org.pentaho.di.job.JobExecutionConfiguration) RipDatabaseWizardPage2(org.pentaho.di.ui.spoon.wizards.RipDatabaseWizardPage2) RipDatabaseWizardPage1(org.pentaho.di.ui.spoon.wizards.RipDatabaseWizardPage1) RipDatabaseWizardPage3(org.pentaho.di.ui.spoon.wizards.RipDatabaseWizardPage3) RepositoryDirectoryInterface(org.pentaho.di.repository.RepositoryDirectoryInterface) Shell(org.eclipse.swt.widgets.Shell) Repository(org.pentaho.di.repository.Repository) JobMeta(org.pentaho.di.job.JobMeta) DefaultLogLevel(org.pentaho.di.core.logging.DefaultLogLevel) TransHopMeta(org.pentaho.di.trans.TransHopMeta) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) MessageBox(org.eclipse.swt.widgets.MessageBox) VisibleForTesting(com.google.common.annotations.VisibleForTesting) JobEntryTrans(org.pentaho.di.job.entries.trans.JobEntryTrans) TableInputMeta(org.pentaho.di.trans.steps.tableinput.TableInputMeta) JobExecutionConfigurationDialog(org.pentaho.di.ui.job.dialog.JobExecutionConfigurationDialog) ExtensionPointHandler(org.pentaho.di.core.extension.ExtensionPointHandler) JobMeta(org.pentaho.di.job.JobMeta) JobHopMeta(org.pentaho.di.job.JobHopMeta) KettleStepException(org.pentaho.di.core.exception.KettleStepException) ProgressMonitorDialog(org.eclipse.jface.dialogs.ProgressMonitorDialog) TransMeta(org.pentaho.di.trans.TransMeta) ErrorDialog(org.pentaho.di.ui.core.dialog.ErrorDialog) TableOutputMeta(org.pentaho.di.trans.steps.tableoutput.TableOutputMeta) Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint) JobEntrySQL(org.pentaho.di.job.entries.sql.JobEntrySQL) StepMeta(org.pentaho.di.trans.step.StepMeta) TableInputMeta(org.pentaho.di.trans.steps.tableinput.TableInputMeta) InvocationTargetException(java.lang.reflect.InvocationTargetException) InvocationTargetException(java.lang.reflect.InvocationTargetException) KettleStepException(org.pentaho.di.core.exception.KettleStepException) KettleException(org.pentaho.di.core.exception.KettleException) IRunnableWithProgress(org.eclipse.jface.operation.IRunnableWithProgress) JobEntryCopy(org.pentaho.di.job.entry.JobEntryCopy) StepPluginType(org.pentaho.di.core.plugins.StepPluginType) JobEntryTrans(org.pentaho.di.job.entries.trans.JobEntryTrans) NotePadMeta(org.pentaho.di.core.NotePadMeta) TransHopMeta(org.pentaho.di.trans.TransHopMeta)

Example 4 with Point

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

the class SpoonJobDelegate method undoJobAction.

public void undoJobAction(JobMeta jobMeta, TransAction transAction) {
    switch(transAction.getType()) {
        // We created a new entry : undo this...
        case TransAction.TYPE_ACTION_NEW_JOB_ENTRY:
            // Delete the entry at correct location:
            int[] idx = transAction.getCurrentIndex();
            for (int i = idx.length - 1; i >= 0; i--) {
                jobMeta.removeJobEntry(idx[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We created a new note : undo this...
        case TransAction.TYPE_ACTION_NEW_NOTE:
            // Delete the note at correct location:
            idx = transAction.getCurrentIndex();
            for (int i = idx.length - 1; i >= 0; i--) {
                jobMeta.removeNote(idx[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We created a new hop : undo this...
        case TransAction.TYPE_ACTION_NEW_JOB_HOP:
            // Delete the hop at correct location:
            idx = transAction.getCurrentIndex();
            for (int i = idx.length - 1; i >= 0; i--) {
                jobMeta.removeJobHop(idx[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We delete an entry : undo this...
        case TransAction.TYPE_ACTION_DELETE_JOB_ENTRY:
            // un-Delete the entry at correct location: re-insert
            JobEntryCopy[] ce = (JobEntryCopy[]) transAction.getCurrent();
            idx = transAction.getCurrentIndex();
            for (int i = 0; i < ce.length; i++) {
                jobMeta.addJobEntry(idx[i], ce[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We delete new note : undo this...
        case TransAction.TYPE_ACTION_DELETE_NOTE:
            // re-insert the note at correct location:
            NotePadMeta[] ni = (NotePadMeta[]) transAction.getCurrent();
            idx = transAction.getCurrentIndex();
            for (int i = 0; i < idx.length; i++) {
                jobMeta.addNote(idx[i], ni[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We deleted a new hop : undo this...
        case TransAction.TYPE_ACTION_DELETE_JOB_HOP:
            // re-insert the hop at correct location:
            JobHopMeta[] hi = (JobHopMeta[]) transAction.getCurrent();
            idx = transAction.getCurrentIndex();
            for (int i = 0; i < hi.length; i++) {
                jobMeta.addJobHop(idx[i], hi[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We changed a job entry: undo this...
        case TransAction.TYPE_ACTION_CHANGE_JOB_ENTRY:
            // Delete the current job entry, insert previous version.
            for (int i = 0; i < transAction.getPrevious().length; i++) {
                JobEntryCopy copy = (JobEntryCopy) ((JobEntryCopy) transAction.getPrevious()[i]).clone();
                jobMeta.getJobEntry(transAction.getCurrentIndex()[i]).replaceMeta(copy);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We changed a note : undo this...
        case TransAction.TYPE_ACTION_CHANGE_NOTE:
            // Delete & re-insert
            NotePadMeta[] prev = (NotePadMeta[]) transAction.getPrevious();
            idx = transAction.getCurrentIndex();
            for (int i = 0; i < idx.length; i++) {
                jobMeta.removeNote(idx[i]);
                jobMeta.addNote(idx[i], prev[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // We changed a hop : undo this...
        case TransAction.TYPE_ACTION_CHANGE_JOB_HOP:
            // Delete & re-insert
            JobHopMeta[] prevHops = (JobHopMeta[]) transAction.getPrevious();
            idx = transAction.getCurrentIndex();
            for (int i = 0; i < idx.length; i++) {
                jobMeta.removeJobHop(idx[i]);
                jobMeta.addJobHop(idx[i], prevHops[i]);
            }
            spoon.refreshTree();
            spoon.refreshGraph();
            break;
        // The position of a step has changed: undo this...
        case TransAction.TYPE_ACTION_POSITION_JOB_ENTRY:
            // Find the location of the step:
            idx = transAction.getCurrentIndex();
            Point[] p = transAction.getPreviousLocation();
            for (int i = 0; i < p.length; i++) {
                JobEntryCopy entry = jobMeta.getJobEntry(idx[i]);
                entry.setLocation(p[i]);
            }
            spoon.refreshGraph();
            break;
        // The position of a note has changed: undo this...
        case TransAction.TYPE_ACTION_POSITION_NOTE:
            idx = transAction.getCurrentIndex();
            Point[] prevLoc = transAction.getPreviousLocation();
            for (int i = 0; i < idx.length; i++) {
                NotePadMeta npi = jobMeta.getNote(idx[i]);
                npi.setLocation(prevLoc[i]);
            }
            spoon.refreshGraph();
            break;
        default:
            break;
    }
}
Also used : JobEntryCopy(org.pentaho.di.job.entry.JobEntryCopy) JobHopMeta(org.pentaho.di.job.JobHopMeta) NotePadMeta(org.pentaho.di.core.NotePadMeta) Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint) Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint)

Example 5 with Point

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

the class SpoonStepsDelegate method dupeStep.

public void dupeStep(TransMeta transMeta, StepMeta stepMeta) {
    spoon.getLog().logDebug(toString(), // Duplicate
    BaseMessages.getString(PKG, "Spoon.Log.DuplicateStep") + stepMeta.getName());
    // step:
    StepMeta stMeta = (StepMeta) stepMeta.clone();
    if (stMeta != null) {
        String newname = transMeta.getAlternativeStepname(stepMeta.getName());
        int nr = 2;
        while (transMeta.findStep(newname) != null) {
            newname = stepMeta.getName() + " (copy " + nr + ")";
            nr++;
        }
        stMeta.setName(newname);
        // Don't select this new step!
        stMeta.setSelected(false);
        Point loc = stMeta.getLocation();
        stMeta.setLocation(loc.x + 20, loc.y + 20);
        transMeta.addStep(stMeta);
        spoon.addUndoNew(transMeta, new StepMeta[] { (StepMeta) stMeta.clone() }, new int[] { transMeta.indexOfStep(stMeta) });
        spoon.refreshTree();
        spoon.refreshGraph();
    }
}
Also used : Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint) StepMeta(org.pentaho.di.trans.step.StepMeta) Point(org.pentaho.di.core.gui.Point) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint)

Aggregations

Point (org.pentaho.di.core.gui.Point)141 KettleExtensionPoint (org.pentaho.di.core.extension.KettleExtensionPoint)72 Test (org.junit.Test)37 StepMeta (org.pentaho.di.trans.step.StepMeta)34 NotePadMeta (org.pentaho.di.core.NotePadMeta)29 KettleException (org.pentaho.di.core.exception.KettleException)28 JobEntryCopy (org.pentaho.di.job.entry.JobEntryCopy)28 PrintWriter (java.io.PrintWriter)26 HttpServletRequest (javax.servlet.http.HttpServletRequest)26 HttpServletResponse (javax.servlet.http.HttpServletResponse)26 LogChannelInterface (org.pentaho.di.core.logging.LogChannelInterface)26 TransMeta (org.pentaho.di.trans.TransMeta)25 StringWriter (java.io.StringWriter)24 AreaOwner (org.pentaho.di.core.gui.AreaOwner)22 Trans (org.pentaho.di.trans.Trans)18 JobMeta (org.pentaho.di.job.JobMeta)17 ArrayList (java.util.ArrayList)16 TransHopMeta (org.pentaho.di.trans.TransHopMeta)14 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)14 KettleRepositoryLostException (org.pentaho.di.repository.KettleRepositoryLostException)12