Search in sources :

Example 51 with Pair

use of org.knime.core.util.Pair in project knime-core by knime.

the class NodeOutputView method updateSettingsTable.

/*
     *  Put info about node settings into table.
     */
private void updateSettingsTable(final NodeContainer nc, final boolean showAll) {
    assert Display.getCurrent().getThread() == Thread.currentThread();
    // display swt table
    ((StackLayout) m_stackPanel.getLayout()).topControl = m_table;
    m_stackPanel.layout();
    m_info.setText("Node Configuration");
    // retrieve settings
    NodeSettings settings = new NodeSettings("");
    try {
        nc.getParent().saveNodeSettings(nc.getID(), settings);
    } catch (InvalidSettingsException ise) {
    // never happens.
    }
    // and put them into the table
    m_table.removeAll();
    for (TableColumn tc : m_table.getColumns()) {
        tc.dispose();
    }
    String[] titles = { "Key", "Value" };
    for (int i = 0; i < titles.length; i++) {
        TableColumn column = new TableColumn(m_table, SWT.NONE);
        column.setText(titles[i]);
    }
    // add information about plugin and version to list (in show all/expert mode only)
    if ((nc instanceof NativeNodeContainer) && showAll) {
        NativeNodeContainer nnc = (NativeNodeContainer) nc;
        TableItem item4 = new TableItem(m_table, SWT.NONE);
        item4.setText(0, "Node's feature name");
        item4.setText(1, nnc.getNodeAndBundleInformation().getFeatureName().orElse("?"));
        TableItem item5 = new TableItem(m_table, SWT.NONE);
        item5.setText(0, "Node's feature symbolic name");
        item5.setText(1, nnc.getNodeAndBundleInformation().getFeatureSymbolicName().orElse("?"));
        TableItem item6 = new TableItem(m_table, SWT.NONE);
        item6.setText(0, "Node's feature version (last saved with)");
        item6.setText(1, nnc.getNodeAndBundleInformation().getFeatureVersion().map(v -> v.toString()).orElse("?"));
        TableItem item1 = new TableItem(m_table, SWT.NONE);
        item1.setText(0, "Node's plug-in name");
        item1.setText(1, nnc.getNodeAndBundleInformation().getBundleName().orElse("?"));
        TableItem item2 = new TableItem(m_table, SWT.NONE);
        item2.setText(0, "Node's plug-in symbolic name");
        item2.setText(1, nnc.getNodeAndBundleInformation().getBundleSymbolicName().orElse("?"));
        TableItem item3 = new TableItem(m_table, SWT.NONE);
        item3.setText(0, "Node's plug-in version (last saved with)");
        item3.setText(1, nnc.getNodeAndBundleInformation().getBundleVersion().map(v -> v.toString()).orElse("?"));
    }
    // add settings to table
    Stack<Pair<Iterator<String>, ConfigBase>> stack = new Stack<Pair<Iterator<String>, ConfigBase>>();
    Iterator<String> it = settings.keySet().iterator();
    if (it.hasNext()) {
        stack.push(new Pair<Iterator<String>, ConfigBase>(it, settings));
    }
    while (!stack.isEmpty()) {
        String key = stack.peek().getFirst().next();
        int depth = stack.size();
        boolean noexpertskip = (depth <= 1);
        AbstractConfigEntry ace = stack.peek().getSecond().getEntry(key);
        if (!stack.peek().getFirst().hasNext()) {
            stack.pop();
        }
        if (ace.getType().equals(ConfigEntries.config)) {
            // it's another Config entry, push on stack!
            String val = ace.toStringValue();
            if ((!val.endsWith("_Internals")) || showAll) {
                Iterator<String> it2 = ((ConfigBase) ace).iterator();
                if (it2.hasNext()) {
                    stack.push(new Pair<Iterator<String>, ConfigBase>(it2, (ConfigBase) ace));
                }
            } else {
                noexpertskip = true;
            }
        }
        // in both cases, we report its value
        if ((!noexpertskip) || showAll) {
            String value = ace.toStringValue();
            TableItem item = new TableItem(m_table, SWT.NONE);
            char[] indent = new char[depth - 1];
            Arrays.fill(indent, '_');
            item.setText(0, new String(indent) + key);
            item.setText(1, value != null ? value : "null");
        }
    }
    for (int i = 0; i < m_table.getColumnCount(); i++) {
        m_table.getColumn(i).pack();
    }
}
Also used : AbstractConfigEntry(org.knime.core.node.config.base.AbstractConfigEntry) TableItem(org.eclipse.swt.widgets.TableItem) ConfigBase(org.knime.core.node.config.base.ConfigBase) TableColumn(org.eclipse.swt.widgets.TableColumn) Point(org.eclipse.swt.graphics.Point) Stack(java.util.Stack) FlowObjectStack(org.knime.core.node.workflow.FlowObjectStack) NodeSettings(org.knime.core.node.NodeSettings) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) Iterator(java.util.Iterator) NativeNodeContainer(org.knime.core.node.workflow.NativeNodeContainer) Pair(org.knime.core.util.Pair)

