/** * Adds all target ports and than all source ports of the components of given {@link LoopSide} * of this component-holder to the current position of the {@link ListIterator}. The source * ports will be added in reversed order. * * @param loopSide The components of this {@link LoopSide} will be added. * @param itr The {@link ListIterator} to add the ports into. */ public void addAllPorts( final LoopSide loopSide, final ListIterator<LPort> itr, final boolean sourceFirst) { final List<LPort> secondPart = Lists.newArrayList(); PortSide secondPartSide = null; if (sourceFirst) { for (final ConnectedSelfLoopComponent component : LISTS_OF_COMPONENTS.get(loopSide)) { for (final LPort port : component.getSourceLoopPorts()) { itr.add(port); setSideOfPort(port, loopSide.getSourceSide()); } secondPart.addAll(component.getTargetLoopPorts()); secondPartSide = loopSide.getTargetSide(); } } else { for (final ConnectedSelfLoopComponent component : LISTS_OF_COMPONENTS.get(loopSide)) { for (final LPort port : component.getTargetLoopPorts()) { itr.add(port); setSideOfPort(port, loopSide.getTargetSide()); } secondPart.addAll(component.getSourceLoopPorts()); secondPartSide = loopSide.getSourceSide(); } } Collections.reverse(secondPart); setSideOfPorts(secondPart, secondPartSide); for (final LPort port : secondPart) { itr.add(port); } }
/** * Adds all ports of given {@link LoopSide} of this component-holder to the current position of * the {@link ListIterator}. The ports are placed, so that source and target ports of an edge * are placed next to each other. The target port of an edge will be places before the source * port of an edge. * * @param loopSide The components of this {@link LoopSide} will be added. * @param itr The {@link ListIterator} to add the ports into. */ public void addInlineTargetsFirst(final LoopSide loopSide, final ListIterator<LPort> itr) { final List<LPort> firstPart = Lists.newArrayList(); final List<LPort> secondPart = Lists.newArrayList(); final Iterator<ConnectedSelfLoopComponent> compItr = LISTS_OF_COMPONENTS.get(loopSide).iterator(); while (compItr.hasNext()) { ConnectedSelfLoopComponent component = compItr.next(); firstPart.addAll(0, component.getSourceLoopPorts()); firstPart.addAll(0, component.getTargetLoopPortsReversed()); if (compItr.hasNext()) { component = compItr.next(); secondPart.addAll(component.getTargetLoopPortsReversed()); secondPart.addAll(component.getSourceLoopPorts()); } } setSideOfPorts(firstPart, loopSide.getTargetSide()); setSideOfPorts(secondPart, loopSide.getSourceSide()); for (final LPort port : firstPart) { itr.add(port); } for (final LPort port : secondPart) { itr.add(port); } }
/** * Adds all source ports of the components of given {@link LoopSide} of this component-holder to * the current position of the {@link ListIterator} in reversed order. * * @param loopSide The components of this {@link LoopSide} will be added. * @param itr The {@link ListIterator} to add the ports into. */ public void addSourcePortsReversed(final LoopSide loopSide, final ListIterator<LPort> itr) { final List<LPort> sourcePorts = Lists.newArrayList(); for (final ConnectedSelfLoopComponent component : LISTS_OF_COMPONENTS.get(loopSide)) { sourcePorts.addAll(component.getSourceLoopPorts()); } Collections.reverse(sourcePorts); setSideOfPorts(sourcePorts, loopSide.getSourceSide()); for (final LPort port : sourcePorts) { itr.add(port); } }