Bring progress KPI "Global progress of the project" to DashboardModel.

FEA: ItEr75S27PerProjectDashboard
This commit is contained in:
Nacho Barrientos 2011-11-14 17:43:10 +01:00 committed by Manuel Rego Casasnovas
parent 51c1b75375
commit e0e2a5ca08
3 changed files with 84 additions and 6 deletions

View file

@ -84,6 +84,27 @@ public class TaskGroup extends TaskElement {
return planningData.getProgressAllByNumHours();
}
public BigDecimal getTheoreticalProgressByNumHoursForAllTasksUntilNow() {
if (planningData == null) {
return BigDecimal.ZERO;
}
return planningData.getTheoreticalProgressByNumHoursForAllTasks();
}
public BigDecimal getTheoreticalProgressByDurationForCriticalPathUntilNow() {
if (planningData == null) {
return BigDecimal.ZERO;
}
return planningData.getTheoreticalProgressByDurationForCriticalPath();
}
public BigDecimal getTheoreticalProgressByNumHoursForCriticalPathUntilNow() {
if (planningData == null) {
return BigDecimal.ZERO;
}
return planningData.getTheoreticalProgressByNumHoursForCriticalPath();
}
@SuppressWarnings("unused")
@AssertTrue(message = "order element associated to a task group must be not null")
private boolean theOrderElementMustBeNotNull() {

View file

@ -69,11 +69,16 @@ public class DashboardController extends GenericForwardComposer {
if (dashboardModel.getPercentageOfFinishedTasks() == null) {
return "NULL";
}
String out = dashboardModel.getPercentageOfFinishedTasks().toString() + " " +
dashboardModel.getPercentageOfInProgressTasks() + " " +
dashboardModel.getPercentageOfReadyToStartTasks() + " " +
dashboardModel.getPercentageOfBlockedTasks() + "\n" +
dashboardModel.getTheoreticalAdvancePercentageByHoursUntilNow();
String out = "% Finished: " + dashboardModel.getPercentageOfFinishedTasks().toString() + "" +
"% In progress: " + dashboardModel.getPercentageOfInProgressTasks() + " " +
"% Ready to Start: " + dashboardModel.getPercentageOfReadyToStartTasks() + " " +
"% Blocked: " + dashboardModel.getPercentageOfBlockedTasks() + " " +
"A% hours: " + dashboardModel.getAdvancePercentageByHours() + " " +
"TA% hours: " + dashboardModel.getTheoreticalAdvancePercentageByHoursUntilNow() + " " +
"ACP% hours: " + dashboardModel.getCriticalPathProgressByNumHours() + " " +
"TACP% hours: " + dashboardModel.getTheoreticalProgressByNumHoursForCriticalPathUntilNow() + " " +
"ACP% duration: " + dashboardModel.getCriticalPathProgressByDuration() + " " +
"TACP% duration: " + dashboardModel.getTheoreticalProgressByDurationForCriticalPathUntilNow();
return out;
}

View file

@ -27,6 +27,7 @@ import java.util.Map;
import org.libreplan.business.orders.entities.Order;
import org.libreplan.business.planner.entities.TaskElement;
import org.libreplan.business.planner.entities.TaskGroup;
import org.libreplan.business.planner.entities.TaskStatusEnum;
import org.libreplan.business.planner.entities.visitors.AccumulateTasksStatusVisitor;
import org.libreplan.business.planner.entities.visitors.ResetTasksStatusVisitor;
@ -55,6 +56,7 @@ public class DashboardModel {
this.calculateTaskStatusStatistics();
}
/* Progress KPI: "Number of tasks by status" */
public BigDecimal getPercentageOfFinishedTasks() {
return taskStatusStats.get(TaskStatusEnum.FINISHED);
}
@ -71,8 +73,58 @@ public class DashboardModel {
return taskStatusStats.get(TaskStatusEnum.BLOCKED);
}
/* Progress KPI: "Global Progress of the Project" */
public BigDecimal getAdvancePercentageByHours(){
TaskGroup rootAsTaskGroup = (TaskGroup)getRootTask();
if(rootAsTaskGroup == null) {
return BigDecimal.ZERO;
}
BigDecimal ratio = rootAsTaskGroup.getProgressAllByNumHours();
return ratio.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN);
}
public BigDecimal getTheoreticalAdvancePercentageByHoursUntilNow(){
BigDecimal ratio = getRootTask().getTheoreticalAdvancePercentageUntilDate(new Date());
TaskGroup rootAsTaskGroup = (TaskGroup)getRootTask();
if(rootAsTaskGroup == null) {
return BigDecimal.ZERO;
}
BigDecimal ratio = rootAsTaskGroup.getTheoreticalProgressByNumHoursForAllTasksUntilNow();
return ratio.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN);
}
public BigDecimal getCriticalPathProgressByNumHours() {
TaskGroup rootAsTaskGroup = (TaskGroup)getRootTask();
if(rootAsTaskGroup == null) {
return BigDecimal.ZERO;
}
BigDecimal ratio = rootAsTaskGroup.getCriticalPathProgressByNumHours();
return ratio.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN);
}
public BigDecimal getTheoreticalProgressByNumHoursForCriticalPathUntilNow() {
TaskGroup rootAsTaskGroup = (TaskGroup)getRootTask();
if(rootAsTaskGroup == null) {
return BigDecimal.ZERO;
}
BigDecimal ratio = rootAsTaskGroup.getTheoreticalProgressByNumHoursForCriticalPathUntilNow();
return ratio.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN);
}
public BigDecimal getCriticalPathProgressByDuration() {
TaskGroup rootAsTaskGroup = (TaskGroup)getRootTask();
if(rootAsTaskGroup == null) {
return BigDecimal.ZERO;
}
BigDecimal ratio = rootAsTaskGroup.getCriticalPathProgressByDuration();
return ratio.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN);
}
public BigDecimal getTheoreticalProgressByDurationForCriticalPathUntilNow() {
TaskGroup rootAsTaskGroup = (TaskGroup)getRootTask();
if(rootAsTaskGroup == null) {
return BigDecimal.ZERO;
}
BigDecimal ratio = rootAsTaskGroup.getTheoreticalProgressByDurationForCriticalPathUntilNow();
return ratio.multiply(BigDecimal.TEN).multiply(BigDecimal.TEN);
}