Example 52 with Pair

use of org.knime.core.util.Pair in project knime-core by knime.

the class NodeMonitorView method updateSettingsTable.

/*
     *  Put info about node settings into table.
     */
private void updateSettingsTable(final NodeContainerUI nc, final boolean showAll) {
    assert Display.getCurrent().getThread() == Thread.currentThread();
    m_info.setText("Node Configuration");
    // retrieve settings
    ConfigBaseRO settings = nc.getNodeSettings();
    // and put them into the table
    m_table.removeAll();
    for (TableColumn tc : m_table.getColumns()) {
        tc.dispose();
    }
    String[] titles = { "Key", "Value" };
    for (int i = 0; i < titles.length; i++) {
        TableColumn column = new TableColumn(m_table, SWT.NONE);
        column.setText(titles[i]);
    }
    // add information about plugin and version to list (in show all/expert mode only)
    if (Wrapper.wraps(nc, NativeNodeContainer.class) && showAll) {
        NativeNodeContainer nnc = Wrapper.unwrap(nc, NativeNodeContainer.class);
        TableItem item4 = new TableItem(m_table, SWT.NONE);
        item4.setText(0, "Node's feature name");
        item4.setText(1, nnc.getNodeAndBundleInformation().getFeatureName().orElse("?"));
        TableItem item5 = new TableItem(m_table, SWT.NONE);
        item5.setText(0, "Node's feature symbolic name");
        item5.setText(1, nnc.getNodeAndBundleInformation().getFeatureSymbolicName().orElse("?"));
        TableItem item6 = new TableItem(m_table, SWT.NONE);
        item6.setText(0, "Node's feature version (last saved with)");
        item6.setText(1, nnc.getNodeAndBundleInformation().getFeatureVersion().map(v -> v.toString()).orElse("?"));
        TableItem item1 = new TableItem(m_table, SWT.NONE);
        item1.setText(0, "Node's plug-in name");
        item1.setText(1, nnc.getNodeAndBundleInformation().getBundleName().orElse("?"));
        TableItem item2 = new TableItem(m_table, SWT.NONE);
        item2.setText(0, "Node's plug-in symbolic name");
        item2.setText(1, nnc.getNodeAndBundleInformation().getBundleSymbolicName().orElse("?"));
        TableItem item3 = new TableItem(m_table, SWT.NONE);
        item3.setText(0, "Node's plug-in version (last saved with)");
        item3.setText(1, nnc.getNodeAndBundleInformation().getBundleVersion().map(v -> v.toString()).orElse("?"));
    }
    // add settings to table
    Stack<Pair<Iterator<String>, ConfigBaseRO>> stack = new Stack<Pair<Iterator<String>, ConfigBaseRO>>();
    Iterator<String> it = settings.keySet().iterator();
    if (it.hasNext()) {
        stack.push(new Pair<Iterator<String>, ConfigBaseRO>(it, settings));
    }
    while (!stack.isEmpty()) {
        String key = stack.peek().getFirst().next();
        int depth = stack.size();
        boolean noexpertskip = (depth <= 1);
        ConfigBaseRO second = stack.peek().getSecond();
        ConfigBaseRO confBase = null;
        try {
            confBase = second.getConfigBase(key);
        } catch (InvalidSettingsException e) {
        // nothing to do here - then it's just null as handled below
        }
        if (!stack.peek().getFirst().hasNext()) {
            stack.pop();
        }
        if (confBase != null) {
            // it's another Config entry, push on stack!
            String val = confBase.toString();
            if ((!val.endsWith("_Internals")) || showAll) {
                Iterator<String> it2 = confBase.iterator();
                if (it2.hasNext()) {
                    stack.push(new Pair<Iterator<String>, ConfigBaseRO>(it2, confBase));
                }
            } else {
                noexpertskip = true;
            }
        }
        // in both cases, we report its value
        if ((!noexpertskip) || showAll) {
            // TODO little problem here: there is no way to turn the entry for a specific key in the config base into a string!
            // Hence, we check for a implementation that allows to do that as workaround.
            // Yet, it would be better to add, e.g., a #toStringValue(String key) method to the ConfigRO interface ...
            // However, so far there isn't any other implementation than ConfigBase anyway ...
            String value;
            if (second instanceof ConfigBase) {
                value = ((ConfigBase) second).getEntry(key).toStringValue();
            } else {
                throw new IllegalStateException("Sub type \"" + second.getClass() + "\" of ConfigBaseRO not supported.");
            }
            TableItem item = new TableItem(m_table, SWT.NONE);
            char[] indent = new char[depth - 1];
            Arrays.fill(indent, '_');
            item.setText(0, new String(indent) + key);
            item.setText(1, value != null ? value : "null");
        }
    }
    for (int i = 0; i < m_table.getColumnCount(); i++) {
        m_table.getColumn(i).pack();
    }
}
Also used : TableItem(org.eclipse.swt.widgets.TableItem) ConfigBase(org.knime.core.node.config.base.ConfigBase) TableColumn(org.eclipse.swt.widgets.TableColumn) Stack(java.util.Stack) FlowObjectStack(org.knime.core.node.workflow.FlowObjectStack) ConfigBaseRO(org.knime.core.node.config.base.ConfigBaseRO) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) Iterator(java.util.Iterator) NativeNodeContainer(org.knime.core.node.workflow.NativeNodeContainer) Pair(org.knime.core.util.Pair)

