Add utility methods so it's easier to create EffortDuration

FEA: ItEr60S19TimeUnitDataType
This commit is contained in:
Óscar González Fernández 2010-08-18 12:45:24 +02:00
parent 9008f945a3
commit c15b228904
7 changed files with 34 additions and 30 deletions

View file

@ -28,7 +28,6 @@ import org.navalplanner.business.calendars.daos.ICalendarExceptionDAO;
import org.navalplanner.business.common.IntegrationEntity;
import org.navalplanner.business.common.Registry;
import org.navalplanner.business.workingday.EffortDuration;
import org.navalplanner.business.workingday.EffortDuration.Granularity;
/**
* Represents an exceptional day that has a different number of hours. For
@ -56,8 +55,7 @@ public class CalendarException extends IntegrationEntity {
}
private static EffortDuration fromHours(Integer hours) {
return hours == null ? null : EffortDuration.elapsing(hours,
Granularity.HOURS);
return hours == null ? null : EffortDuration.hours(hours);
}
public void updateUnvalidated(LocalDate date, Integer hours,

View file

@ -43,7 +43,6 @@ import org.navalplanner.business.util.deepcopy.AfterCopy;
import org.navalplanner.business.util.deepcopy.OnCopy;
import org.navalplanner.business.util.deepcopy.Strategy;
import org.navalplanner.business.workingday.EffortDuration;
import org.navalplanner.business.workingday.EffortDuration.Granularity;
public abstract class DayAssignment extends BaseEntity {
@ -179,7 +178,7 @@ public abstract class DayAssignment extends BaseEntity {
Validate.isTrue(hours >= 0);
Validate.notNull(resource);
this.day = day;
this.duration = EffortDuration.elapsing(hours, Granularity.HOURS);
this.duration = EffortDuration.hours(hours);
this.resource = resource;
}

View file

@ -51,6 +51,18 @@ public class EffortDuration {
return new EffortDuration(granularity.toSeconds(amount));
}
public static EffortDuration hours(int amount) {
return elapsing(amount, Granularity.HOURS);
}
public static EffortDuration minutes(int amount) {
return elapsing(amount, Granularity.MINUTES);
}
public static EffortDuration seconds(int amount) {
return elapsing(amount, Granularity.SECONDS);
}
private final int seconds;
private EffortDuration(int seconds) {

View file

@ -93,7 +93,7 @@ public class EffortDurationType implements UserType {
@Override
public Object assemble(Serializable cached, Object owner)
throws HibernateException {
return EffortDuration.elapsing((Integer) cached, Granularity.SECONDS);
return EffortDuration.seconds((Integer) cached);
}
@Override

View file

@ -23,7 +23,8 @@ package org.navalplanner.business.test.workingday;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import static org.navalplanner.business.workingday.EffortDuration.elapsing;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import static org.navalplanner.business.workingday.EffortDuration.minutes;
import org.junit.Test;
import org.navalplanner.business.workingday.EffortDuration;
@ -33,7 +34,7 @@ public class EffortDurationTest {
@Test
public void itCanExpressTheDurationAsHoursMinutesAndSeconds() {
EffortDuration duration = EffortDuration.elapsing(4, Granularity.HOURS);
EffortDuration duration = EffortDuration.hours(4);
assertThat(duration.getHours(), equalTo(4));
assertThat(duration.getMinutes(), equalTo(240));
assertThat(duration.getSeconds(), equalTo(240 * 60));
@ -54,35 +55,33 @@ public class EffortDurationTest {
@Test
public void hoursCanBeZero() {
EffortDuration.elapsing(0, Granularity.HOURS);
EffortDuration.hours(0);
}
@Test
public void minutesAreTranslatedToHours() {
assertThat(elapsing(120, Granularity.MINUTES).getHours(),
equalTo(2));
assertThat(elapsing(119, Granularity.MINUTES).getHours(), equalTo(1));
assertThat(elapsing(121, Granularity.MINUTES).getHours(), equalTo(2));
assertThat(EffortDuration.minutes(120).getHours(), equalTo(2));
assertThat(minutes(119).getHours(), equalTo(1));
assertThat(minutes(121).getHours(), equalTo(2));
}
@Test
public void canBeTranslatedToAnyGranularity(){
assertThat(elapsing(3, Granularity.HOURS)
.convertTo(Granularity.MINUTES),
equalTo(180));
assertThat(hours(3).convertTo(Granularity.MINUTES), equalTo(180));
}
@Test
public void canSpecifyADurationWithSeveralUnits() {
assertThat(elapsing(2, Granularity.HOURS).and(30, Granularity.MINUTES)
assertThat(
hours(2).and(30, Granularity.MINUTES)
.convertTo(Granularity.MINUTES), equalTo(150));
}
private static final EffortDuration oneHourAndAHalf = elapsing(1,
Granularity.HOURS).and(30, Granularity.MINUTES);
private static final EffortDuration ninetyMinutes = elapsing(90,
private static final EffortDuration oneHourAndAHalf = hours(1).and(30,
Granularity.MINUTES);
private static final EffortDuration ninetyMinutes = minutes(90);
@Test
public void twoDurationWithTheSameSecondsAreEqual(){
assertThat(oneHourAndAHalf, equalTo(ninetyMinutes));

View file

@ -41,10 +41,8 @@ public class TaskDateTest {
private LocalDate today = new LocalDate();
private LocalDate tomorrow = today.plusDays(1);
private EffortDuration oneHour = EffortDuration.elapsing(1,
Granularity.HOURS);
private EffortDuration halfHour = EffortDuration.elapsing(30,
Granularity.MINUTES);
private EffortDuration oneHour = EffortDuration.hours(1);
private EffortDuration halfHour = EffortDuration.minutes(30);
@Test(expected = IllegalArgumentException.class)
public void needsANotNullDuration() {
@ -60,9 +58,8 @@ public class TaskDateTest {
public void equalsAndHashCodeWorkOk() {
LocalDate today = new LocalDate();
LocalDate tomorrow = today.plusDays(1);
EffortDuration oneHour = EffortDuration.elapsing(1, Granularity.HOURS);
EffortDuration halfHour = EffortDuration.elapsing(30,
Granularity.MINUTES);
EffortDuration oneHour = EffortDuration.hours(1);
EffortDuration halfHour = EffortDuration.minutes(30);
assertEquals(TaskDate.create(today, halfHour),
TaskDate.create(tomorrow.minusDays(1), halfHour));
assertEquals(TaskDate.create(today, halfHour).hashCode(), TaskDate

View file

@ -20,12 +20,12 @@
package org.navalplanner.business.test.workingday.hibernate;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertThat;
import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE;
import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE;
import static org.navalplanner.business.workingday.EffortDuration.hours;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@ -60,8 +60,7 @@ public class EffortDurationTypeTest {
@Test
public void canBeSavedAndRetrieved() {
EffortDuration duration = EffortDuration.elapsing(2, Granularity.HOURS)
.and(30, Granularity.MINUTES);
EffortDuration duration = hours(2).and(30, Granularity.MINUTES);
givenEntity(duration);
getSession().save(entity);
getSession().flush();