use of org.knime.core.node.context.ports.ConfigurablePortGroup 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();
}
use of org.knime.core.node.context.ports.ConfigurablePortGroup 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();
}
Aggregations