/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.model.api; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import de.rcenvironment.core.component.model.configuration.api.ConfigurationDefinition; import de.rcenvironment.core.component.model.configuration.api.ConfigurationExtensionDefinition; import de.rcenvironment.core.component.model.configuration.impl.ConfigurationDefinitionImpl; import de.rcenvironment.core.component.model.configuration.impl.ConfigurationExtensionDefinitionImpl; import de.rcenvironment.core.component.model.endpoint.api.EndpointDefinitionsProvider; import de.rcenvironment.core.component.model.endpoint.impl.EndpointDefinitionsProviderImpl; import de.rcenvironment.core.component.model.impl.ComponentInterfaceImpl; import de.rcenvironment.core.datamodel.api.DataType; import de.rcenvironment.core.datamodel.api.TypedDatum; import de.rcenvironment.core.datamodel.types.api.NotAValueTD; /** * Creates {@link ComponentInterface} objects. * * @author Doreen Seider */ public class ComponentInterfaceBuilder { private final ComponentInterfaceImpl componentInterface; public ComponentInterfaceBuilder() { componentInterface = new ComponentInterfaceImpl(); } /** * @param identifier identifier if the component * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setIdentifier(String identifier) { componentInterface.setIdentifier(identifier); List<String> identifiers = new ArrayList<>(); identifiers.add(identifier); componentInterface.setIdentifiers(identifiers); return this; } /** * @param identifiers identifier if the component * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setIdentifiers(List<String> identifiers) { componentInterface.setIdentifiers(identifiers); return this; } /** * @param displayName name of the component * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setDisplayName(String displayName) { componentInterface.setDisplayName(displayName); return this; } /** * @param groupName group of the component * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setGroupName(String groupName) { componentInterface.setGroupName(groupName); return this; } /** * @param icon16 small icon * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setIcon16(byte[] icon16) { componentInterface.setIcon16(icon16); return this; } /** * @param icon24 mid size icon * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setIcon24(byte[] icon24) { componentInterface.setIcon24(icon24); return this; } /** * @param icon32 large icon * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setIcon32(byte[] icon32) { componentInterface.setIcon32(icon32); return this; } /** * * @param docuHash has of the doumentation folder for the tool. * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setDocumentationHash(String docuHash) { componentInterface.setDocumentationHash(docuHash); return this; } /** * @param version version of the component * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setVersion(String version) { componentInterface.setVersion(version); return this; } /** * @param color color of the component's background * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setColor(ComponentColor color) { componentInterface.setColor(color); return this; } /** * @param shape shape of the component. * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setShape(ComponentShape shape) { componentInterface.setShape(shape); return this; } /** * @param size size of the component * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setSize(ComponentSize size) { componentInterface.setSize(size); return this; } /** * @param inputDefinitionsProvider input definitions * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setInputDefinitionsProvider(EndpointDefinitionsProvider inputDefinitionsProvider) { componentInterface.setInputDefinitionsProvider((EndpointDefinitionsProviderImpl) inputDefinitionsProvider); return this; } /** * @param outputDefinitionsProvider output definitions * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setOutputDefinitionsProvider(EndpointDefinitionsProvider outputDefinitionsProvider) { componentInterface.setOutputDefinitionsProvider((EndpointDefinitionsProviderImpl) outputDefinitionsProvider); return this; } /** * @param configurationDefinition configuration definitions * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setConfigurationDefinition(ConfigurationDefinition configurationDefinition) { componentInterface.setConfigurationDefinition((ConfigurationDefinitionImpl) configurationDefinition); return this; } /** * @param configurationExtensionDefinitions extended configuration definitions * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setConfigurationExtensionDefinitions( Set<ConfigurationExtensionDefinition> configurationExtensionDefinitions) { Set<ConfigurationExtensionDefinitionImpl> configurationDefinitionsImpls = new HashSet<ConfigurationExtensionDefinitionImpl>(); for (ConfigurationExtensionDefinition definition : configurationExtensionDefinitions) { configurationDefinitionsImpls.add((ConfigurationExtensionDefinitionImpl) definition); } componentInterface.setConfigurationExtensionDefinitions(configurationDefinitionsImpls); return this; } /** * @param localExecutionOnly whether it is remote executable * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setLocalExecutionOnly(boolean localExecutionOnly) { componentInterface.setLocalExecutionOnly(localExecutionOnly); return this; } /** * @param performLazyDisposal whether disposal must be performed lazily * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setPerformLazyDisposal(boolean performLazyDisposal) { componentInterface.setPerformLazyDisposal(performLazyDisposal); return this; } /** * @param configurationDefinition configuration definitions * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setCanHandleUndefinedInputDatums(ConfigurationDefinition configurationDefinition) { componentInterface.setConfigurationDefinition((ConfigurationDefinitionImpl) configurationDefinition); return this; } /** * @param canHandleNotAValueDataTypes whether component can handle incoming * {@link TypedDatum}s of {@link DataType} {@link NotAValueTD} * @return builder object for method chaining purposes */ public ComponentInterfaceBuilder setCanHandleNotAValueDataTypes(boolean canHandleNotAValueDataTypes) { componentInterface.setCanHandleNotAValueDataTypes(canHandleNotAValueDataTypes); return this; } /** * @return {@link ComponentInterface} object built */ public ComponentInterface build() { return componentInterface; } }