ItEr14S11CUConfiguracionDeOrganizacionsDeTraballoConUnidadesTraballoItEr13S13: Basic changes at model,

adding new attributes and moving ActivityWork set to TaskWorkLeaf.
This commit is contained in:
Manuel Rego Casasnovas 2009-06-24 10:45:55 +02:00 committed by Javier Moran Rua
parent 9652efb04d
commit df70af8fef
6 changed files with 136 additions and 48 deletions

View file

@ -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;
}
}

View file

@ -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<ActivityWork> activityWorks = new HashSet<ActivityWork>();
private Boolean mandatoryInit = false;
private Boolean mandatoryEnd = false;
private String description;
public abstract Integer getWorkHours();
public void setActivities(List<ActivityWork> activities) {
this.activityWorks = new HashSet<ActivityWork>(activities);
}
public void addActivity(ActivityWork activityWork) {
activityWorks.add(activityWork);
}
public List<ActivityWork> getActivities() {
return new ArrayList<ActivityWork>(activityWorks);
}
public abstract List<ActivityWork> 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();
}

View file

@ -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<ActivityWork> getActivities() {
List<ActivityWork> activities = new ArrayList<ActivityWork>();
for (TaskWork taskWork : children) {
activities.addAll(taskWork.getActivities());
}
return activities;
}
}

View file

@ -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<ActivityWork> activityWorks = new HashSet<ActivityWork>();
@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<ActivityWork> activities = getActivities();
@ -63,4 +61,37 @@ public class TaskWorkLeaf extends TaskWork {
setActivities(activities);
}
public void setActivities(List<ActivityWork> activities) {
this.activityWorks = new HashSet<ActivityWork>(activities);
}
public void addActivity(ActivityWork activityWork) {
activityWorks.add(activityWork);
}
public void deleteActivity(ActivityWork value) {
activityWorks.remove(value);
}
@Override
public List<ActivityWork> getActivities() {
return new ArrayList<ActivityWork>(activityWorks);
}
@Override
public void forceLoadActivities() {
for (ActivityWork activityWork : activityWorks) {
activityWork.getWorkingHours();
}
}
public void setFixedHours(Boolean fixedHours) {
this.fixedHours = fixedHours;
}
public Boolean isFixedHours() {
return fixedHours;
}
}

View file

@ -23,14 +23,13 @@
<id name="id" type="long" access="field">
<generator class="native" />
</id>
<set name="activityWorks" access="field" cascade="all">
<key column="PARENT_TASK" not-null="false"></key>
<one-to-many class="ActivityWork" />
</set>
<property name="name" access="field" />
<property name="initDate" access="field" />
<property name="endDate" access="field" />
<property name="mandatoryInit" access="field" />
<property name="mandatoryEnd" access="field" />
<property name="description" access="field" />
<joined-subclass name="TaskWorkContainer">
<key column="TASKWORKID"></key>
@ -43,6 +42,13 @@
<joined-subclass name="TaskWorkLeaf">
<key column="TASKWORKID"></key>
<property name="fixedHours" access="field" />
<set name="activityWorks" access="field" cascade="all">
<key column="PARENT_TASK" not-null="false"></key>
<one-to-many class="ActivityWork" />
</set>
</joined-subclass>
</class>
@ -50,6 +56,10 @@
<id name="id" type="long" access="field">
<generator class="native" />
</id>
<property name="workingHours"></property>
<property name="workingHours" access="field" />
<property name="percentage" access="field" />
<property name="hoursPolicy" access="field" />
</class>
</hibernate-mapping>

View file

@ -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}. <br />
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -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);