Example 53 with Pair

use of org.knime.core.util.Pair in project knime-core by knime.

the class WorkflowCoachView method updateFrequencyColumnHeadersAndToolTips.

/**
 * Updates the names and tooltips of the frequency column headers.
 */
private void updateFrequencyColumnHeadersAndToolTips() {
    m_namesAndToolTips = NodeRecommendationManager.getInstance().getNodeTripleProviders().stream().filter(p -> p.isEnabled()).map(p -> new Pair<>(p.getName(), p.getDescription())).collect(Collectors.toList());
    if (m_namesAndToolTips == null || m_namesAndToolTips.isEmpty()) {
        updateInputNoProvider();
        return;
    }
    // reset table sorter
    IElementComparer sorter = m_viewer.getComparer();
    if (sorter != null && sorter instanceof TableColumnSorter) {
        ((TableColumnSorter) sorter).setColumn(null);
    }
    // enforce to change the viewer state to update the headers
    m_viewerState = null;
    m_lastSelection = "";
    changeViewerStateTo(ViewerState.RECOMMENDATIONS);
    // get current selection from the workbench and update the recommendation list
    IEditorPart activeEditor = getViewSite().getPage().getActiveEditor();
    if (activeEditor == null) {
        // if no workflow is opened
        updateInput(NO_WORKFLOW_OPENED_MESSAGE);
    } else {
        IWorkbenchPartSite site = activeEditor.getSite();
        if (site != null) {
            ISelectionProvider selectionProvider = site.getSelectionProvider();
            if (selectionProvider != null) {
                ISelection selection = selectionProvider.getSelection();
                if (selection != null && selection instanceof IStructuredSelection) {
                    updateInput(selection);
                    return;
                }
            }
        }
        updateInput(StructuredSelection.EMPTY);
    }
}
Also used : Arrays(java.util.Arrays) IUpdateListener(org.knime.workbench.workflowcoach.NodeRecommendationManager.IUpdateListener) TableViewer(org.eclipse.jface.viewers.TableViewer) IWorkbenchPartSite(org.eclipse.ui.IWorkbenchPartSite) NodeContainerUI(org.knime.core.ui.node.workflow.NodeContainerUI) DND(org.eclipse.swt.dnd.DND) TableColumn(org.eclipse.swt.widgets.TableColumn) IToolBarManager(org.eclipse.jface.action.IToolBarManager) LocalSelectionTransfer(org.eclipse.jface.util.LocalSelectionTransfer) NodeContainer(org.knime.core.node.workflow.NodeContainer) IStatus(org.eclipse.core.runtime.IStatus) ISelectionListener(org.eclipse.ui.ISelectionListener) Composite(org.eclipse.swt.widgets.Composite) ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) Cursor(org.eclipse.swt.graphics.Cursor) IEditorPart(org.eclipse.ui.IEditorPart) NodeProvider(org.knime.workbench.core.nodeprovider.NodeProvider) KNIMEJob(org.knime.core.util.KNIMEJob) CommunityTripleProvider(org.knime.workbench.workflowcoach.data.CommunityTripleProvider) PlatformUI(org.eclipse.ui.PlatformUI) Set(java.util.Set) Status(org.eclipse.core.runtime.Status) Display(org.eclipse.swt.widgets.Display) ScopedPreferenceStore(org.eclipse.ui.preferences.ScopedPreferenceStore) NodeModel(org.knime.core.node.NodeModel) Collectors(java.util.stream.Collectors) WorkflowCoachPreferenceInitializer(org.knime.workbench.workflowcoach.prefs.WorkflowCoachPreferenceInitializer) RepositoryManager(org.knime.workbench.repository.RepositoryManager) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) Transfer(org.eclipse.swt.dnd.Transfer) IElementComparer(org.eclipse.jface.viewers.IElementComparer) MouseEvent(org.eclipse.swt.events.MouseEvent) List(java.util.List) MouseListener(org.eclipse.swt.events.MouseListener) InstanceScope(org.eclipse.core.runtime.preferences.InstanceScope) Wrapper(org.knime.core.ui.wrapper.Wrapper) SWT(org.eclipse.swt.SWT) Optional(java.util.Optional) ISelection(org.eclipse.jface.viewers.ISelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) MouseAdapter(org.eclipse.swt.events.MouseAdapter) NativeNodeContainer(org.knime.core.node.workflow.NativeNodeContainer) ViewPart(org.eclipse.ui.part.ViewPart) WorkflowEditor(org.knime.workbench.editor2.WorkflowEditor) LocalDateTime(java.time.LocalDateTime) Table(org.eclipse.swt.widgets.Table) AtomicReference(java.util.concurrent.atomic.AtomicReference) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) ArrayList(java.util.ArrayList) Pair(org.knime.core.util.Pair) HashSet(java.util.HashSet) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) UpdateJob(org.knime.workbench.workflowcoach.prefs.UpdateJob) UpdatableNodeTripleProvider(org.knime.workbench.workflowcoach.data.UpdatableNodeTripleProvider) NodeLogger(org.knime.core.node.NodeLogger) GridData(org.eclipse.swt.layout.GridData) NodeRecommendationManager(org.knime.workbench.workflowcoach.NodeRecommendationManager) HeadlessPreferencesConstants(org.knime.workbench.core.preferences.HeadlessPreferencesConstants) NodeFactory(org.knime.core.node.NodeFactory) CombinatoricsUtils(org.apache.commons.math3.util.CombinatoricsUtils) Iterator(java.util.Iterator) Job(org.eclipse.core.runtime.jobs.Job) KNIMECorePlugin(org.knime.workbench.core.KNIMECorePlugin) NodeTemplate(org.knime.workbench.repository.model.NodeTemplate) ChronoUnit(java.time.temporal.ChronoUnit) UpdateListener(org.knime.workbench.workflowcoach.prefs.UpdateJob.UpdateListener) NodeContainerEditPart(org.knime.workbench.editor2.editparts.NodeContainerEditPart) NodeRecommendation(org.knime.workbench.workflowcoach.NodeRecommendationManager.NodeRecommendation) Comparator(java.util.Comparator) Collections(java.util.Collections) FrameworkUtil(org.osgi.framework.FrameworkUtil) IWorkbenchPartSite(org.eclipse.ui.IWorkbenchPartSite) ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) IElementComparer(org.eclipse.jface.viewers.IElementComparer) ISelection(org.eclipse.jface.viewers.ISelection) IEditorPart(org.eclipse.ui.IEditorPart) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection)

