Search in sources :

Example 6 with TreeSelection

use of org.pentaho.di.ui.spoon.TreeSelection in project pdi-dataservice-server-plugin by pentaho.

the class DataServiceTreeDelegateExtension method callExtensionPoint.

@Override
public void callExtensionPoint(LogChannelInterface log, Object extension) throws KettleException {
    SpoonTreeDelegateExtension treeDelExt = (SpoonTreeDelegateExtension) extension;
    int caseNumber = treeDelExt.getCaseNumber();
    if (!(treeDelExt.getTransMeta() instanceof TransMeta)) {
        return;
    }
    TransMeta transMeta = (TransMeta) treeDelExt.getTransMeta();
    String[] path = treeDelExt.getPath();
    List<TreeSelection> objects = treeDelExt.getObjects();
    TreeSelection object = null;
    if (path[2].equals(STRING_DATA_SERVICES)) {
        switch(caseNumber) {
            case 3:
                object = new TreeSelection(path[2], DataServiceMeta.class, transMeta);
                break;
            case 4:
                try {
                    DataServiceMeta dataService = metaStoreUtil.getDataService(path[3], transMeta);
                    object = new TreeSelection(path[3], dataService, transMeta);
                } catch (Exception e) {
                // Do Nothing
                }
                break;
        }
    }
    if (object != null) {
        objects.add(object);
    }
}
Also used : DataServiceMeta(org.pentaho.di.trans.dataservice.DataServiceMeta) TreeSelection(org.pentaho.di.ui.spoon.TreeSelection) SpoonTreeDelegateExtension(org.pentaho.di.ui.spoon.delegates.SpoonTreeDelegateExtension) TransMeta(org.pentaho.di.trans.TransMeta) ExtensionPoint(org.pentaho.di.core.extension.ExtensionPoint) KettleException(org.pentaho.di.core.exception.KettleException)

Example 7 with TreeSelection

use of org.pentaho.di.ui.spoon.TreeSelection in project pentaho-kettle by pentaho.

the class RunConfigurationTreeDelegateExtension method callExtensionPoint.

@Override
public void callExtensionPoint(LogChannelInterface log, Object extension) throws KettleException {
    SpoonTreeDelegateExtension treeDelExt = (SpoonTreeDelegateExtension) extension;
    int caseNumber = treeDelExt.getCaseNumber();
    AbstractMeta meta = treeDelExt.getTransMeta();
    String[] path = treeDelExt.getPath();
    List<TreeSelection> objects = treeDelExt.getObjects();
    TreeSelection object = null;
    if (path[2].equals(RunConfigurationViewTreeExtension.TREE_LABEL)) {
        switch(caseNumber) {
            case 3:
                object = new TreeSelection(path[2], RunConfiguration.class, meta);
                break;
            case 4:
                try {
                    final String name = path[3];
                    if (!name.equalsIgnoreCase(DefaultRunConfigurationProvider.DEFAULT_CONFIG_NAME)) {
                        object = new TreeSelection(path[3], path[3], meta);
                    }
                } catch (Exception e) {
                // Do Nothing
                }
                break;
        }
    }
    if (object != null) {
        objects.add(object);
    }
}
Also used : RunConfiguration(org.pentaho.di.engine.configuration.api.RunConfiguration) TreeSelection(org.pentaho.di.ui.spoon.TreeSelection) AbstractMeta(org.pentaho.di.base.AbstractMeta) SpoonTreeDelegateExtension(org.pentaho.di.ui.spoon.delegates.SpoonTreeDelegateExtension) ExtensionPoint(org.pentaho.di.core.extension.ExtensionPoint) KettleException(org.pentaho.di.core.exception.KettleException)

Example 8 with TreeSelection

use of org.pentaho.di.ui.spoon.TreeSelection in project pentaho-kettle by pentaho.

the class ConnectionTreeDelegateExtension method callExtensionPoint.

@Override
public void callExtensionPoint(LogChannelInterface log, Object extension) throws KettleException {
    SpoonTreeDelegateExtension treeDelExt = (SpoonTreeDelegateExtension) extension;
    int caseNumber = treeDelExt.getCaseNumber();
    AbstractMeta meta = treeDelExt.getTransMeta();
    String[] path = treeDelExt.getPath();
    List<TreeSelection> objects = treeDelExt.getObjects();
    TreeSelection object = null;
    if (path[2].equals(ConnectionFolderProvider.STRING_VFS_CONNECTIONS)) {
        switch(caseNumber) {
            case 3:
                object = new TreeSelection(path[2], VFSConnectionDetails.class, meta);
                break;
            case 4:
                try {
                    final String name = path[3];
                    object = new TreeSelection(name, new ConnectionTreeItem(name), meta);
                } catch (Exception e) {
                // Do Nothing
                }
                break;
        }
    }
    if (object != null) {
        objects.add(object);
    }
}
Also used : TreeSelection(org.pentaho.di.ui.spoon.TreeSelection) AbstractMeta(org.pentaho.di.base.AbstractMeta) SpoonTreeDelegateExtension(org.pentaho.di.ui.spoon.delegates.SpoonTreeDelegateExtension) VFSConnectionDetails(org.pentaho.di.connections.vfs.VFSConnectionDetails) ExtensionPoint(org.pentaho.di.core.extension.ExtensionPoint) KettleException(org.pentaho.di.core.exception.KettleException)

