Make the prefered method of building a DayAssignment to specify the EffortDuration

FEA: ItEr60S19TimeUnitDataType
This commit is contained in:
Óscar González Fernández 2010-09-13 18:30:18 +02:00
parent f53a002d15
commit 820b686bf9
5 changed files with 67 additions and 31 deletions

View file

@ -173,12 +173,13 @@ public abstract class DayAssignment extends BaseEntity {
}
protected DayAssignment(LocalDate day, int hours, Resource resource) {
protected DayAssignment(LocalDate day, EffortDuration duration,
Resource resource) {
Validate.notNull(day);
Validate.isTrue(hours >= 0);
Validate.notNull(duration);
Validate.notNull(resource);
this.day = day;
this.duration = EffortDuration.hours(hours);
this.duration = duration;
this.resource = resource;
}

View file

@ -19,6 +19,8 @@
*/
package org.navalplanner.business.planner.entities;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import org.apache.commons.lang.Validate;
import org.hibernate.validator.NotNull;
import org.joda.time.LocalDate;
@ -27,6 +29,7 @@ import org.navalplanner.business.resources.entities.Worker;
import org.navalplanner.business.scenarios.entities.Scenario;
import org.navalplanner.business.util.deepcopy.OnCopy;
import org.navalplanner.business.util.deepcopy.Strategy;
import org.navalplanner.business.workingday.EffortDuration;
/**
@ -35,9 +38,17 @@ import org.navalplanner.business.util.deepcopy.Strategy;
*/
public class DerivedDayAssignment extends DayAssignment {
@Deprecated
public static DerivedDayAssignment create(LocalDate day, int hours,
Resource resource, DerivedAllocation derivedAllocation) {
return create(new DerivedDayAssignment(day, hours, resource,
return create(new DerivedDayAssignment(day, hours(hours), resource,
derivedAllocation));
}
public static DerivedDayAssignment create(LocalDate day,
EffortDuration duration, Resource resource,
DerivedAllocation derivedAllocation) {
return create(new DerivedDayAssignment(day, duration, resource,
derivedAllocation));
}
@ -110,18 +121,21 @@ public class DerivedDayAssignment extends DayAssignment {
@OnCopy(Strategy.IGNORE)
private ParentState parentState;
private DerivedDayAssignment(LocalDate day, int hours, Resource resource) {
private DerivedDayAssignment(LocalDate day, EffortDuration hours,
Resource resource) {
super(day, hours, resource);
Validate.isTrue(resource instanceof Worker);
}
private DerivedDayAssignment(LocalDate day, int hours, Resource resource,
private DerivedDayAssignment(LocalDate day, EffortDuration hours,
Resource resource,
DerivedAllocation derivedAllocation) {
this(day, hours, resource);
this.parentState = new TransientParentState(derivedAllocation);
}
private DerivedDayAssignment(LocalDate day, int hours, Resource resource,
private DerivedDayAssignment(LocalDate day, EffortDuration hours,
Resource resource,
DerivedDayAssignmentsContainer container) {
this(day, hours, resource);
Validate.notNull(container);
@ -140,7 +154,8 @@ public class DerivedDayAssignment extends DayAssignment {
private static DerivedDayAssignment create(LocalDate day, int hours,
Resource resource, DerivedDayAssignmentsContainer container) {
return create(new DerivedDayAssignment(day, hours, resource, container));
return create(new DerivedDayAssignment(day,
EffortDuration.hours(hours), resource, container));
}
DerivedDayAssignment copyAsChildOf(DerivedAllocation derivedAllocation) {

View file

@ -20,6 +20,8 @@
package org.navalplanner.business.planner.entities;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@ -33,6 +35,7 @@ import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.scenarios.entities.Scenario;
import org.navalplanner.business.util.deepcopy.OnCopy;
import org.navalplanner.business.util.deepcopy.Strategy;
import org.navalplanner.business.workingday.EffortDuration;
/**
*
@ -117,11 +120,15 @@ public class GenericDayAssignment extends DayAssignment {
}
@Deprecated
public static GenericDayAssignment create(LocalDate day, int hours,
Resource resource) {
GenericDayAssignment result = new GenericDayAssignment(day, hours,
resource);
return create(result);
return create(new GenericDayAssignment(day, hours(hours), resource));
}
public static GenericDayAssignment create(LocalDate day,
EffortDuration duration, Resource resource) {
return create(new GenericDayAssignment(day, duration, resource));
}
public static Set<GenericDayAssignment> copy(
@ -163,8 +170,9 @@ public class GenericDayAssignment extends DayAssignment {
return result;
}
private GenericDayAssignment(LocalDate day, int hours, Resource resource) {
super(day, hours, resource);
private GenericDayAssignment(LocalDate day, EffortDuration duration,
Resource resource) {
super(day, duration, resource);
parentState = new ContainerNotSpecified();
}

View file

@ -20,6 +20,8 @@
package org.navalplanner.business.planner.entities;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@ -33,6 +35,7 @@ import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.business.scenarios.entities.Scenario;
import org.navalplanner.business.util.deepcopy.OnCopy;
import org.navalplanner.business.util.deepcopy.Strategy;
import org.navalplanner.business.workingday.EffortDuration;
/**
@ -156,14 +159,20 @@ public class SpecificDayAssignment extends DayAssignment {
@NotNull
private SpecificDayAssignmentsContainer container;
@Deprecated
public static SpecificDayAssignment create(LocalDate day, int hours,
Resource resource) {
return create(new SpecificDayAssignment(day,
hours, resource));
return create(new SpecificDayAssignment(day, hours(hours), resource));
}
public SpecificDayAssignment(LocalDate day, int hours, Resource resource) {
super(day, hours, resource);
public static SpecificDayAssignment create(LocalDate day,
EffortDuration duration, Resource resource) {
return create(new SpecificDayAssignment(day, duration, resource));
}
public SpecificDayAssignment(LocalDate day, EffortDuration duration,
Resource resource) {
super(day, duration, resource);
this.parentState = new ContainerNotSpecified();
}

View file

@ -19,6 +19,7 @@
*/
package org.navalplanner.business.test.resources.entities;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@ -29,6 +30,7 @@ import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONF
import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE;
import static org.navalplanner.business.test.resources.daos.CriterionSatisfactionDAOTest.date;
import static org.navalplanner.business.test.resources.daos.CriterionSatisfactionDAOTest.year;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import java.util.ArrayList;
import java.util.Arrays;
@ -516,8 +518,9 @@ public class ResourceTest {
LocalDate today = new LocalDate();
LocalDate tomorrow = today.plus(Days.days(1));
SpecificDayAssignment specificDayAssignment = new SpecificDayAssignment(
today, 10, worker);
SpecificDayAssignment another = new SpecificDayAssignment(tomorrow, 10,
today, hours(10), worker);
SpecificDayAssignment another = new SpecificDayAssignment(tomorrow,
hours(10),
worker);
givenWorkerWithAssignments(specificDayAssignment, another);
@ -532,12 +535,13 @@ public class ResourceTest {
LocalDate today = new LocalDate();
LocalDate tomorrow = today.plus(Days.days(1));
SpecificDayAssignment specificDayAssignment = new SpecificDayAssignment(
today, 10, worker);
SpecificDayAssignment another = new SpecificDayAssignment(tomorrow, 10,
today, hours(10), worker);
SpecificDayAssignment another = new SpecificDayAssignment(tomorrow,
hours(10),
worker);
givenWorkerWithAssignments(specificDayAssignment, another);
DayAssignment other = new SpecificDayAssignment(today, 3, worker);
DayAssignment other = new SpecificDayAssignment(today, hours(3), worker);
worker.addNewAssignments(Arrays.asList(other));
assertTrue(worker.getAssignments().size() == assignments.size() + 1);
}
@ -554,12 +558,11 @@ public class ResourceTest {
givenWorker();
LocalDate today = new LocalDate();
SpecificDayAssignment specificDayAssignment = new SpecificDayAssignment(
today, 10, worker);
SpecificDayAssignment another = new SpecificDayAssignment(today, 3,
worker);
SpecificDayAssignment atAnotherDay = new SpecificDayAssignment(today
.plusDays(1), 1,
worker);
today, hours(10), worker);
SpecificDayAssignment another = new SpecificDayAssignment(today,
hours(3), worker);
SpecificDayAssignment atAnotherDay = new SpecificDayAssignment(
today.plusDays(1), hours(1), worker);
givenWorkerWithAssignments(specificDayAssignment, another, atAnotherDay);
assertThat(worker.getAssignedHours(today), equalTo(13));
@ -570,11 +573,11 @@ public class ResourceTest {
givenWorker();
LocalDate today = new LocalDate();
SpecificDayAssignment specificDayAssignment = new SpecificDayAssignment(
today, 10, worker);
today, hours(10), worker);
givenWorkerWithAssignments(specificDayAssignment);
worker.getAssignedHours(today);
SpecificDayAssignment another = new SpecificDayAssignment(today, 3,
worker);
SpecificDayAssignment another = new SpecificDayAssignment(today,
hours(3), worker);
worker.addNewAssignments(Arrays.asList(another));
assertThat(worker.getAssignedHours(today), equalTo(13));