Search in sources :

Example 1 with PortGroupConfiguration

use of org.knime.core.node.context.ports.PortGroupConfiguration in project knime-workbench by knime.

the class Nodalizer method parseDynamicPorts.

private static List<DynamicPortGroup> parseDynamicPorts(final Element nodeXML, final String xmlTag, final Document nodeHTML, final String sectionName, final ModifiablePortsConfiguration portConfigs, final String nodeFactoryName) {
    final int dynamicPortCount = nodeXML.getElementsByTagName(xmlTag).getLength();
    final org.jsoup.nodes.Element dynamicPortSection = nodeHTML.getElementsMatchingOwnText(sectionName).first();
    if (dynamicPortCount > 0 && dynamicPortSection != null) {
        final List<DynamicPortGroup> dynamicPorts = new ArrayList<>(dynamicPortCount);
        for (final org.jsoup.nodes.Element sibling : dynamicPortSection.siblingElements()) {
            for (final org.jsoup.nodes.Element group : sibling.getElementsByClass("dt")) {
                final org.jsoup.nodes.Element description = group.nextElementSibling();
                final String groupName = group.ownText();
                try {
                    final PortGroupConfiguration groupConfig = portConfigs.getGroup(groupName);
                    if (description != null && groupConfig instanceof ConfigurablePortGroup) {
                        final ConfigurablePortGroup configurableGroupConfig = (ConfigurablePortGroup) groupConfig;
                        final PortType[] supportedTypes = configurableGroupConfig.getSupportedPortTypes();
                        final DynamicPortType[] types = new DynamicPortType[supportedTypes.length];
                        for (int i = 0; i < types.length; i++) {
                            final PortType t = supportedTypes[i];
                            types[i] = new DynamicPortType(t.getPortObjectClass().getCanonicalName(), t.getName(), NodalizerUtil.getColorAsHex(t.getColor()));
                        }
                        final DynamicPortGroup port = new DynamicPortGroup(groupName, NodalizerUtil.cleanHTML(description), types);
                        dynamicPorts.add(port);
                    }
                } catch (final NoSuchElementException exception) {
                    LOGGER.warn("No dynamic port group, " + groupName + ", for " + nodeFactoryName);
                }
            }
        }
        if (dynamicPortCount != dynamicPorts.size()) {
            LOGGER.warn("The number of dynamic ports parsed does not match the number listed in the XML, " + dynamicPorts.size() + " and " + dynamicPortCount + " respectively, for " + nodeFactoryName);
        }
        return dynamicPorts;
    }
    return Collections.emptyList();
}
Also used : PortGroupConfiguration(org.knime.core.node.context.ports.PortGroupConfiguration) ArrayList(java.util.ArrayList) ConfigurablePortGroup(org.knime.core.node.context.ports.ConfigurablePortGroup) DynamicPortType(org.knime.workbench.repository.nodalizer.DynamicPortGroup.DynamicPortType) NoSuchElementException(java.util.NoSuchElementException) DynamicPortType(org.knime.workbench.repository.nodalizer.DynamicPortGroup.DynamicPortType) PortType(org.knime.core.node.port.PortType)

Example 2 with PortGroupConfiguration

use of org.knime.core.node.context.ports.PortGroupConfiguration in project knime-core by knime.

the class DefaultPortsConfiguration method getPortLocation.

private Map<String, int[]> getPortLocation(final Predicate<PortGroupConfiguration> pred, final Function<PortGroupConfiguration, Integer> f) {
    final Map<String, int[]> portLoc = new LinkedHashMap<>();
    final AtomicInteger pos = new AtomicInteger();
    // 
    m_portGroups.entrySet().stream().filter(// 
    entry -> pred.test(entry.getValue())).forEachOrdered(entry -> {
        final int pLength = f.apply(entry.getValue());
        if (pLength != 0) {
            portLoc.put(entry.getKey(), IntStream.range(pos.get() + 0, pos.get() + pLength).toArray());
        }
        pos.addAndGet(pLength);
    });
    // 
    return portLoc;
}
Also used : LinkedHashMap(java.util.LinkedHashMap) IntStream(java.util.stream.IntStream) List(java.util.List) Stream(java.util.stream.Stream) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Predicate(java.util.function.Predicate) Map(java.util.Map) PortGroupConfiguration(org.knime.core.node.context.ports.PortGroupConfiguration) PortsConfiguration(org.knime.core.node.context.ports.PortsConfiguration) Function(java.util.function.Function) ArrayList(java.util.ArrayList) PortType(org.knime.core.node.port.PortType) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) LinkedHashMap(java.util.LinkedHashMap)

