/*
* 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.datamodel.api.EndpointType;
import de.rcenvironment.core.gui.workflow.editor.properties.Refreshable;
/**
* Implementation of {@link EditDynamicEndpointCommand}, which also edits the output with same name
* and data type.
*
* @author Doreen Seider
*/
public class EditDynamicInputWithOutputCommand extends EditDynamicEndpointCommand {
private Map<String, String> metaDataOutput;
public EditDynamicInputWithOutputCommand(final EndpointDescription oldDescription, EndpointDescription newDescription,
Refreshable... refreshable) {
super(EndpointType.INPUT, oldDescription, newDescription, refreshable);
}
@Override
public void execute() {
Map<String, String> metaData = new HashMap<>();
metaData.putAll(newDesc.getMetaData());
metaData.putAll(metaDataOutput);
EndpointDescriptionsManager outputDescriptionsManager = getProperties().getOutputDescriptionsManager();
outputDescriptionsManager.editDynamicEndpointDescription(oldDesc.getName(), newDesc.getName(),
newDesc.getDataType(), metaData);
super.execute();
}
@Override
public void undo() {
EndpointDescriptionsManager outputDescriptionsManager = getProperties().getOutputDescriptionsManager();
Map<String, String> metaData = new HashMap<>();
metaData.putAll(oldDesc.getMetaData());
metaData.putAll(metaDataOutput);
outputDescriptionsManager.editDynamicEndpointDescription(newDesc.getName(), oldDesc.getName(),
oldDesc.getDataType(), metaData);
super.undo();
}
public void setMetaDataOutput(Map<String, String> metaDataOutput) {
this.metaDataOutput = metaDataOutput;
}
}