diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/NoneFunction.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/NoneFunction.java
new file mode 100644
index 000000000..2d16b9cf6
--- /dev/null
+++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/NoneFunction.java
@@ -0,0 +1,67 @@
+/*
+ * 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;
+
+/**
+ *
+ * @author Diego Pino García
+ *
+ * Calculate hours per day for resource based on total amount of hours to
+ * be done and number of resources per day
+ *
+ */
+public class NoneFunction extends AssignmentFunction {
+
+ public static NoneFunction create() {
+ return create(new NoneFunction());
+ }
+
+ protected NoneFunction() {
+
+ }
+
+ public String getName() {
+ return ASSIGNMENT_FUNCTION_NAME.NONE.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(hours);
+ }
+
+}
\ No newline at end of file
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 68e5b357a..e31a589a8 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
@@ -82,6 +82,8 @@ public abstract class ResourceAllocation extends
private static final Log LOG = LogFactory.getLog(ResourceAllocation.class);
+ private static final NoneFunction NONE_FUNCTION = NoneFunction.create();
+
public static > List getSatisfied(
Collection resourceAllocations) {
Validate.notNull(resourceAllocations);
@@ -1243,10 +1245,14 @@ public abstract class ResourceAllocation extends
}
public void setAssignmentFunction(AssignmentFunction assignmentFunction) {
- this.assignmentFunction = assignmentFunction;
- if (this.assignmentFunction != null) {
- this.assignmentFunction.applyTo(this);
+ // If the assignment function is empty, avoid creating an association
+ // between the resource allocation and the assignment function
+ if (assignmentFunction == null) {
+ NONE_FUNCTION.applyTo(this);
+ return;
}
+ this.assignmentFunction = assignmentFunction;
+ this.assignmentFunction.applyTo(this);
}
private void setWithoutApply(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 0c1809b1a..6ba6ec961 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
@@ -48,6 +48,7 @@ import org.navalplanner.business.planner.entities.AssignmentFunction;
import org.navalplanner.business.planner.entities.AssignmentFunction.ASSIGNMENT_FUNCTION_NAME;
import org.navalplanner.business.planner.entities.CalculatedValue;
import org.navalplanner.business.planner.entities.GenericResourceAllocation;
+import org.navalplanner.business.planner.entities.NoneFunction;
import org.navalplanner.business.planner.entities.ResourceAllocation;
import org.navalplanner.business.planner.entities.SigmoidFunction;
import org.navalplanner.business.planner.entities.SpecificResourceAllocation;
@@ -1308,7 +1309,15 @@ class Row {
public void applyDefaultFunction(
ResourceAllocation> resourceAllocation) {
resourceAllocation.setAssignmentFunction(null);
+ reloadHours();
}
+
+ private void reloadHours() {
+ reloadHoursSameRowForDetailItems();
+ reloadAllHours();
+ fireCellChanged();
+ }
+
};
private abstract class CommonStrechesConfiguration extends