Example 3 with PortGroupConfiguration

use of org.knime.core.node.context.ports.PortGroupConfiguration in project knime-json-node-doc-generator by NodePit.

the class JsonNodeDocuGenerator method getDynamicPorts.

/* package */
static List<DynamicPortGroup> getDynamicPorts(NodeFactory<? extends NodeModel> factory, PortDirection portDirection) {
    if (factory instanceof ConfigurableNodeFactory) {
        // TODO implement this; look at this mess:
        // https://github.com/knime/knime-workbench/commit/508b59c8f475277df5c095567c8f441eda6808cd
        // https://github.com/knime/knime-workbench/blob/master/org.knime.workbench.repository/src/eclipse/org/knime/workbench/repository/nodalizer/Nodalizer.java#L646
        @SuppressWarnings("unchecked") Node node = new Node((NodeFactory<NodeModel>) factory);
        if (node.getCopyOfCreationConfig().isPresent()) {
            ModifiableNodeCreationConfiguration nodeCreationConfig = node.getCopyOfCreationConfig().get();
            if (nodeCreationConfig.getPortConfig().isPresent()) {
                ModifiablePortsConfiguration portsConfig = nodeCreationConfig.getPortConfig().get();
                List<DynamicPortGroup> dynamicPortGroups = new ArrayList<>();
                for (String portGroupName : portsConfig.getPortGroupNames()) {
                    PortGroupConfiguration groupConfig = portsConfig.getGroup(portGroupName);
                    if (groupConfig instanceof ConfigurablePortGroup && (groupConfig.definesInputPorts() && portDirection == PortDirection.In || groupConfig.definesOutputPorts() && portDirection == PortDirection.Out)) {
                        ConfigurablePortGroup configurablePortGroup = (ConfigurablePortGroup) groupConfig;
                        PortType[] supportedTypes = configurablePortGroup.getSupportedPortTypes();
                        dynamicPortGroups.add(new DynamicPortGroup(null, null, portGroupName, null, Arrays.stream(supportedTypes).map(t -> t.getPortObjectClass().getName()).collect(Collectors.toList())));
                    }
                }
                return dynamicPortGroups;
            }
        }
    }
    return Collections.emptyList();
}
Also used : Arrays(java.util.Arrays) NodeCreationConfiguration(org.knime.core.node.context.NodeCreationConfiguration) Category(org.knime.workbench.repository.model.Category) Logger(org.apache.log4j.Logger) Node(org.knime.core.node.Node) ConfigurablePortGroup(org.knime.core.node.context.ports.ConfigurablePortGroup) Map(java.util.Map) ModifiableNodeCreationConfiguration(org.knime.core.node.context.ModifiableNodeCreationConfiguration) CategoryDocBuilder(de.philippkatz.knime.jsondocgen.docs.CategoryDoc.CategoryDocBuilder) Root(org.knime.workbench.repository.model.Root) PortGroupConfiguration(org.knime.core.node.context.ports.PortGroupConfiguration) Method(java.lang.reflect.Method) PortType(org.knime.core.node.port.PortType) PartitionInfo(org.knime.core.node.streamable.PartitionInfo) Collection(java.util.Collection) Set(java.util.Set) Display(org.eclipse.swt.widgets.Display) NodeModel(org.knime.core.node.NodeModel) Collectors(java.util.stream.Collectors) StandardCharsets(java.nio.charset.StandardCharsets) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) SplashIconDoc(de.philippkatz.knime.jsondocgen.docs.SplashIconDoc) Port(de.philippkatz.knime.jsondocgen.docs.NodeDoc.Port) Optional(java.util.Optional) IApplicationContext(org.eclipse.equinox.app.IApplicationContext) PortObject(org.knime.core.node.port.PortObject) TransformerException(javax.xml.transform.TransformerException) HashMap(java.util.HashMap) Function(java.util.function.Function) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) PortTypeRegistry(org.knime.core.node.port.PortTypeRegistry) ConfigurableNodeFactory(org.knime.core.node.ConfigurableNodeFactory) IApplication(org.eclipse.equinox.app.IApplication) DynamicPortGroup(de.philippkatz.knime.jsondocgen.docs.NodeDoc.DynamicPortGroup) PortTypeDoc(de.philippkatz.knime.jsondocgen.docs.PortTypeDoc) NodeFactory(org.knime.core.node.NodeFactory) PortTypeDocBuilder(de.philippkatz.knime.jsondocgen.docs.PortTypeDoc.PortTypeDocBuilder) ModifiablePortsConfiguration(org.knime.core.node.context.ports.ModifiablePortsConfiguration) NodeDocBuilder(de.philippkatz.knime.jsondocgen.docs.NodeDoc.NodeDocBuilder) FileOutputStream(java.io.FileOutputStream) PortObjectSpec(org.knime.core.node.port.PortObjectSpec) File(java.io.File) IRepositoryObject(org.knime.workbench.repository.model.IRepositoryObject) IContainerObject(org.knime.workbench.repository.model.IContainerObject) NodeTemplate(org.knime.workbench.repository.model.NodeTemplate) Element(org.w3c.dom.Element) Collections(java.util.Collections) CategoryDoc(de.philippkatz.knime.jsondocgen.docs.CategoryDoc) DynamicPortGroup(de.philippkatz.knime.jsondocgen.docs.NodeDoc.DynamicPortGroup) PortGroupConfiguration(org.knime.core.node.context.ports.PortGroupConfiguration) Node(org.knime.core.node.Node) ArrayList(java.util.ArrayList) ConfigurablePortGroup(org.knime.core.node.context.ports.ConfigurablePortGroup) NodeModel(org.knime.core.node.NodeModel) ModifiableNodeCreationConfiguration(org.knime.core.node.context.ModifiableNodeCreationConfiguration) ConfigurableNodeFactory(org.knime.core.node.ConfigurableNodeFactory) ModifiablePortsConfiguration(org.knime.core.node.context.ports.ModifiablePortsConfiguration) PortType(org.knime.core.node.port.PortType)

