Add utility methods so it's easier to create EffortDuration
FEA: ItEr60S19TimeUnitDataType
This commit is contained in:
parent
9008f945a3
commit
c15b228904
7 changed files with 34 additions and 30 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue