package scrum.client.project;
import java.util.ArrayList;
import java.util.List;
public class EstimationBarFactory {
public static void createEstimationBars(List<Requirement> requirements, Integer velocity) {
int sprintOffset = 0;
float remainingWorkInSprint = velocity == null ? 0 : velocity;
List<Float> workPerSprint;
boolean stop = false;
for (Requirement requirement : requirements) {
workPerSprint = new ArrayList<Float>();
Float estimatedWork = requirement.getEstimatedWork();
if (estimatedWork == null && !stop) {
stop = true;
sprintOffset++;
}
if (velocity == null || velocity == 0 || estimatedWork == null) {
if (estimatedWork != null) workPerSprint.add(estimatedWork);
requirement.setEstimationBar(new EstimationBar(sprintOffset, workPerSprint));
continue;
}
float work = estimatedWork;
while (work > remainingWorkInSprint) {
workPerSprint.add(remainingWorkInSprint);
work -= remainingWorkInSprint;
if (!stop) sprintOffset++;
remainingWorkInSprint = velocity;
}
if (work > 0) {
workPerSprint.add(work);
remainingWorkInSprint -= work;
}
requirement.setEstimationBar(new EstimationBar(sprintOffset - workPerSprint.size() + 1, workPerSprint));
if (remainingWorkInSprint == 0) {
if (!stop) sprintOffset++;
remainingWorkInSprint = velocity;
}
}
}
}