/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.workflow.model.spi; import java.io.Serializable; /** * Provides write access to the configuration-time setup of component instances. * * @author Robert Mischke * @author Doreen Seider */ public interface WritableComponentInstanceConfiguration { /** * Sets the id of the property map which should be the current one. * @param propertyMapId id of the map. */ void setPropertyMapId(String propertyMapId); /** * Adds a new property map with given key. Entries are gathered from existing property map * given by its id. If no id is given the default values are set. * * @param newPropertyMapId id of the new property map. * @param clonePropertyMapId id of the property map to use its values from. <code>null</code> * for using default values. */ void addPropertyMap(String newPropertyMapId, String clonePropertyMapId); /** * Removes property map given by its id. * @param propertyMapId id of map to remove. */ void removePropertyMap(String propertyMapId); /** * Sets a new value for the given property. * * @param key The key of the property. * @param value The new value of the property. * @param <T> any {@link Object} that extends {@link Serializable}. */ <T extends Serializable> void setProperty(String key, T value); /** * Adds a new dynamic input. * * @param name The name of the input. * @param type The type (class) of the input. * * @throws IllegalArgumentException if the given name collides with an existing input. */ void addInput(String name, String type) throws IllegalArgumentException; /** * Removes a dynamic input. * * @param name The name of the input to remove. */ void removeInput(String name); /** * Changes the definition of an existing dynamic input. * * @param name The name of the input to change. * @param newName The new name of the input. * @param newType The new type of the input. */ void changeInput(String name, String newName, String newType); /** * @param inputName the name of the affected {@link Input}. * @param metaDataKey the meta data key to set. * @param metaDataValue the meta data value to set. */ void setInputMetaData(String inputName, String metaDataKey, Serializable metaDataValue); /** * Adds a new dynamic output. * * @param name The name of the output. * @param type The type (class) of the output. * * @throws IllegalArgumentException if the given name collides with an existing output. */ void addOutput(String name, String type) throws IllegalArgumentException; /** * Removes a dynamic output. * * @param name The name of the output to remove. */ void removeOutput(String name); /** * Changes the definition of an existing dynamic output. * * @param name The name of the output to change. * @param newName The new name of the output. * @param newType The new type of the output. */ void changeOutput(String name, String newName, String newType); /** * @param outputName the name of the affected {@link Output}. * @param metaDataKey the meta data key to set. * @param metaDataValue the meta data value to set. */ void setOutputMetaData(String outputName, String metaDataKey, Serializable metaDataValue); }