/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.joiner.execution; import java.util.HashSet; import java.util.Set; import de.rcenvironment.components.joiner.common.JoinerComponentConstants; import de.rcenvironment.core.component.api.ComponentException; import de.rcenvironment.core.component.execution.api.ComponentContext; import de.rcenvironment.core.component.model.spi.DefaultComponent; import de.rcenvironment.core.datamodel.api.DataType; import de.rcenvironment.core.datamodel.api.TypedDatum; import de.rcenvironment.core.datamodel.types.api.NotAValueTD; import de.rcenvironment.core.utils.common.StringUtils; /** * Component to join n inputs to 1. * * @author Sascha Zur * @author Doreen Seider */ public class JoinerComponent extends DefaultComponent { private ComponentContext componentContext; private Set<String> indefiniteTDsSent = new HashSet<>(); @Override public void setComponentContext(ComponentContext componentContext) { this.componentContext = componentContext; } @Override public void processInputs() throws ComponentException { for (String inputName : componentContext.getInputsWithDatum()) { TypedDatum datum = componentContext.readInput(inputName); if (datum.getDataType().equals(DataType.NotAValue)) { if (indefiniteTDsSent.contains(((NotAValueTD) datum).getIdentifier())) { continue; } else { indefiniteTDsSent.add(((NotAValueTD) datum).getIdentifier()); } } TypedDatum inputValue = componentContext.readInput(inputName); componentContext.writeOutput(JoinerComponentConstants.OUTPUT_NAME, inputValue); componentContext.getLog().componentInfo(StringUtils.format("Forwarded (joined) from input '%s': %s", inputName, inputValue)); } } }