@@ -0,0 +1,2445 @@
+/*%0A * This file is part of LibrePlan%0A *%0A * Copyright (C) 2011 Igalia, S.L.%0A *%0A * This program is free software: you can redistribute it and/or modify%0A * it under the terms of the GNU Affero General Public License as published by%0A * the Free Software Foundation, either version 3 of the License, or%0A * (at your option) any later version.%0A *%0A * This program is distributed in the hope that it will be useful,%0A * but WITHOUT ANY WARRANTY; without even the implied warranty of%0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the%0A * GNU Affero General Public License for more details.%0A *%0A * You should have received a copy of the GNU Affero General Public License%0A * along with this program.  If not, see %3Chttp://www.gnu.org/licenses/%3E.%0A */%0A%0Apackage org.libreplan.business.planner.entities.visitors;%0A%0A/**%0A * FIXME%0A * This visitor calculates allocated/spent hours deviation%0A * for finished tasks.%0A * @author Nacho Barrientos %3Cnacho@igalia.com%3E%0A */%0Aimport java.util.ArrayList;%0Aimport java.util.List;%0A%0Aimport org.libreplan.business.planner.entities.Task;%0Aimport org.libreplan.business.planner.entities.TaskElement;%0Aimport org.libreplan.business.planner.entities.TaskGroup;%0Aimport org.libreplan.business.util.TaskElementVisitor;%0Aimport org.libreplan.business.workingday.EffortDuration;%0A%0Apublic class CalculateFinishedTasksEstimationDeviationVisitor extends TaskElementVisitor %7B%0A%0A    private List%3CDouble%3E deviations;%0A%0A    public CalculateFinishedTasksEstimationDeviationVisitor() %7B%0A        this.deviations = new ArrayList%3CDouble%3E();%0A    %7D%0A%0A    public List%3CDouble%3E getDeviations() %7B%0A        return this.deviations;%0A    %7D%0A%0A    public int getNumberOfConsideredTasks()%7B%0A        return deviations.size();%0A    %7D%0A%0A    public void visit(Task task) %7B%0A        if (task.isFinished()) %7B%0A            int allocatedHours = task.getAssignedHours();%0A            if (allocatedHours %3E 0) %7B%0A                EffortDuration spentEffort = task.getOrderElement()%0A                        .getSumChargedEffort().getTotalChargedEffort();%0A                deviations.add(new Double(%0A                        ((1.0*spentEffort.getHours() -%0A                                allocatedHours)/allocatedHours)*100));%0A            %7D else %7B%0A                deviations.add(new Double(0.0));%0A            %7D%0A        %7D%0A%0A    %7D%0A%0A    public void visit(TaskGroup taskGroup) %7B%0A        for (TaskElement each: taskGroup.getChildren()) %7B%0A            each.acceptVisitor(this);%0A        %7D%0A    %7D%0A%0A%7D%0A

Add visitor to calculate hours estimation deviation for finished tasks.