ItEr23S08CUEdicionCalendarioLaboral: Checking and managing errors on date when creating a new version.
This commit is contained in:
parent
41112a11ec
commit
fb14f125f4
5 changed files with 40 additions and 23 deletions
|
|
@ -432,15 +432,6 @@ public class BaseCalendar extends BaseEntity implements IValidable {
|
|||
return derivedCalendar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new version this {@link BaseCalendar} from the current moment.
|
||||
* It makes that the current calendar expires in the current date. And the
|
||||
* new calendar will be used from now onwards.
|
||||
*/
|
||||
public BaseCalendar newVersion() throws IllegalArgumentException {
|
||||
return newVersion(new LocalDate());
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new version this {@link BaseCalendar} from the specific date.
|
||||
* It makes that the current calendar expires in the specific date. And the
|
||||
|
|
@ -457,6 +448,11 @@ public class BaseCalendar extends BaseEntity implements IValidable {
|
|||
*/
|
||||
public BaseCalendar newVersion(LocalDate date)
|
||||
throws IllegalArgumentException {
|
||||
if (date.compareTo(new LocalDate()) <= 0) {
|
||||
throw new IllegalArgumentException(
|
||||
"Date for new version must be greater than current date");
|
||||
}
|
||||
|
||||
if (nextCalendar != null) {
|
||||
return nextCalendar.newVersion(date);
|
||||
}
|
||||
|
|
@ -464,7 +460,8 @@ public class BaseCalendar extends BaseEntity implements IValidable {
|
|||
if (previousCalendar != null) {
|
||||
if (date.compareTo(previousCalendar.getExpiringDate()) <= 0) {
|
||||
throw new IllegalArgumentException(
|
||||
"Version date must be greater than expiring date of previous calendars");
|
||||
"Version date must be greater than expiring date of " +
|
||||
"all versions of this calendar");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING
|
|||
import java.util.List;
|
||||
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.navalplanner.business.calendars.daos.BaseCalendarDAO;
|
||||
|
|
@ -94,7 +95,8 @@ public class BaseCalendarDAOTest {
|
|||
BaseCalendar calendar = BaseCalendarTest.createBasicCalendar();
|
||||
baseCalendarDAO.save(calendar);
|
||||
|
||||
BaseCalendar nextCalendar = calendar.newVersion();
|
||||
BaseCalendar nextCalendar = calendar.newVersion((new LocalDate())
|
||||
.plusDays(1));
|
||||
baseCalendarDAO.save(nextCalendar);
|
||||
|
||||
try {
|
||||
|
|
@ -138,7 +140,8 @@ public class BaseCalendarDAOTest {
|
|||
public void removeVersions() throws InstanceNotFoundException {
|
||||
BaseCalendar calendar = BaseCalendarTest.createBasicCalendar();
|
||||
baseCalendarDAO.save(calendar);
|
||||
BaseCalendar newCalendar = calendar.newVersion();
|
||||
BaseCalendar newCalendar = calendar.newVersion((new LocalDate())
|
||||
.plusDays(1));
|
||||
baseCalendarDAO.save(newCalendar);
|
||||
|
||||
baseCalendarDAO.flush();
|
||||
|
|
@ -189,7 +192,8 @@ public class BaseCalendarDAOTest {
|
|||
|
||||
assertThat(baseCalendarDAO.findLastVersions().size(), equalTo(1));
|
||||
|
||||
BaseCalendar newCalendar = calendar.newVersion();
|
||||
BaseCalendar newCalendar = calendar.newVersion((new LocalDate())
|
||||
.plusDays(1));
|
||||
baseCalendarDAO.save(newCalendar);
|
||||
baseCalendarDAO.flush();
|
||||
|
||||
|
|
@ -213,7 +217,8 @@ public class BaseCalendarDAOTest {
|
|||
assertThat(baseCalendarDAO.findByParent(parent1).get(0).getId(),
|
||||
equalTo(calendar.getId()));
|
||||
|
||||
BaseCalendar newVersion = calendar.newVersion();
|
||||
BaseCalendar newVersion = calendar.newVersion((new LocalDate())
|
||||
.plusDays(1));
|
||||
newVersion.setParent(parent2);
|
||||
|
||||
baseCalendarDAO.save(newVersion);
|
||||
|
|
|
|||
|
|
@ -199,7 +199,8 @@ public class BaseCalendarTest {
|
|||
@Test
|
||||
public void testCreateNewVersion() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
BaseCalendar nextCalendar = calendar.newVersion();
|
||||
BaseCalendar nextCalendar = calendar.newVersion((new LocalDate())
|
||||
.plusDays(1));
|
||||
|
||||
assertThat(calendar, equalTo(nextCalendar.getPreviousCalendar()));
|
||||
assertThat(nextCalendar, equalTo(calendar.getNextCalendar()));
|
||||
|
|
@ -632,8 +633,7 @@ public class BaseCalendarTest {
|
|||
public void testNotAllowSetExpiringDateInThePast() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
|
||||
LocalDate pastMonth = (new LocalDate()).minusMonths(1);
|
||||
calendar.newVersion(pastMonth);
|
||||
calendar.newVersion((new LocalDate()).plusDays(1));
|
||||
|
||||
LocalDate pastWeek = (new LocalDate()).minusWeeks(1);
|
||||
try {
|
||||
|
|
@ -644,4 +644,11 @@ public class BaseCalendarTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testNotAllowNewVersionOnCurrentDate() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
|
||||
calendar.newVersion(new LocalDate());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import org.zkoss.zul.Treecell;
|
|||
import org.zkoss.zul.Treeitem;
|
||||
import org.zkoss.zul.TreeitemRenderer;
|
||||
import org.zkoss.zul.Treerow;
|
||||
import org.zkoss.zul.api.Datebox;
|
||||
import org.zkoss.zul.api.Window;
|
||||
|
||||
/**
|
||||
|
|
@ -756,7 +757,7 @@ public class BaseCalendarCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
|
||||
public Date getDateValidFromNewVersion() {
|
||||
return new Date();
|
||||
return (new LocalDate()).plusDays(1).toDateTimeAtStartOfDay().toDate();
|
||||
}
|
||||
|
||||
public void setDateValidFromNewVersion(Date date) {
|
||||
|
|
@ -777,11 +778,18 @@ public class BaseCalendarCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
}
|
||||
|
||||
public void aceptCreateNewVersion(Date date) {
|
||||
// TODO manage errors if date is current date or date is not greater
|
||||
// than last expiring date
|
||||
baseCalendarModel.createNewVersion(date);
|
||||
public void acceptCreateNewVersion() {
|
||||
Component component = createNewVersion
|
||||
.getFellow("dateValidFromNewVersion");
|
||||
Date date = ((Datebox) component).getValue();
|
||||
|
||||
try {
|
||||
baseCalendarModel.createNewVersion(date);
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new WrongValueException(component, e.getMessage());
|
||||
}
|
||||
|
||||
Clients.closeErrorBox(component);
|
||||
creatingNewVersion = false;
|
||||
Util.reloadBindings(createNewVersion);
|
||||
setSelectedDay(date);
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
</hbox>
|
||||
<hbox>
|
||||
<button label="${i18n:_('Create')}"
|
||||
onClick="controller.aceptCreateNewVersion(dateValidFromNewVersion.value);" />
|
||||
onClick="controller.acceptCreateNewVersion();" />
|
||||
<button label="${i18n:_('Cancel')}"
|
||||
onClick="controller.cancelNewVersion();" />
|
||||
</hbox>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue