/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.workflow.view.properties;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import de.rcenvironment.core.component.execution.api.EndpointDatumSerializer;
import de.rcenvironment.core.component.model.endpoint.api.EndpointDatum;
import de.rcenvironment.core.component.workflow.execution.api.GenericSubscriptionEventProcessor;
import de.rcenvironment.core.notification.Notification;
import de.rcenvironment.core.utils.incubator.ServiceRegistry;
/**
* Subscriber for all input notifications in the overall system.
*
* @author Doreen Seider
* @author Robert Mischke
*/
public class InputSubscriptionEventProcessor extends GenericSubscriptionEventProcessor {
private static final long serialVersionUID = 2685613452747737482L;
private final transient InputModel inputModel;
private final transient EndpointDatumSerializer endpointDatumSerializer;
public InputSubscriptionEventProcessor(InputModel consoleModel) {
super();
this.inputModel = consoleModel;
this.endpointDatumSerializer = ServiceRegistry.createAccessFor(this).getService(EndpointDatumSerializer.class);
}
/**
* Process all collected inputs and perform a single GUI update to improve performance.
*/
@Override
protected synchronized void processCollectedNotifications(List<Notification> notifications) {
// process the list outside the synchronization block
List<EndpointDatum> inputs = new ArrayList<>();
for (Notification notification : notifications) {
Serializable body = notification.getBody();
if (body instanceof String) {
inputs.add(endpointDatumSerializer.deserializeEndpointDatum((String) body));
}
}
inputModel.addInputs(inputs);
}
}