
com.talanlabs.taskmanager.engine.graph.StatusGraphsBuilder Maven / Gradle / Ivy
The newest version!
package com.talanlabs.taskmanager.engine.graph;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class StatusGraphsBuilder {
private final F previousStatus;
private List> pairs;
private List> statusGraphs;
protected StatusGraphsBuilder(F previousStatus) {
super();
this.previousStatus = previousStatus;
this.pairs = new ArrayList<>();
this.statusGraphs = new ArrayList<>();
}
public static StatusGraphsBuilder newBuilder() {
return newBuilder(null);
}
public static StatusGraphsBuilder newBuilder(F previousStatus) {
return new StatusGraphsBuilder<>(previousStatus);
}
public StatusGraphsBuilder addNextStatusGraph(F nextStatus, String nextStatusTaskServiceCode) {
return addNextStatusGraph(nextStatus, nextStatusTaskServiceCode, null);
}
public StatusGraphsBuilder addNextStatusGraph(F nextStatus, String nextStatusTaskServiceCode, StatusGraphsBuilder statusGraphsBuilder) {
this.pairs.add(Pair.of(nextStatus, nextStatusTaskServiceCode));
if (statusGraphsBuilder != null && statusGraphsBuilder.pairs != null && !statusGraphsBuilder.pairs.isEmpty()) {
this.statusGraphs.addAll(statusGraphsBuilder.pairs.stream().map(pair -> new MyStatusGraph<>(nextStatus, pair.getLeft(), pair.getRight())).collect(Collectors.toList()));
this.statusGraphs.addAll(statusGraphsBuilder.statusGraphs);
}
return this;
}
public List> build() {
List> res = pairs.stream().map(pair -> new MyStatusGraph<>(previousStatus, pair.getLeft(), pair.getRight())).collect(Collectors.toList());
res.addAll(statusGraphs);
return res;
}
private static class MyStatusGraph implements IStatusGraph {
private final F previousStatus;
private final F currentStatus;
private final String statusTaskServiceCode;
public MyStatusGraph(F previousStatus, F currentStatus, String statusTaskServiceCode) {
super();
this.previousStatus = previousStatus;
this.currentStatus = currentStatus;
this.statusTaskServiceCode = statusTaskServiceCode;
}
@Override
public F getPreviousStatus() {
return previousStatus;
}
@Override
public F getCurrentStatus() {
return currentStatus;
}
@Override
public String getStatusTaskServiceCode() {
return this.statusTaskServiceCode;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy