/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.workflow.editor.commands.endpoint;
import java.util.LinkedList;
import java.util.List;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDescription;
import de.rcenvironment.core.gui.workflow.editor.properties.Refreshable;
/**
* Removes one single input, another input with given suffix and one output with the same name as
* the input.
*
* @author Sascha Zur
*/
public class RemoveDynamicInputWithAnotherPossibleInputAndOutputCommand extends RemoveDynamicInputWithOutputCommand {
private final String inputNameSuffix;
private final List<String> inputsWithSuffixInput;
public RemoveDynamicInputWithAnotherPossibleInputAndOutputCommand(String dynamicEndpointId, List<String> names, String inputNameSuffix,
Refreshable... panes) {
super(dynamicEndpointId, names, panes);
this.inputNameSuffix = inputNameSuffix;
this.inputsWithSuffixInput = new LinkedList<>();
}
@Override
public void initialize() {
for (String name : names) {
oldDescriptions.put(name, getProperties().getInputDescriptionsManager().getEndpointDescription(name));
EndpointDescription endpointDescription = getProperties().getInputDescriptionsManager()
.getEndpointDescription(name + inputNameSuffix);
if (!name.endsWith(inputNameSuffix) && endpointDescription != null) {
inputsWithSuffixInput.add(name);
}
}
}
@Override
public void execute() {
for (String name : names) {
EndpointDescription endpointDescription = getProperties().getInputDescriptionsManager()
.getEndpointDescription(name + inputNameSuffix);
if (!name.endsWith(inputNameSuffix)
&& endpointDescription != null) {
InputWithOutputsCommandUtils.removeInputWithSuffix(getProperties(), name, inputNameSuffix);
}
}
super.execute();
}
@Override
public void undo() {
for (String name : names) {
EndpointDescription oldDescription = oldDescriptions.get(name);
if (inputsWithSuffixInput.contains(name)) {
InputWithOutputsCommandUtils.addInputWithSuffix(getProperties(), dynEndpointId, name, oldDescription.getDataType(),
inputNameSuffix, "startValues");
}
}
super.undo();
}
}