added course start date to application period domain object and made appropriate changes to facade and test classes

This commit is contained in:
Emil Siverhall 2012-07-13 15:17:54 +02:00
parent c75de26f64
commit ec7673d64c
7 changed files with 71 additions and 17 deletions

@ -13,6 +13,7 @@
<tr>
<th class="rounded-left-top">Start</th>
<th>End</th>
<th>Course start</th>
<th>Project types</th>
<th>Name</th>
<th>Edit</th>
@ -21,13 +22,14 @@
</thead>
<tfoot>
<tr>
<td colspan="6" class="rounded-foot">&nbsp;</td>
<td colspan="7" class="rounded-foot">&nbsp;</td>
</tr>
</tfoot>
<tbody>
<tr wicket:id="repeatingView">
<td><span wicket:id="startDate"></span></td>
<td><span wicket:id="endDate"></span></td>
<td><span wicket:id="courseStartDate"></span></td>
<td><span wicket:id="type"></span></td>
<td><span wicket:id="name"></span></td>
<td><a href=# wicket:id="editLink"><img wicket:id="editIcon" alt="" /></a></td>

@ -89,6 +89,7 @@ public class AdminMatchPeriodsPanel extends Panel {
final ApplicationPeriod appPeriod = item.getModelObject();
item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("startDate", appPeriod.getStartDate()));
item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("endDate", appPeriod.getEndDate()));
item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("courseStartDate", appPeriod.getCourseStartDate()));
item.add(new Label("type",appPeriod.getProjectClass().toString()));
item.add(new Label("name",appPeriod.getName()));
final boolean linksAreEnabled = !applicationPeriodFacade.projectIdeasExists(appPeriod);

