/*******************************************************************************
* (c) Copyright 2016 Hewlett-Packard Development Company, L.P.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License v2.0 which accompany this distribution.
*
* The Apache License is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
*******************************************************************************/
package io.cloudslang.lang.systemtests;
import ch.lambdaj.group.Group;
import io.cloudslang.lang.runtime.events.LanguageEventData;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import static ch.lambdaj.Lambda.by;
import static ch.lambdaj.Lambda.group;
import static ch.lambdaj.Lambda.on;
/**
* Date: 4/8/2015
*
* @author Bonczidai Levente
*/
public class JoinAggregatorListener extends AbstractAggregatorListener {
public Map<String, StepData> aggregate() {
Map<String, StepData> joinDataByPath = new HashMap<>();
Group<LanguageEventData> groups = group(getEvents(), by(on(LanguageEventData.class).getPath()));
for (Group<LanguageEventData> subGroup : groups.subgroups()) {
StepData joinData = buildPublishAggregateData(subGroup.first());
joinDataByPath.put(joinData.getPath(), joinData);
}
return joinDataByPath;
}
private StepData buildPublishAggregateData(LanguageEventData data) {
String path = data.getPath();
String stepName = data.getStepName();
Map<String, Serializable> outputs = data.getOutputs();
String result = (String) data.get(LanguageEventData.RESULT);
return new StepData(
path,
stepName,
new HashMap<String, Serializable>(),
outputs,
null, result
);
}
}