mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-13 22:15:26 +00:00
Adjusted storeElement() method of ParallelGroupedNumberPairDataAverageAggregationProcessor
This commit is contained in:
1 parent
26fc468f0b
commit
78a331c597
1 file changed
+23
-20
+23
-20
@@ -7,18 +7,14 @@ import java.util.Map.Entry;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import org.omg.CORBA.DoubleHolder;
|
||||
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.datamining.components.AggregationProcessorDefinition;
|
||||
import com.sap.sse.datamining.components.Processor;
|
||||
import com.sap.sse.datamining.impl.components.GroupedDataEntry;
|
||||
import com.sap.sse.datamining.impl.components.SimpleAggregationProcessorDefinition;
|
||||
import com.sap.sse.datamining.shared.GroupKey;
|
||||
import com.sap.sse.datamining.shared.data.AverageWithStats;
|
||||
import com.sap.sse.datamining.shared.data.AveragePairWithStats;
|
||||
import com.sap.sse.datamining.shared.impl.AveragePairWithStatsImpl;
|
||||
import com.sap.sse.datamining.shared.impl.AverageWithStatsImpl;
|
||||
|
||||
public class ParallelGroupedNumberPairDataAverageAggregationProcessor
|
||||
extends AbstractParallelGroupedDataStoringAggregationProcessor<Pair, AveragePairWithStats<Number>> {
|
||||
@@ -55,20 +51,27 @@ public class ParallelGroupedNumberPairDataAverageAggregationProcessor
|
||||
incrementElementAmount(element);
|
||||
// concurrency is not an issue here; needsSynchronization() returns true
|
||||
Pair<Number, Number> aggregate = sumPerKey.get(element.getKey());
|
||||
final double doubleValueA = ((Number) element.getDataEntry().getA()).doubleValue();
|
||||
final double doubleValueB = ((Number) element.getDataEntry().getA()).doubleValue();
|
||||
if (aggregate == null) {
|
||||
aggregate = new Pair<>(doubleValueA, doubleValueB);
|
||||
sumPerKey.put(element.getKey(), aggregate);
|
||||
} else {
|
||||
sumPerKey.put(element.getKey(), new Pair<>(((Number) element.getDataEntry().getA()).doubleValue() + doubleValueA,((Number) element.getDataEntry().getB()).doubleValue() + doubleValueB));
|
||||
}
|
||||
if (!minPerKey.containsKey(element.getKey()) || doubleValueA < minPerKey.get(element.getKey()).getA().doubleValue() && doubleValueB < minPerKey.get(element.getKey()).getB().doubleValue()) {
|
||||
minPerKey.put(element.getKey(), new Pair<>(doubleValueA, doubleValueB));
|
||||
}
|
||||
if (!maxPerKey.containsKey(element.getKey()) || doubleValueA > maxPerKey.get(element.getKey()).getA().doubleValue() && doubleValueB > maxPerKey.get(element.getKey()).getB().doubleValue()) {
|
||||
maxPerKey.put(element.getKey(), new Pair<>(doubleValueA, doubleValueB));
|
||||
}
|
||||
Number a = ((Number) element.getDataEntry().getA());
|
||||
Number b = ((Number) element.getDataEntry().getB());
|
||||
|
||||
final Double doubleValueA = a == null ? null : a.doubleValue();
|
||||
final Double doubleValueB = b == null ? null : b.doubleValue();
|
||||
|
||||
if (doubleValueA != null && doubleValueB != null) {
|
||||
if(aggregate == null) {
|
||||
aggregate = new Pair<>(doubleValueA, doubleValueB);
|
||||
sumPerKey.put(element.getKey(), aggregate);
|
||||
}
|
||||
else {
|
||||
sumPerKey.put(element.getKey(), new Pair<>(doubleValueA + aggregate.getA().doubleValue(),doubleValueB + aggregate.getB().doubleValue()));
|
||||
}
|
||||
if (!minPerKey.containsKey(element.getKey()) || doubleValueA < minPerKey.get(element.getKey()).getA().doubleValue() && doubleValueB < minPerKey.get(element.getKey()).getB().doubleValue()) {
|
||||
minPerKey.put(element.getKey(), new Pair<>(doubleValueA, doubleValueB));
|
||||
}
|
||||
if (!maxPerKey.containsKey(element.getKey()) || doubleValueA > maxPerKey.get(element.getKey()).getA().doubleValue() && doubleValueB > maxPerKey.get(element.getKey()).getB().doubleValue()) {
|
||||
maxPerKey.put(element.getKey(), new Pair<>(doubleValueA, doubleValueB));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,12 +91,12 @@ public class ParallelGroupedNumberPairDataAverageAggregationProcessor
|
||||
Map<GroupKey, AveragePairWithStats<Number>> result = new HashMap<>();
|
||||
for (Entry<GroupKey, Pair<Number, Number>> sumAggregationEntry : sumPerKey.entrySet()) {
|
||||
GroupKey key = sumAggregationEntry.getKey();
|
||||
result.put(key, new AveragePairWithStatsImpl<Number>(new Pair<>(sumAggregationEntry.getValue().getA().doubleValue() / elementAmountPerKey.get(key).get(),sumAggregationEntry.getValue().getB().doubleValue() / elementAmountPerKey.get(key).get()),
|
||||
result.put(key, new AveragePairWithStatsImpl<Number>(new Pair<>(sumAggregationEntry.getValue().getA() != null ? sumAggregationEntry.getValue().getA().doubleValue() / elementAmountPerKey.get(key).get() : null, sumAggregationEntry.getValue().getB() != null ? sumAggregationEntry.getValue().getB().doubleValue() / elementAmountPerKey.get(key).get() : null) ,
|
||||
minPerKey.get(key), maxPerKey.get(key),
|
||||
/* median */ null,
|
||||
/* standardDeviation */ null,
|
||||
/* count */ elementAmountPerKey.get(key).get(),
|
||||
Number.class.getName()));
|
||||
Pair.class.getName()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user