From 5861e44f1ad91defcd37b2f06e0a8af8491be07d Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Fri, 24 Jul 2009 13:45:01 +0200 Subject: [PATCH] ItEr18S14CUAsignacionRecursosEspecificosAPlanificacion: Created business entities ResourceAllocation and SpecificResourceAllocation. Made relations with Task and Worker. Javier Moran Rua : The commit has been ammended adding the ResourceAllocation entity to the navalplanner-business-spring-config-test.xml configuration file. --- .../planner/entities/ResourceAllocation.java | 74 +++++++++++++++++++ .../entities/SpecificResourceAllocation.java | 40 ++++++++++ .../business/planner/entities/Task.java | 21 ++++++ .../navalplanner-business-spring-config.xml | 3 + .../entities/ResourceAllocations.hbm.xml | 22 ++++++ .../business/planner/entities/Tasks.hbm.xml | 4 + ...valplanner-business-spring-config-test.xml | 3 + 7 files changed, 167 insertions(+) create mode 100644 navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java create mode 100644 navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java create mode 100644 navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml 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 new file mode 100644 index 000000000..206b346cd --- /dev/null +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/ResourceAllocation.java @@ -0,0 +1,74 @@ +/** + * + */ +package org.navalplanner.business.planner.entities; + +import java.math.BigDecimal; + +import org.hibernate.validator.NotNull; + +/** + * Resources are allocated to planner tasks. + * + * @author Manuel Rego Casasnovas + */ +public abstract class ResourceAllocation { + + private Long id; + + private Long version; + + @NotNull + private Task task; + + /** + * Allocation percentage of the resource. + * + * It's one based, instead of one hundred based. + */ + private BigDecimal percentage = new BigDecimal(0).setScale(2); + + /** + * For hibernate, DO NOT USE + */ + public ResourceAllocation() { + } + + public ResourceAllocation(Task task) { + this.task = task; + } + + public Long getId() { + return id; + } + + public Long getVersion() { + return version; + } + + public Task getTask() { + return task; + } + + public BigDecimal getPercentage() { + return percentage; + } + + /** + * @param proportion + * It's one based, instead of one hundred based. + */ + public void setPercentage(BigDecimal proportion) { + this.percentage = proportion; + } + + public boolean isTransient() { + return id == null; + } + + public void makeTransientAgain() { + id = null; + version = null; + } + +} diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java new file mode 100644 index 000000000..aef9cbce8 --- /dev/null +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/SpecificResourceAllocation.java @@ -0,0 +1,40 @@ +package org.navalplanner.business.planner.entities; + +import org.hibernate.validator.NotNull; +import org.navalplanner.business.resources.entities.Worker; + +/** + * Represents the relation between {@link Task} and a specific {@link Worker}. + * + * @author Manuel Rego Casasnovas + */ +public class SpecificResourceAllocation extends ResourceAllocation { + + @NotNull + private Worker worker; + + /** + * For hibernate, DO NOT USE + */ + public SpecificResourceAllocation() { + } + + public SpecificResourceAllocation(Task task) { + super(task); + } + + public Worker getWorker() { + return worker; + } + + public void setWorker(Worker worker) { + this.worker = worker; + } + + public void forceLoadWorker() { + if (worker != null) { + worker.getId(); + } + } + +} diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java index f864c77ae..2ca7e47f9 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Task.java @@ -1,6 +1,9 @@ package org.navalplanner.business.planner.entities; +import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.apache.commons.lang.Validate; import org.hibernate.validator.NotNull; @@ -18,6 +21,8 @@ public class Task extends TaskElement { @NotNull private HoursGroup hoursGroup; + private Set resourceAllocations = new HashSet(); + /** * For hibernate, DO NOT USE */ @@ -48,4 +53,20 @@ public class Task extends TaskElement { throw new UnsupportedOperationException(); } + public Set getResourceAllocations() { + return Collections.unmodifiableSet(resourceAllocations); + } + + public void addResourceAllocation(ResourceAllocation resourceAllocation) { + resourceAllocations.add(resourceAllocation); + } + + public void removeResourceAllocation(ResourceAllocation resourceAllocation) { + resourceAllocations.remove(resourceAllocation); + } + + public void forceLoadResourceAllocations() { + resourceAllocations.size(); + } + } diff --git a/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml b/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml index 910abe568..8c0ef234c 100644 --- a/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml +++ b/navalplanner-business/src/main/resources/navalplanner-business-spring-config.xml @@ -29,6 +29,9 @@ org/navalplanner/business/planner/entities/Tasks.hbm.xml + + org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml + org/navalplanner/business/workreports/entities/WorkReports.hbm.xml diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml new file mode 100644 index 000000000..68b7cf5ca --- /dev/null +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml index 7069d0ca1..81cf1e91d 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/planner/entities/Tasks.hbm.xml @@ -27,6 +27,10 @@ + + + + diff --git a/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml b/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml index 6feb72620..ce09fa6de 100644 --- a/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml +++ b/navalplanner-business/src/test/resources/navalplanner-business-spring-config-test.xml @@ -42,6 +42,9 @@ org/navalplanner/business/workreports/entities/WorkReports.hbm.xml + + + org/navalplanner/business/planner/entities/ResourceAllocations.hbm.xml TestEntities.hbm.xml