/** * Adds a new output component to the collection of output components of this component.<br> * Created by: tgaengler * * @param outputComponent a new output component */ public void addOutputComponent(final Component outputComponent) { if (outputComponent != null) { if (outputComponents == null) { outputComponents = Sets.newCopyOnWriteArraySet(); } if (!outputComponents.contains(outputComponent)) { outputComponents.add(outputComponent); outputComponent.addInputComponent(this); } } }
/** * Sets the output component collection. * * @param outputComponentsArg a new output component collection */ public void setOutputComponents(final Set<Component> outputComponentsArg) { if (outputComponentsArg == null && outputComponents != null) { // remove component from output component, if component will be prepared for removal final Set<Component> componentsToBeDeleted = Sets.newCopyOnWriteArraySet(outputComponents); for (final Component outputComponent : componentsToBeDeleted) { outputComponent.removeInputComponent(this); } outputComponents.clear(); } if (outputComponentsArg != null) { if (outputComponents == null) { outputComponents = Sets.newCopyOnWriteArraySet(); } // if (!outputComponents.equals(outputComponentsArg)) { if (!DMPPersistenceUtil.getComponentUtils().completeEquals(outputComponents, outputComponentsArg)) { outputComponents.clear(); outputComponents.addAll(outputComponentsArg); } for (final Component outputComponent : outputComponentsArg) { outputComponent.addInputComponent(this); } } }
/** * Link all input and output components. the input and output components are given as a list of ids and need to be resolved to * actual {@code Component}s. This happens primarily against the components of the current Json or against the database, if * the component wasn't defined within the current Json. * * @param components a map of (id -> {@code Component}) * @param inOutComponents a map of (id -> list ( inIds, outIds ) ) */ private void linkInOutComponents(final Map<String, Component> components, final Map<String, Tuple<List<String>, List<String>>> inOutComponents) { final ComponentService componentService = TransformationDeserializer.getComponentService(deserializationContext); for (final String componentId : components.keySet()) { final Tuple<List<String>, List<String>> inOut = inOutComponents.get(componentId); if (inOut != null) { final List<String> inputComponentIds = inOut.v1(); final List<String> outputComponentIds = inOut.v2(); final List<Component> inputComponents = TransformationDeserializer.lookupComponents(inputComponentIds, components, componentService); final List<Component> outputComponents = TransformationDeserializer .lookupComponents(outputComponentIds, components, componentService); final Component component = components.get(componentId); for (final Component inputComponent : inputComponents) { component.addInputComponent(inputComponent); } for (final Component outputComponent : outputComponents) { component.addOutputComponent(outputComponent); } } } }
outputComponent.addInputComponent(object);