Aggregations

ArrayList (java.util.ArrayList)3 PortGroupConfiguration (org.knime.core.node.context.ports.PortGroupConfiguration)3 PortType (org.knime.core.node.port.PortType)3 List (java.util.List)2 Map (java.util.Map)2 Function (java.util.function.Function)2 CategoryDoc (de.philippkatz.knime.jsondocgen.docs.CategoryDoc)1 CategoryDocBuilder (de.philippkatz.knime.jsondocgen.docs.CategoryDoc.CategoryDocBuilder)1 DynamicPortGroup (de.philippkatz.knime.jsondocgen.docs.NodeDoc.DynamicPortGroup)1 NodeDocBuilder (de.philippkatz.knime.jsondocgen.docs.NodeDoc.NodeDocBuilder)1 Port (de.philippkatz.knime.jsondocgen.docs.NodeDoc.Port)1 PortTypeDoc (de.philippkatz.knime.jsondocgen.docs.PortTypeDoc)1 PortTypeDocBuilder (de.philippkatz.knime.jsondocgen.docs.PortTypeDoc.PortTypeDocBuilder)1 SplashIconDoc (de.philippkatz.knime.jsondocgen.docs.SplashIconDoc)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1 Method (java.lang.reflect.Method)1 StandardCharsets (java.nio.charset.StandardCharsets)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1