Example 9 with TreeSelection

use of org.pentaho.di.ui.spoon.TreeSelection in project pentaho-kettle by pentaho.

the class SpoonTreeDelegate method getTreeObjects.

/**
 * @return The object that is selected in the tree or null if we couldn't figure it out. (titles etc. == null)
 */
public TreeSelection[] getTreeObjects(final Tree tree, Tree selectionTree, Tree coreObjectsTree) {
    List<TreeSelection> objects = new ArrayList<TreeSelection>();
    if (selectionTree != null && !selectionTree.isDisposed() && tree.equals(selectionTree)) {
        TreeItem[] selection = selectionTree.getSelection();
        for (int s = 0; s < selection.length; s++) {
            TreeItem treeItem = selection[s];
            String[] path = ConstUI.getTreeStrings(treeItem);
            TreeSelection object = null;
            switch(path.length) {
                case 0:
                    break;
                case // ------complete-----
                1:
                    if (path[0].equals(Spoon.STRING_TRANSFORMATIONS)) {
                        // the top level Transformations entry
                        object = new TreeSelection(path[0], TransMeta.class);
                    }
                    if (path[0].equals(Spoon.STRING_JOBS)) {
                        // the top level Jobs entry
                        object = new TreeSelection(path[0], JobMeta.class);
                    }
                    break;
                case // ------complete-----
                2:
                    if (path[0].equals(Spoon.STRING_BUILDING_BLOCKS)) {
                        if (path[1].equals(Spoon.STRING_TRANS_BASE)) {
                            object = new TreeSelection(path[1], PluginInterface.class);
                        }
                    }
                    if (path[0].equals(Spoon.STRING_TRANSFORMATIONS)) {
                        // Transformation title
                        object = new TreeSelection(path[1], spoon.delegates.trans.getTransformation(path[1]));
                    }
                    if (path[0].equals(Spoon.STRING_JOBS)) {
                        // Jobs title
                        object = new TreeSelection(path[1], spoon.delegates.jobs.getJob(path[1]));
                    }
                    break;
                case // ------complete-----
                3:
                    if (path[0].equals(Spoon.STRING_TRANSFORMATIONS)) {
                        // Transformations title
                        TransMeta transMeta = spoon.delegates.trans.getTransformation(path[1]);
                        if (path[2].equals(Spoon.STRING_CONNECTIONS)) {
                            object = new TreeSelection(path[2], DatabaseMeta.class, transMeta);
                        }
                        if (path[2].equals(Spoon.STRING_STEPS)) {
                            object = new TreeSelection(path[2], StepMeta.class, transMeta);
                        }
                        if (path[2].equals(Spoon.STRING_HOPS)) {
                            object = new TreeSelection(path[2], TransHopMeta.class, transMeta);
                        }
                        if (path[2].equals(Spoon.STRING_PARTITIONS)) {
                            object = new TreeSelection(path[2], PartitionSchema.class, transMeta);
                        }
                        if (path[2].equals(Spoon.STRING_SLAVES)) {
                            object = new TreeSelection(path[2], SlaveServer.class, transMeta);
                        }
                        if (path[2].equals(Spoon.STRING_CLUSTERS)) {
                            object = new TreeSelection(path[2], ClusterSchema.class, transMeta);
                        }
                        executeExtensionPoint(new SpoonTreeDelegateExtension(transMeta, path, 3, objects));
                    }
                    if (path[0].equals(Spoon.STRING_JOBS)) {
                        // Jobs title
                        JobMeta jobMeta = spoon.delegates.jobs.getJob(path[1]);
                        if (path[2].equals(Spoon.STRING_CONNECTIONS)) {
                            object = new TreeSelection(path[2], DatabaseMeta.class, jobMeta);
                        }
                        if (path[2].equals(Spoon.STRING_JOB_ENTRIES)) {
                            object = new TreeSelection(path[2], JobEntryCopy.class, jobMeta);
                        }
                        if (path[2].equals(Spoon.STRING_SLAVES)) {
                            object = new TreeSelection(path[2], SlaveServer.class, jobMeta);
                        }
                        executeExtensionPoint(new SpoonTreeDelegateExtension(jobMeta, path, 3, objects));
                    }
                    break;
                case // ------complete-----
                4:
                    if (path[0].equals(Spoon.STRING_TRANSFORMATIONS)) {
                        // The name of a transformation
                        final TransMeta transMeta = spoon.delegates.trans.getTransformation(path[1]);
                        if (transMeta != null) {
                            if (path[2].equals(Spoon.STRING_CONNECTIONS)) {
                                String dbName = path[3];
                                DatabaseMeta databaseMeta = transMeta.findDatabase(dbName);
                                if (databaseMeta != null) {
                                    dbName = databaseMeta.getName();
                                }
                                object = new TreeSelection(dbName, databaseMeta, transMeta);
                            }
                            if (path[2].equals(Spoon.STRING_STEPS)) {
                                object = new TreeSelection(path[3], transMeta.findStep(path[3]), transMeta);
                            }
                            if (path[2].equals(Spoon.STRING_HOPS)) {
                                object = new TreeSelection(path[3], transMeta.findTransHop(path[3]), transMeta);
                            }
                            if (path[2].equals(Spoon.STRING_PARTITIONS)) {
                                object = new TreeSelection(path[3], transMeta.findPartitionSchema(path[3]), transMeta);
                            }
                            if (path[2].equals(Spoon.STRING_SLAVES)) {
                                object = new TreeSelection(path[3], transMeta.findSlaveServer(path[3]), transMeta);
                            }
                            if (path[2].equals(Spoon.STRING_CLUSTERS)) {
                                object = new TreeSelection(path[3], transMeta.findClusterSchema(path[3]), transMeta);
                            }
                            executeExtensionPoint(new SpoonTreeDelegateExtension(transMeta, path, 4, objects));
                        }
                    }
                    if (path[0].equals(Spoon.STRING_JOBS)) {
                        // The name of a job
                        JobMeta jobMeta = spoon.delegates.jobs.getJob(path[1]);
                        if (jobMeta != null && path[2].equals(Spoon.STRING_CONNECTIONS)) {
                            String dbName = path[3];
                            DatabaseMeta databaseMeta = jobMeta.findDatabase(dbName);
                            if (databaseMeta != null) {
                                dbName = databaseMeta.getName();
                            }
                            object = new TreeSelection(dbName, databaseMeta, jobMeta);
                        }
                        if (jobMeta != null && path[2].equals(Spoon.STRING_JOB_ENTRIES)) {
                            object = new TreeSelection(path[3], jobMeta.findJobEntry(path[3]), jobMeta);
                        }
                        if (jobMeta != null && path[2].equals(Spoon.STRING_SLAVES)) {
                            object = new TreeSelection(path[3], jobMeta.findSlaveServer(path[3]), jobMeta);
                        }
                        executeExtensionPoint(new SpoonTreeDelegateExtension(jobMeta, path, 4, objects));
                    }
                    break;
                case 5:
                    if (path[0].equals(Spoon.STRING_TRANSFORMATIONS)) {
                        // The name of a transformation
                        TransMeta transMeta = spoon.delegates.trans.getTransformation(path[1]);
                        if (transMeta != null && path[2].equals(Spoon.STRING_CLUSTERS)) {
                            ClusterSchema clusterSchema = transMeta.findClusterSchema(path[3]);
                            object = new TreeSelection(path[4], clusterSchema.findSlaveServer(path[4]), clusterSchema, transMeta);
                        }
                    }
                    break;
                default:
                    break;
            }
            if (object != null) {
                objects.add(object);
            }
        }
    }
    if (tree != null && coreObjectsTree != null && tree.equals(coreObjectsTree)) {
        TreeItem[] selection = coreObjectsTree.getSelection();
        for (int s = 0; s < selection.length; s++) {
            TreeItem treeItem = selection[s];
            String[] path = ConstUI.getTreeStrings(treeItem);
            TreeSelection object = null;
            switch(path.length) {
                case 0:
                    break;
                case // Job entries
                2:
                    if (spoon.showJob) {
                        PluginRegistry registry = PluginRegistry.getInstance();
                        Class<? extends PluginTypeInterface> pluginType = JobEntryPluginType.class;
                        PluginInterface plugin = registry.findPluginWithName(pluginType, path[1]);
                        // 
                        if (plugin == null) {
                            if (path[1].equalsIgnoreCase(JobMeta.STRING_SPECIAL_START)) {
                                plugin = registry.findPluginWithId(pluginType, JobMeta.STRING_SPECIAL);
                            }
                        }
                        // 
                        if (plugin == null) {
                            if (path[1].equalsIgnoreCase(JobMeta.STRING_SPECIAL_DUMMY)) {
                                plugin = registry.findPluginWithId(pluginType, JobMeta.STRING_SPECIAL);
                            }
                        }
                        if (plugin != null) {
                            object = new TreeSelection(path[1], plugin);
                        }
                    }
                    if (spoon.showTrans) {
                        String stepId = (String) treeItem.getData("StepId");
                        if (stepId != null) {
                            object = new TreeSelection(path[1], PluginRegistry.getInstance().findPluginWithId(StepPluginType.class, stepId));
                        } else {
                            object = new TreeSelection(path[1], PluginRegistry.getInstance().findPluginWithName(StepPluginType.class, path[1]));
                        }
                    }
                    break;
                default:
                    break;
            }
            if (object != null) {
                objects.add(object);
            }
        }
    }
    return objects.toArray(new TreeSelection[objects.size()]);
}
Also used : JobMeta(org.pentaho.di.job.JobMeta) TreeItem(org.eclipse.swt.widgets.TreeItem) PartitionSchema(org.pentaho.di.partition.PartitionSchema) PluginInterface(org.pentaho.di.core.plugins.PluginInterface) ArrayList(java.util.ArrayList) TransMeta(org.pentaho.di.trans.TransMeta) SlaveServer(org.pentaho.di.cluster.SlaveServer) DatabaseMeta(org.pentaho.di.core.database.DatabaseMeta) StepMeta(org.pentaho.di.trans.step.StepMeta) KettleExtensionPoint(org.pentaho.di.core.extension.KettleExtensionPoint) JobEntryPluginType(org.pentaho.di.core.plugins.JobEntryPluginType) JobEntryCopy(org.pentaho.di.job.entry.JobEntryCopy) TreeSelection(org.pentaho.di.ui.spoon.TreeSelection) PluginRegistry(org.pentaho.di.core.plugins.PluginRegistry) TransHopMeta(org.pentaho.di.trans.TransHopMeta) ClusterSchema(org.pentaho.di.cluster.ClusterSchema)