Example 54 with Pair

use of org.knime.core.util.Pair in project knime-core by knime.

the class FlowObjectStack method getVariableDefinition.

private static final Pair<String, Type> getVariableDefinition(final String propKey) {
    String varName;
    Type varType;
    if (propKey.startsWith("knime.constant.double.")) {
        varName = propKey.substring("knime.constant.double.".length());
        varType = Type.DOUBLE;
    } else if (propKey.startsWith("knime.constant.integer.")) {
        varName = propKey.substring("knime.constant.integer.".length());
        varType = Type.INTEGER;
    } else if (propKey.startsWith("knime.constant.string.")) {
        varName = propKey.substring("knime.constant.string.".length());
        varType = Type.STRING;
    } else {
        return null;
    }
    if (varName.length() == 0) {
        LOGGER.warn("Ignoring constant defintion \"" + propKey + "\": " + "missing suffix, e.g. \"" + propKey + "somename\"");
        return null;
    }
    return new Pair<String, Type>(varName, varType);
}
Also used : Type(org.knime.core.node.workflow.FlowVariable.Type) Pair(org.knime.core.util.Pair)

Aggregations

Pair (org.knime.core.util.Pair)54 ArrayList (java.util.ArrayList)17 DataCell (org.knime.core.data.DataCell)14 DataType (org.knime.core.data.DataType)13 InvalidSettingsException (org.knime.core.node.InvalidSettingsException)13 PortType (org.knime.core.node.port.PortType)13 LinkedHashMap (java.util.LinkedHashMap)11 Map (java.util.Map)10 DataColumnSpec (org.knime.core.data.DataColumnSpec)10 HashMap (java.util.HashMap)9 HashSet (java.util.HashSet)9 DataTableSpec (org.knime.core.data.DataTableSpec)9 FlowVariable (org.knime.core.node.workflow.FlowVariable)9 DataRow (org.knime.core.data.DataRow)8 StringCell (org.knime.core.data.def.StringCell)7 SettingsModelString (org.knime.core.node.defaultnodesettings.SettingsModelString)7 DataColumnSpecCreator (org.knime.core.data.DataColumnSpecCreator)6 ColumnRearranger (org.knime.core.data.container.ColumnRearranger)6 DefaultRow (org.knime.core.data.def.DefaultRow)6 DoubleCell (org.knime.core.data.def.DoubleCell)6