Adding NotNull annotations for ApplicationPeriods.

This commit is contained in:
Tom Vahlman 2012-02-20 17:31:43 +01:00
parent b5c106f5a1
commit d16cea6ab9
12 changed files with 69 additions and 39 deletions

14
pom.xml

@ -234,6 +234,18 @@
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.1.0.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>biz.source_code</groupId>
<artifactId>base64coder</artifactId>
@ -257,7 +269,7 @@
<scope>test</scope>
</dependency>
<!--<dependency>
<!-- <dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>

@ -1,7 +1,7 @@
-- it is not possible to set a proper default DATETIME in mysql so we settle for "0", the sql works irrespective if the table are empty or not
/*ALTER TABLE `ApplicationPeriod` CHANGE `startDate` `startDate` DATETIME NOT NULL DEFAULT 0,
CHANGE `endDate` `endDate` DATETIME NOT NULL DEFAULT 0,
CHANGE `name` `name` varchar(255) NOT NULL*/
-- we choose not to have any default DATETIME values
ALTER TABLE `ApplicationPeriod` CHANGE `startDate` `startDate` DATETIME NOT NULL,
CHANGE `endDate` `endDate` DATETIME NOT NULL,
CHANGE `name` `name` varchar(255) NOT NULL
-- => the new SQL should be tested, ie "run all tests", before delivering

@ -5,7 +5,7 @@ import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
//import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@ -29,16 +29,16 @@ public class ApplicationPeriod extends DomainObject {
@ManyToMany
private Set<ProjectClass> projectClass = new HashSet<ProjectClass>();
//@NotNull
@NotNull
//@Basic (optional = false)
private String name;
//@NotNull
@NotNull
//@Basic (optional = false)
@Temporal(TemporalType.DATE)
private Date startDate;
//@NotNull
@NotNull
//@Basic (optional = false)
@Temporal(TemporalType.DATE)
private Date endDate;