Example 10 with TreeSelection

use of org.pentaho.di.ui.spoon.TreeSelection in project pentaho-kettle by pentaho.

the class SpoonTreeDelegateTest method getTreeObjects_getStepByName.

@Test
public void getTreeObjects_getStepByName() {
    SpoonTreeDelegate std = spy(new SpoonTreeDelegate(spoon));
    Tree selection = mock(Tree.class);
    Tree core = mock(Tree.class);
    TreeItem item = mock(TreeItem.class);
    PluginInterface step = mock(PluginInterface.class);
    PluginRegistry registry = mock(PluginRegistry.class);
    TreeItem[] items = new TreeItem[] { item };
    when(ConstUI.getTreeStrings(item)).thenReturn(new String[] { "Output", "Delete" });
    when(PluginRegistry.getInstance()).thenReturn(registry);
    doReturn(items).when(core).getSelection();
    doReturn(null).when(item).getData(anyString());
    doReturn(step).when(registry).findPluginWithName(StepPluginType.class, "Delete");
    spoon.showJob = false;
    spoon.showTrans = true;
    TreeSelection[] ts = std.getTreeObjects(core, selection, core);
    assertEquals(1, ts.length);
    assertEquals(step, ts[0].getSelection());
}
Also used : TreeItem(org.eclipse.swt.widgets.TreeItem) TreeSelection(org.pentaho.di.ui.spoon.TreeSelection) PluginInterface(org.pentaho.di.core.plugins.PluginInterface) PluginRegistry(org.pentaho.di.core.plugins.PluginRegistry) Tree(org.eclipse.swt.widgets.Tree) Test(org.junit.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Aggregations

TreeSelection (org.pentaho.di.ui.spoon.TreeSelection)10 Tree (org.eclipse.swt.widgets.Tree)5 PluginInterface (org.pentaho.di.core.plugins.PluginInterface)4 Menu (org.eclipse.swt.widgets.Menu)3 TreeItem (org.eclipse.swt.widgets.TreeItem)3 KettleException (org.pentaho.di.core.exception.KettleException)3 ExtensionPoint (org.pentaho.di.core.extension.ExtensionPoint)3 PluginRegistry (org.pentaho.di.core.plugins.PluginRegistry)3 TransMeta (org.pentaho.di.trans.TransMeta)3 SpoonTreeDelegateExtension (org.pentaho.di.ui.spoon.delegates.SpoonTreeDelegateExtension)3 Test (org.junit.Test)2 AbstractMeta (org.pentaho.di.base.AbstractMeta)2 DatabaseMeta (org.pentaho.di.core.database.DatabaseMeta)2 JobEntryCopy (org.pentaho.di.job.entry.JobEntryCopy)2 TransHopMeta (org.pentaho.di.trans.TransHopMeta)2 DataServiceMeta (org.pentaho.di.trans.dataservice.DataServiceMeta)2 StepMeta (org.pentaho.di.trans.step.StepMeta)2 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)2 ArrayList (java.util.ArrayList)1 DragSource (org.eclipse.swt.dnd.DragSource)1