package elw.dao.rest;
import elw.dao.ctx.CtxSlot;
import elw.dao.ctx.CtxTask;
import elw.vo.FileSlot;
import elw.vo.State;
import java.util.Collections;
import java.util.SortedMap;
import java.util.TreeMap;
/**
* Summary of task, per slot.
*/
public class RestTaskSummary {
private final SortedMap<String, RestSlotSummary> slots =
new TreeMap<String, RestSlotSummary>();
private final SortedMap<State, Double> points =
new TreeMap<State, Double>();
public static void increment(
final SortedMap<State, Double> points,
final SortedMap<State, Double> increment
) {
for (State state : State.values()) {
points.put(
state,
points.get(state) + increment.get(state)
);
}
}
public void register(
final CtxSlot ctxSlot,
final RestSlotSummary slotSummary
) {
slotSummary.precachePointTotals(ctxSlot);
slots.put(ctxSlot.slot.getId(), slotSummary);
}
public void precachePointTotals(final CtxTask ctxTask) {
RestSlotSummary.clearPoints(points);
for (FileSlot slot : ctxTask.tType.getFileSlots().values()) {
final RestSlotSummary slotSummary =
slots.get(slot.getId());
if (slotSummary == null) {
continue;
}
increment(
points, slotSummary.getPoints()
);
}
}
public SortedMap<String, RestSlotSummary> getSlots() {
return Collections.unmodifiableSortedMap(slots);
}
public SortedMap<State, Double> getPoints() {
return Collections.unmodifiableSortedMap(points);
}
}