/*
* 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.HashMap;
import java.util.Map;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDescription;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDescriptionsManager;
import de.rcenvironment.core.gui.workflow.editor.properties.Refreshable;
/**
* Edits one single input and two outputs - one with the same name as the input and one with the
* same name as the input + given suffix.
*
* @author Doreen Seider
* @author Martin Misiak
* FIXED 0014355: {@link #undo()} reverted to the datatype of the new @link {@link EndpointDescription} instead of the old
*/
public class EditDynamicInputWithOutputsCommand extends EditDynamicInputWithOutputCommand {
private final String nameSuffix;
private Map<String, String> metaDataOutputWithSuffix;
public EditDynamicInputWithOutputsCommand(EndpointDescription oldDescription, EndpointDescription newDescription,
String nameSuffix, Refreshable... panes) {
super(oldDescription, newDescription, panes);
this.nameSuffix = nameSuffix;
}
@Override
public void execute() {
EndpointDescriptionsManager outputManager = getProperties().getOutputDescriptionsManager();
EndpointDescription addOutputDesc = outputManager.getEndpointDescription(oldDesc.getName() + nameSuffix);
addOutputDesc.setName(newDesc.getName() + nameSuffix);
Map<String, String> metaData = new HashMap<>();
metaData.putAll(newDesc.getMetaData());
metaData.putAll(metaDataOutputWithSuffix);
outputManager.editDynamicEndpointDescription(oldDesc.getName() + nameSuffix,
newDesc.getName() + nameSuffix, newDesc.getDataType(), metaData);
super.execute();
}
@Override
public void undo() {
EndpointDescriptionsManager outputManager = getProperties().getOutputDescriptionsManager();
EndpointDescription outputConvergedDesc = getProperties().getOutputDescriptionsManager()
.getEndpointDescription(newDesc.getName() + nameSuffix);
outputConvergedDesc.setName(oldDesc.getName() + nameSuffix);
Map<String, String> metaData = new HashMap<>();
metaData.putAll(oldDesc.getMetaData());
metaData.putAll(metaDataOutputWithSuffix);
outputManager.editDynamicEndpointDescription(newDesc.getName() + nameSuffix,
oldDesc.getName() + nameSuffix, oldDesc.getDataType(), metaData);
super.undo();
}
public void setMetaDataOutputWithSuffix(Map<String, String> metaDataOutput) {
this.metaDataOutputWithSuffix = metaDataOutput;
}
}