diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ActivityWork.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ActivityWork.java index 13a4300fc..0ead19ab8 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ActivityWork.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/ActivityWork.java @@ -1,6 +1,6 @@ package org.navalplanner.business.workorders.entities; -import org.hibernate.validator.NotNull; +import java.math.BigDecimal; public class ActivityWork { @@ -10,9 +10,16 @@ public class ActivityWork { return id; } - @NotNull private Integer workingHours; + private BigDecimal percentage; + + public enum HoursPolicies { + NO_FIXED, FIXED_HOURS, FIXED_PERCENTAGE + }; + + private HoursPolicies hoursPolicy = HoursPolicies.NO_FIXED; + public void setWorkingHours(Integer workingHours) { this.workingHours = workingHours; } @@ -21,4 +28,20 @@ public class ActivityWork { return workingHours; } + public void setPercentage(BigDecimal percentage) { + this.percentage = percentage; + } + + public BigDecimal getPercentage() { + return percentage; + } + + public void setHoursPolicy(HoursPolicies hoursPolicy) { + this.hoursPolicy = hoursPolicy; + } + + public HoursPolicies getHoursPolicy() { + return hoursPolicy; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWork.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWork.java index 5587022ae..dc3707c89 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWork.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWork.java @@ -1,10 +1,7 @@ package org.navalplanner.business.workorders.entities; -import java.util.ArrayList; import java.util.Date; -import java.util.HashSet; import java.util.List; -import java.util.Set; import org.hibernate.validator.NotNull; @@ -18,21 +15,15 @@ public abstract class TaskWork { private Date endDate; - private Set activityWorks = new HashSet(); + private Boolean mandatoryInit = false; + + private Boolean mandatoryEnd = false; + + private String description; public abstract Integer getWorkHours(); - public void setActivities(List activities) { - this.activityWorks = new HashSet(activities); - } - - public void addActivity(ActivityWork activityWork) { - activityWorks.add(activityWork); - } - - public List getActivities() { - return new ArrayList(activityWorks); - } + public abstract List getActivities(); public long getId() { return id; @@ -73,15 +64,32 @@ public abstract class TaskWork { this.endDate = endDate; } - public abstract void remove(TaskWork lastAsTask); + public void setMandatoryInit(Boolean mandatoryInit) { + this.mandatoryInit = mandatoryInit; + } - public abstract void replace(TaskWork old, TaskWork newTask); + public Boolean isMandatoryInit() { + return mandatoryInit; + } + + public void setMandatoryEnd(Boolean mandatoryEnd) { + this.mandatoryEnd = mandatoryEnd; + } + + public Boolean isMandatoryEnd() { + return mandatoryEnd; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } public abstract TaskWorkContainer asContainer(); - public void forceLoadActivities() { - for (ActivityWork activityWork : activityWorks) { - activityWork.getWorkingHours(); - } - } + public abstract void forceLoadActivities(); + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkContainer.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkContainer.java index 4ad08da91..c0c8abbc5 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkContainer.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkContainer.java @@ -66,4 +66,20 @@ public class TaskWorkContainer extends TaskWork implements ITaskWorkContainer { return result; } + @Override + public void forceLoadActivities() { + for (TaskWork taskWork : children) { + taskWork.forceLoadActivities(); + } + } + + @Override + public List getActivities() { + List activities = new ArrayList(); + for (TaskWork taskWork : children) { + activities.addAll(taskWork.getActivities()); + } + return activities; + } + } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkLeaf.java b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkLeaf.java index e8777b633..2436deb35 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkLeaf.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/workorders/entities/TaskWorkLeaf.java @@ -1,10 +1,16 @@ package org.navalplanner.business.workorders.entities; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class TaskWorkLeaf extends TaskWork { + private Boolean fixedHours = false; + + private Set activityWorks = new HashSet(); + @Override public Integer getWorkHours() { int result = 0; @@ -28,25 +34,17 @@ public class TaskWorkLeaf extends TaskWork { return true; } - public void remove(TaskWork taskWork) { - - } - @Override public TaskWorkContainer asContainer() { TaskWorkContainer result = new TaskWorkContainer(); result.setName(getName()); result.setInitDate(getInitDate()); result.setEndDate(getEndDate()); - result.setActivities(getActivities()); + // FIXME + // result.setActivities(getActivities()); return result; } - @Override - public void replace(TaskWork old, TaskWork newTask) { - throw new UnsupportedOperationException(); - } - public void setWorkHours(Integer workingHours) { List activities = getActivities(); @@ -63,4 +61,37 @@ public class TaskWorkLeaf extends TaskWork { setActivities(activities); } + + public void setActivities(List activities) { + this.activityWorks = new HashSet(activities); + } + + public void addActivity(ActivityWork activityWork) { + activityWorks.add(activityWork); + } + + public void deleteActivity(ActivityWork value) { + activityWorks.remove(value); + } + + @Override + public List getActivities() { + return new ArrayList(activityWorks); + } + + @Override + public void forceLoadActivities() { + for (ActivityWork activityWork : activityWorks) { + activityWork.getWorkingHours(); + } + } + + public void setFixedHours(Boolean fixedHours) { + this.fixedHours = fixedHours; + } + + public Boolean isFixedHours() { + return fixedHours; + } + } diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml index e5f1e5244..bfdc03d3c 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/workorders/entities/WorkOrders.hbm.xml @@ -23,14 +23,13 @@ - - - - + + + @@ -43,6 +42,13 @@ + + + + + + + @@ -50,6 +56,10 @@ - + + + + + \ No newline at end of file diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/services/ProjectWorkServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/services/ProjectWorkServiceTest.java index afe1a6d20..77ed835aa 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/services/ProjectWorkServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/workorders/services/ProjectWorkServiceTest.java @@ -1,5 +1,13 @@ package org.navalplanner.business.test.workorders.services; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE; +import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; + import java.util.List; import org.junit.Test; @@ -20,14 +28,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; -import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE; -import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE; - /** * Tests for {@link ProjectWork}.
* @author Óscar González Fernández @@ -171,7 +171,7 @@ public class ProjectWorkServiceTest { TaskWorkContainer containerReloaded = (TaskWorkContainer) reloaded .getTaskWorks().get(0); assertThat(containerReloaded.getActivities().size(), - equalTo(0)); + equalTo(1)); assertThat(containerReloaded.getChildren().size(), equalTo(1)); TaskWork leaf = containerReloaded.getChildren().get(0);