Skip to content
Snippets Groups Projects
Commit 62e143ca authored by Kim Kern's avatar Kim Kern
Browse files

fix AggregationContextBuilder

parent cd591a05
No related branches found
No related tags found
No related merge requests found
......@@ -39,21 +39,26 @@ public class AggregationContext implements Serializable {
public AggregationContext aggregate(AggregationContext neighborContext) {
double[] aggregatedValues = getFunction().apply(neighborContext.getValues(), getValues());
AggregationContext aggregatedContext = new AggregationContextBuilder(getFunction(), getValueExtractor(), getAltValueExtractor(),
aggregatedValues, resultExtractor)
.setCurrentExchanges(getCurrentExchanges() + 1)
.setMaxExchanges(getMaxExchanges())
.setUuid(getUuid())
.build();
AggregationContext aggregatedContext = new AggregationContextBuilder(getFunction(), aggregatedValues)
.setCurrentExchanges(getCurrentExchanges() + 1)
.setValueExtractor(getValueExtractor())
.setValueAltExtractor(getValueAltExtractor())
.setMaxExchanges(getMaxExchanges())
.setUuid(getUuid())
.setResultExtractor(resultExtractor)
.build();
System.out.println("Aggregation: " + Arrays.toString(getValues()) + " + " + Arrays.toString(neighborContext.getValues()) + " = " + aggregatedValues);
return aggregatedContext;
}
public AggregationContext initContext(AbstractWallet wallet, boolean useValueExtractor) {
double[] initValues = useValueExtractor ? getValueExtractor().apply(wallet) : getAltValueExtractor().apply(wallet);
AggregationContext initContext = new AggregationContextBuilder(getFunction(), getValueExtractor(), getAltValueExtractor(), initValues, resultExtractor)
double[] initValues = useValueExtractor ? getValueExtractor().apply(wallet) : getValueAltExtractor().apply(wallet);
AggregationContext initContext = new AggregationContextBuilder(getFunction(), initValues)
.setMaxExchanges(getMaxExchanges())
.setValueExtractor(getValueExtractor())
.setValueAltExtractor(getValueAltExtractor())
.setUuid(getUuid())
.setResultExtractor(resultExtractor)
.build();
return initContext;
}
......@@ -85,7 +90,7 @@ public class AggregationContext implements Serializable {
return valueExtractor;
}
private Function<AbstractWallet, double[]> getAltValueExtractor() {
private Function<AbstractWallet, double[]> getValueAltExtractor() {
return valueAltExtractor;
}
......@@ -104,23 +109,23 @@ public class AggregationContext implements Serializable {
public static class AggregationContextBuilder {
private final AggregationFunction function;
private final double[] values;
private final Function<AbstractWallet, double[]> valueExtractor;
private final Function<AbstractWallet, double[]> valueAltExtractor;
private Function<AbstractWallet, double[]> valueExtractor;
private Function<AbstractWallet, double[]> valueAltExtractor;
private int currentExchanges;
private int maxExchanges;
private UUID uuid;
private Function<double[], Double> resultExtractor;
public AggregationContextBuilder(AggregationFunction function, Function<AbstractWallet, double[]> valueExtractor, Function<AbstractWallet, double[]> valueAltExtractor,
double[] values, Function<double[], Double> resultExtractor) {
public AggregationContextBuilder(AggregationFunction function, double[] values) {
this.function = function;
this.valueExtractor = valueExtractor;
this.valueAltExtractor = valueAltExtractor;
this.valueExtractor = wallet -> new double[] { wallet.getAmount() };
this.valueAltExtractor = this.valueExtractor;
this.values = values;
this.currentExchanges = 0;
this.maxExchanges = 20;
this.uuid = UUID.randomUUID();
this.resultExtractor = resultExtractor;
this.resultExtractor = valuesArray -> valuesArray[0];
}
public AggregationContextBuilder setCurrentExchanges(int currentExchanges) {
......@@ -138,6 +143,21 @@ public class AggregationContext implements Serializable {
return this;
}
public AggregationContextBuilder setResultExtractor(Function<double[], Double> resultExtractor) {
this.resultExtractor = resultExtractor;
return this;
}
public AggregationContextBuilder setValueExtractor(Function<AbstractWallet, double[]> valueExtractor) {
this.valueExtractor = valueExtractor;
return this;
}
public AggregationContextBuilder setValueAltExtractor(Function<AbstractWallet, double[]> valueAltExtractor) {
this.valueAltExtractor = valueAltExtractor;
return this;
}
public AggregationContext build() {
return new AggregationContext(function, valueExtractor, valueAltExtractor, values, currentExchanges, maxExchanges, uuid, resultExtractor);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment