diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/FlatFunction.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/FlatFunction.java
deleted file mode 100644
index 73f958bed..000000000
--- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/FlatFunction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * This file is part of NavalPlan
- *
- * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e
- * Desenvolvemento Tecnolóxico de Galicia
- * Copyright (C) 2010-2011 Igalia, S.L.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see .
- */
-
-package org.navalplanner.business.planner.entities;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.navalplanner.business.planner.entities.allocationalgorithms.ResourcesPerDayModification;
-import org.navalplanner.business.workingday.EffortDuration;
-
-/**
- * Calculate hours per day for resource based on total amount of hours to be
- * done and number of resources per day using a flat allocation
- *
- * @author Diego Pino García
- */
-public class FlatFunction extends AssignmentFunction {
-
- public static FlatFunction create() {
- return create(new FlatFunction());
- }
-
- protected FlatFunction() {
-
- }
-
- public String getName() {
- return AssignmentFunctionName.FLAT.toString();
- }
-
-
- public void applyTo(ResourceAllocation> resourceAllocation) {
- apply(resourceAllocation);
- }
-
- private void apply(ResourceAllocation> resourceAllocation) {
- int hours = resourceAllocation.getAssignedHours();
-
- List resourcesPerDayModification = Arrays.asList(resourceAllocation
- .asResourcesPerDayModification());
-
- ResourceAllocation
- .allocating(resourcesPerDayModification)
- .untilAllocating(EffortDuration.hours(hours));
- }
-
- @Override
- public boolean isManual() {
- return false;
- }
-
-}
diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java
index 25b251ae7..ec5c73b12 100644
--- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java
@@ -87,8 +87,6 @@ public abstract class ResourceAllocation extends
private static final Log LOG = LogFactory.getLog(ResourceAllocation.class);
- private static final FlatFunction FLAT_FUNCTION = FlatFunction.create();
-
public static > List getSatisfied(
Collection resourceAllocations) {
Validate.notNull(resourceAllocations);
@@ -1418,16 +1416,17 @@ public abstract class ResourceAllocation extends
return assignmentFunction;
}
- public void setAssignmentFunction(AssignmentFunction assignmentFunction) {
- // If the assignment function is empty, avoid creating an association
- // between the resource allocation and the assignment function
- if (assignmentFunction == null) {
- this.assignmentFunction = null;
- FLAT_FUNCTION.applyTo(this);
- return;
- }
+ /**
+ * If {@link AssignmentFunction} is null, it's just set and nothing is
+ * applied
+ *
+ * @param assignmentFunction
+ */
+ public void setAssignmentFunctionAndApplyIfNotFlat(AssignmentFunction assignmentFunction) {
this.assignmentFunction = assignmentFunction;
- this.assignmentFunction.applyTo(this);
+ if (this.assignmentFunction != null) {
+ this.assignmentFunction.applyTo(this);
+ }
}
public void setAssignmentFunctionWithoutApply(AssignmentFunction assignmentFunction) {
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java
index 303085224..5fed9ec51 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AdvancedAllocationController.java
@@ -1388,7 +1388,7 @@ class Row {
@Override
public void applyOn(ResourceAllocation> resourceAllocation) {
- resourceAllocation.setAssignmentFunction(ManualFunction.create());
+ resourceAllocation.setAssignmentFunctionAndApplyIfNotFlat(ManualFunction.create());
}
@Override
@@ -1490,7 +1490,7 @@ class Row {
@Override
public void applyOn(
ResourceAllocation> resourceAllocation) {
- resourceAllocation.setAssignmentFunction(SigmoidFunction.create());
+ resourceAllocation.setAssignmentFunctionAndApplyIfNotFlat(SigmoidFunction.create());
reloadEfforts();
}
@@ -1655,7 +1655,7 @@ class Row {
.setSelectedFunction(AssignmentFunctionName.MANUAL.toString());
ResourceAllocation> allocation = getAllocation();
if (!(allocation.getAssignmentFunction() instanceof ManualFunction)) {
- allocation.setAssignmentFunction(ManualFunction.create());
+ allocation.setAssignmentFunctionAndApplyIfNotFlat(ManualFunction.create());
}
}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StrechesFunctionConfiguration.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StrechesFunctionConfiguration.java
index 73c514f38..704531035 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StrechesFunctionConfiguration.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StrechesFunctionConfiguration.java
@@ -58,7 +58,7 @@ public abstract class StrechesFunctionConfiguration implements
int exitStatus = stretchesFunctionController.showWindow();
if (exitStatus == Messagebox.OK) {
- getAllocation().setAssignmentFunction(
+ getAllocation().setAssignmentFunctionAndApplyIfNotFlat(
stretchesFunctionController.getAssignmentFunction());
assignmentFunctionChanged();
}
@@ -94,7 +94,7 @@ public abstract class StrechesFunctionConfiguration implements
@Override
public void applyOn(ResourceAllocation> resourceAllocation) {
- resourceAllocation.setAssignmentFunction(StretchesFunction.create());
+ resourceAllocation.setAssignmentFunctionAndApplyIfNotFlat(StretchesFunction.create());
}
@Override