@ -38,6 +38,9 @@ public class ApplicationPeriod extends DomainObject {
@NotNull
private Date endDate;
@NotNull
private Date courseStartDate;
public ApplicationPeriod() {
}
@ -85,4 +88,12 @@ public class ApplicationPeriod extends DomainObject {
public void setProjectClass(Set<ProjectClass> projectClass) {
this.projectClass = projectClass;
}
public void setCourseStartDate(Date courseStartDate) {
this.courseStartDate = courseStartDate;
}
public Date getCourseStartDate() {
return courseStartDate;
}
}

@ -133,6 +133,7 @@ public class ApplicationPeriodFacade {
.append("'").append(appPeriod.getName()).append("'")
.append(" Start date : '").append(new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(appPeriod.getStartDate())).append("'")
.append(" End date : '").append(new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(appPeriod.getEndDate())).append("'")
.append(" Course start date : '").append(new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(appPeriod.getCourseStartDate())).append("'")
.append(" Levels: '").append(projectClasses.toString()).append("'").toString();
}
@ -146,6 +147,8 @@ public class ApplicationPeriodFacade {
appPeriod.setStartDate(cal.getTime());
cal.add(Calendar.MONTH, 1);
appPeriod.setEndDate(cal.getTime());
cal.add(Calendar.MONTH, 1);
appPeriod.setCourseStartDate(cal.getTime());
appPeriod.setName(name);
return appPeriod;
}
@ -157,18 +160,21 @@ public class ApplicationPeriodFacade {
appPeriod.setStartDate(cal.getTime());
cal.add(Calendar.MONTH, 1);
appPeriod.setEndDate(cal.getTime());
cal.add(Calendar.MONTH, 1);
appPeriod.setCourseStartDate(cal.getTime());
appPeriod.setProjectClass(projectClassSet);
appPeriod.setName(name);
return applicationPeriodDao.save(appPeriod);
}
// @Transactional
public ApplicationPeriod createApplicationPeriodDates(final Set<ProjectClass> projectClassSet, final Date startDate, final Date endDate, final String name) {
public ApplicationPeriod createApplicationPeriodDates(final Set<ProjectClass> projectClassSet, final Date startDate, final Date endDate, final Date courseStartDate, final String name) {
Calendar cal = Calendar.getInstance();
ApplicationPeriod appPeriod = new ApplicationPeriod();
appPeriod.setStartDate(startDate);
cal.add(Calendar.MONTH, 1);
appPeriod.setEndDate(endDate);
appPeriod.setCourseStartDate(courseStartDate);
appPeriod.setProjectClass(projectClassSet);
appPeriod.setName(name);
return applicationPeriodDao.save(appPeriod);

@ -20,6 +20,9 @@
<tr>
<td>End date: <div wicket:id="endDate"></div></td>
</tr>
<tr>
<td>Course start date: <div wicket:id="courseStartDate"></div></td>
</tr>
<tr>
<td>Name: <input type="text" wicket:id="name"></td>
</tr>

@ -84,6 +84,7 @@ public class MatchPeriodEditPanel extends Panel {
add(new CustomDateTimeField("startDate", new PropertyModel<Date>(model.getObject(),"startDate")).setEnabled(isEditable()));
add(new CustomDateTimeField("endDate", new PropertyModel<Date>(model.getObject(),"endDate")).setEnabled(isEditable()));
add(new CustomDateTimeField("courseStartDate", new PropertyModel<Date>(model.getObject(),"courseStartDate")).setEnabled(isEditable()));
final TextField<String> nameField = new TextField<String>("name", new PropertyModel<String>(model.getObject(),"name"));
nameField.setRequired(true);
nameField.setEnabled(isEditable());
@ -106,6 +107,12 @@ public class MatchPeriodEditPanel extends Panel {
target.addComponent(feedbackPanel);
return;
}
if(appPeriod.getCourseStartDate().before(appPeriod.getEndDate())) {
error("The course start date cannot be before the application period ends.");
target.addComponent(feedbackPanel);
return;
}
appPeriod.setProjectClass(pClassesToSet);
boolean isEditing = appPeriod.getId() != null;

@ -116,8 +116,8 @@ public class TestApplicationPeriodDao {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(bachelor);
applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(projectClassSet, date("2011-06-14"), date("2011-07-01"), "name1");
applicationPeriod2 =applicationPeriodFacade.createApplicationPeriodDates(projectClassSet, date("2011-07-15"), date("2011-08-01"), "name2");
applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(projectClassSet, date("2011-06-14"), date("2011-07-01"), date("2011-07-12"), "name1");
applicationPeriod2 =applicationPeriodFacade.createApplicationPeriodDates(projectClassSet, date("2011-07-15"), date("2011-08-01"), date("2011-08-10"), "name2");
projectIdea1 = createProjectIdea(applicationPeriod, bachelor);
projectIdea2 = createProjectIdea(applicationPeriod, bachelor);
projectIdea3 = createProjectIdea(applicationPeriod, bachelor);
@ -202,7 +202,9 @@ public class TestApplicationPeriodDao {
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONDAY, 3);
final Date endDate1 = cal.getTime();
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
cal.add(Calendar.DAY_OF_WEEK, 5);
final Date courseStartDate = cal.getTime();
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, courseStartDate, "name1");
ProjectIdea projectIdea = createProjectIdea(applicationPeriod, bachelor);
boolean periodRemoved = applicationPeriodFacade.removeApplicationPeriod(applicationPeriod);
assertFalse(periodRemoved); // should be false
@ -224,7 +226,9 @@ public class TestApplicationPeriodDao {
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONTH, 1);
final Date endDate1 = cal.getTime();
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
cal.add(Calendar.MONTH, 1);
final Date courseStartDate = cal.getTime();
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, courseStartDate, "name1");
boolean periodRemoved = applicationPeriodFacade.removeApplicationPeriod(applicationPeriod);
assertTrue(periodRemoved); // should be true
applicationPeriod = applicationPeriodDao.reLoad(applicationPeriod);
@ -245,7 +249,9 @@ there should exist an OPEN "bachelor"application period */
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONTH, 1);
final Date endDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
cal.add(Calendar.MONTH, 1);
final Date courseStartDate = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, courseStartDate,"name1");
boolean exists = applicationPeriodFacade.openApplicationPeriodsExists(bachelor);
assertTrue(exists); // should exist
}
@ -263,7 +269,9 @@ there should exist an OPEN "bachelor"application period */
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONTH, 1);
final Date endDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myMasterSet, startDate1, endDate1, "name1");
cal.add(Calendar.MONTH, 1);
final Date courseStartDate = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myMasterSet, startDate1, endDate1, courseStartDate,"name1");
boolean exists = applicationPeriodFacade.openApplicationPeriodsExists(bachelor);
assertFalse(exists); // should NOT exist
}
@ -282,13 +290,18 @@ there should exist an OPEN "bachelor"application period */
cal.set(2012, Calendar.APRIL, 2);
cal.set(Calendar.HOUR_OF_DAY, 13); // HOUR_OF_DAY is used for the 24 hour clock
final Date endDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
cal.set(2012, Calendar.MAY, 1);
final Date courseStartDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, courseStartDate1, "name1");
cal.set(2012, Calendar.APRIL, 2);
cal.set(Calendar.HOUR_OF_DAY, 14);
final Date startDate2 = cal.getTime();
cal.set(2012, Calendar.MAY, 2);
final Date endDate2 = cal.getTime();
cal.set(2012, Calendar.MAY, 20);
final Date courseStartDate2 = cal.getTime();
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.
createApplicationPeriodDates(myBachelorSet, startDate2, endDate2, "name2"));
createApplicationPeriodDates(myBachelorSet, startDate2, endDate2, courseStartDate2, "name2"));
assertFalse(periodOverlap); // should NOT overlap
}
@ -307,7 +320,9 @@ there should exist an OPEN "bachelor"application period */
final Date startDate1 = cal.getTime();
cal.set(2012, Calendar.APRIL, 2);
final Date endDate1 = cal.getTime();
ApplicationPeriod applicationPeriod1 = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
cal.set(2012, Calendar.APRIL, 20);
final Date courseStartDate = cal.getTime();
ApplicationPeriod applicationPeriod1 = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, courseStartDate, "name1");
// edit the period
applicationPeriod1.getProjectClass().add(master);
cal.set(2012, Calendar.MAY, 2);
@ -335,10 +350,12 @@ there should exist an OPEN "bachelor"application period */
final Date endDate = cal.getTime();
cal.set(Calendar.HOUR_OF_DAY, 14);
final Date endDate2 = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate, "name1");
cal.set(Calendar.APRIL, 20);
final Date courseStartDate = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate, courseStartDate, "name1");
Set<ProjectClass> myMasterSet = new HashSet<ProjectClass>();
myMasterSet.add(master);
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myMasterSet, startDate, endDate2, "name1"));
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myMasterSet, startDate, endDate2, courseStartDate, "name1"));
assertFalse(periodOverlap); // should NOT overlap
}
@ -356,12 +373,16 @@ there should exist an OPEN "bachelor"application period */
final Date startDate1 = cal.getTime();
cal.set(2012, Calendar.DECEMBER, 2);
final Date endDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
cal.set(2012, Calendar.DECEMBER, 20);
final Date courseStartDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, courseStartDate1, "name1");
cal.set(2012, Calendar.MAY, 2);
final Date startDate2 = cal.getTime();
cal.set(2012, Calendar.JUNE, 2);
final Date endDate2 = cal.getTime();
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate2, endDate2, "name1"));
cal.set(2012, Calendar.JUNE, 25);
final Date courseStartDate2 = cal.getTime();
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate2, endDate2, courseStartDate2, "name1"));
assertTrue(periodOverlap); // should overlap
}
@ -379,13 +400,16 @@ there should exist an OPEN "bachelor"application period */
final Date startDate = cal.getTime();
cal.set(2012, Calendar.APRIL, 2);
final Date endDate = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate, "name1");
cal.set(2012, Calendar.APRIL, 5);
final Date courseStartDate = cal.getTime();
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate, courseStartDate, "name1");
cal.set(2012, Calendar.APRIL, 2);
cal.set(Calendar.HOUR_OF_DAY, 13);
final Date endDate2 = cal.getTime();
Set<ProjectClass> multipleProjectClasses = new HashSet<ProjectClass>();
multipleProjectClasses.add(bachelor);
multipleProjectClasses.add(master);
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate2, "name1"));
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate2, courseStartDate, "name1"));
assertTrue(periodOverlap); // should overlap
}