/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.inputprovider.gui;
import java.util.List;
import java.util.Map;
import de.rcenvironment.components.inputprovider.common.InputProviderComponentConstants;
import de.rcenvironment.core.component.model.configuration.api.PlaceholdersMetaDataConstants;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDescription;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDescriptionsManager;
import de.rcenvironment.core.datamodel.api.EndpointType;
import de.rcenvironment.core.gui.workflow.editor.commands.endpoint.RemoveDynamicEndpointCommand;
import de.rcenvironment.core.gui.workflow.editor.properties.Refreshable;
/**
* adding dynamic Endpoints to the Input Provider Component. A
*
* @author Mark Geiger
*/
public class InputProviderRemoveDynamicEndpointCommand extends RemoveDynamicEndpointCommand {
public InputProviderRemoveDynamicEndpointCommand(EndpointType direction, String id, List<String> names,
Map<String, String> metaData, Refreshable... refreshable) {
super(direction, id, names, refreshable);
}
@Override
public void execute() {
for (String name : names) {
// not in use, shall be removed?
EndpointDescriptionsManager manager;
if (direction == EndpointType.INPUT) {
manager = getWorkflowNode().getInputDescriptionsManager();
} else {
manager = getWorkflowNode().getOutputDescriptionsManager();
}
// removes the value entry
getWorkflowNode().getConfigurationDescription().setConfigurationValue(name, null);
getWorkflowNode().getConfigurationDescription().setConfigurationValue(name + PlaceholdersMetaDataConstants.DATA_TYPE,
null);
}
super.execute();
}
@Override
public void undo() {
super.undo();
for (String name : names) {
EndpointDescription oldDescription = oldDescriptions.get(name);
EndpointDescriptionsManager manager;
if (direction == EndpointType.INPUT) {
manager = getWorkflowNode().getInputDescriptionsManager();
} else {
manager = getWorkflowNode().getOutputDescriptionsManager();
}
if (oldDescription.getMetaData().containsKey(InputProviderComponentConstants.META_FILESOURCETYPE)
&& oldDescription.getMetaData().get(InputProviderComponentConstants.META_FILESOURCETYPE)
.equals(InputProviderComponentConstants.META_FILESOURCETYPE_ATWORKFLOWSTART)) {
InputProviderDynamicEndpointCommandUtils.setValueName(getWorkflowNode(),
manager.getEndpointDescription(name).getDataType(),
name);
}
}
}
}