@ -114,24 +114,37 @@ public class ApplicationPeriodFacade {
* Helper that is used to initialize constructors
* @return ApplicationPeriod the object that is returned
*/
public static ApplicationPeriod createDummyApplicationPeriod(){
public static ApplicationPeriod createDummyApplicationPeriod(final String name){
ApplicationPeriod appPeriod = new ApplicationPeriod();
Calendar cal = Calendar.getInstance();
appPeriod.setStartDate(cal.getTime());
cal.add(Calendar.MONTH, 1);
appPeriod.setEndDate(cal.getTime());
appPeriod.setName("...");
appPeriod.setName(name);
return appPeriod;
}
@Transactional
public ApplicationPeriod createApplicationPeriod(final Set<ProjectClass> projectClassSet, final Date startDate, final Date endDate) {
// @Transactional
public ApplicationPeriod createApplicationPeriod(final Set<ProjectClass> projectClassSet, final String name) {
Calendar cal = Calendar.getInstance();
ApplicationPeriod appPeriod = new ApplicationPeriod();
appPeriod.setStartDate(startDate != null ? startDate : cal.getTime());
appPeriod.setStartDate(cal.getTime());
cal.add(Calendar.MONTH, 1);
appPeriod.setEndDate(endDate != null ? endDate : cal.getTime());
appPeriod.setEndDate(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) {
Calendar cal = Calendar.getInstance();
ApplicationPeriod appPeriod = new ApplicationPeriod();
appPeriod.setStartDate(startDate);
cal.add(Calendar.MONTH, 1);
appPeriod.setEndDate(endDate);
appPeriod.setProjectClass(projectClassSet);
appPeriod.setName(name);
return applicationPeriodDao.save(appPeriod);
}

@ -43,7 +43,7 @@ public class MatchPeriodEditPanel extends Panel {
private Component feedbackPanel;
public MatchPeriodEditPanel(final String id, final WebMarkupContainer container) {
this(id, new Model<ApplicationPeriod>(ApplicationPeriodFacade.createDummyApplicationPeriod()), container);
this(id, new Model<ApplicationPeriod>(ApplicationPeriodFacade.createDummyApplicationPeriod("...")), container);
}
public MatchPeriodEditPanel(String id, IModel<ApplicationPeriod> model, final WebMarkupContainer container) {
super(id);

@ -55,7 +55,9 @@ public class TestGreedyMatchingAlgorithm {
@Autowired
private MatchDao matchDao;
@Autowired
private ApplicationPeriodDao applicationPeriodDao;
@Autowired
private ApplicationPeriodFacade applicationPeriodFacade;
@ -123,7 +125,10 @@ public class TestGreedyMatchingAlgorithm {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(bachelorProjectClass);
projectClassSet.add(masterProjectClass);
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null);
List<ApplicationPeriod> myList = new ArrayList<ApplicationPeriod>();
myList.addAll(applicationPeriodDao.findAll());
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, "name1");
bachelorProjectIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
masterSupervisor = createSupervisor("Birger", "Andersson", languages);
masterProjectClass = createProjectClass(ProjectClass.MASTER, "Master", "Master project class");

@ -133,7 +133,7 @@ public class TestMatcher {
projectClassSet.add(bachelor);
projectClassSet.add(master);
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null);
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, "name1");
ProjectIdea projectIdea1 = new ProjectIdea();
projectIdea1.setTitle("Project idea 1");
projectIdea1.setApplicationPeriod(applicationPeriod);

@ -113,8 +113,8 @@ public class TestApplicationPeriodDao {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(bachelor);
applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, date("2011-06-14"), date("2011-07-01"));
applicationPeriod2 =applicationPeriodFacade.createApplicationPeriod(projectClassSet, date("2011-07-15"), date("2011-08-01"));
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");
projectIdea1 = createProjectIdea(applicationPeriod, bachelor);
projectIdea2 = createProjectIdea(applicationPeriod, bachelor);
projectIdea3 = createProjectIdea(applicationPeriod, bachelor);
@ -203,7 +203,7 @@ public class TestApplicationPeriodDao {
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONDAY, 3);
final Date endDate1 = cal.getTime();
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate1, endDate1);
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
boolean periodRemoved = applicationPeriodFacade.removeApplicationPeriod(applicationPeriod);
Assert.assertFalse(periodRemoved); // should be false
}
@ -223,7 +223,7 @@ public class TestApplicationPeriodDao {
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONTH, 1);
final Date endDate1 = cal.getTime();
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate1, endDate1);
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
boolean periodRemoved = applicationPeriodFacade.removeApplicationPeriod(applicationPeriod);
Assert.assertTrue(periodRemoved); // should be true
}
@ -242,7 +242,7 @@ there should exist an OPEN "bachelor"application period */
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONTH, 1);
final Date endDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate1, endDate1);
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
boolean exists = applicationPeriodFacade.openApplicationPeriodsExists(bachelor);
Assert.assertTrue(exists); // should exist
}
@ -260,7 +260,7 @@ there should exist an OPEN "bachelor"application period */
final Date startDate1 = cal.getTime();
cal.add(Calendar.MONTH, 2);
final Date endDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriod(myMasterSet, startDate1, endDate1);
applicationPeriodFacade.createApplicationPeriodDates(myMasterSet, startDate1, endDate1, "name1");
boolean exists = applicationPeriodFacade.openApplicationPeriodsExists(bachelor);
Assert.assertFalse(exists); // should NOT exist
}
@ -293,12 +293,12 @@ should NOT overlap. */
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.createApplicationPeriod(myBachelorSet, startDate1, endDate1);
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
cal.set(Calendar.HOUR_OF_DAY, 14);
final Date startDate2 = cal.getTime();
cal.set(2012, Calendar.MAY, 2);
final Date endDate2 = cal.getTime();
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate2, endDate2));
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate2, endDate2, "name1"));
Assert.assertFalse(periodOverlap); // should NOT overlap
}
@ -317,7 +317,7 @@ should NOT overlap. */
final Date startDate1 = cal.getTime();
cal.set(2012, Calendar.APRIL, 2);
final Date endDate1 = cal.getTime();
ApplicationPeriod applicationPeriod1 = applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate1, endDate1);
ApplicationPeriod applicationPeriod1 = applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "name1");
// edit the period
applicationPeriod1.getProjectClass().add(master);
cal.set(2012, Calendar.MAY, 2);
@ -345,10 +345,10 @@ should NOT overlap. */
final Date endDate = cal.getTime();
cal.set(Calendar.HOUR_OF_DAY, 14);
final Date endDate2 = cal.getTime();
applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate, endDate);
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate, "name1");
Set<ProjectClass> myMasterSet = new HashSet<ProjectClass>();
myMasterSet.add(master);
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriod(myMasterSet, startDate, endDate2));
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myMasterSet, startDate, endDate2, "name1"));
Assert.assertFalse(periodOverlap); // should NOT overlap
}
@ -366,12 +366,12 @@ should NOT overlap. */
final Date startDate1 = cal.getTime();
cal.set(2012, Calendar.DECEMBER, 2);
final Date endDate1 = cal.getTime();
applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate1, endDate1);
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate1, endDate1, "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.createApplicationPeriod(myBachelorSet, startDate2, endDate2));
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate2, endDate2, "name1"));
Assert.assertTrue(periodOverlap); // should overlap
}
@ -389,13 +389,13 @@ should NOT overlap. */
final Date startDate = cal.getTime();
cal.set(2012, Calendar.APRIL, 2);
final Date endDate = cal.getTime();
applicationPeriodFacade.createApplicationPeriod(myBachelorSet, startDate, endDate);
applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate, "name1");
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.createApplicationPeriod(myBachelorSet, startDate, endDate2));
boolean periodOverlap = applicationPeriodFacade.doesPeriodOverlap(applicationPeriodFacade.createApplicationPeriodDates(myBachelorSet, startDate, endDate2, "name1"));
Assert.assertTrue(periodOverlap); // should overlap
}

@ -115,7 +115,7 @@ public class TestMatchDao {
projectIdea1.setProjectClass(projectClass);
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(projectClass);
final ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null);
final ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, "name1");
projectIdea1.setApplicationPeriod(applicationPeriod);
projectIdea1 = projectIdeaDao.save(projectIdea1);

@ -166,7 +166,7 @@ public class TestProjectIdeaDao {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(bachelor);
projectClassSet.add(master);
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null);
ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, "name1");
projectIdea1 = new ProjectIdea();
projectIdea1.setTitle("Project idea 1");

@ -214,7 +214,7 @@ public class TestSupervisorDao {
projectClassSet.add(bachelor);
projectClassSet.add(master);
final ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null);
final ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, "name1");
projectIdea1 = new ProjectIdea();
projectIdea1.setTitle("Project idea 1");

@ -101,7 +101,7 @@ public class TestProjectIdea {
Set<ProjectClass> projectClassSet = new HashSet<ProjectClass>();
projectClassSet.add(projectClass);
final ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, null, null);
final ApplicationPeriod applicationPeriod = applicationPeriodFacade.createApplicationPeriod(projectClassSet, "name1");
target.setProjectClass(projectClass);
target.setApplicationPeriod(applicationPeriod);
key1 = new Keyword("key 1", standard);