Merge branch 'm3_application_periods' into develop
This commit is contained in:
commit
e86bf38044
src
main/java/se/su/dsv/scipro
match/panel
project
springdata
repos
serviceimpls
services
supervisor/panels
test/java/se/su/dsv/scipro/springdata
@ -29,10 +29,14 @@ public abstract class FilterFormProjectClass extends Panel {
|
|||||||
|
|
||||||
private final CheckGroup<ProjectClass> checkGroup;
|
private final CheckGroup<ProjectClass> checkGroup;
|
||||||
|
|
||||||
public FilterFormProjectClass(String id) {
|
public FilterFormProjectClass(String id, List<ProjectClass> classes) {
|
||||||
super(id);
|
super(id);
|
||||||
|
|
||||||
projectClassList = projectClassService.findAllActive();
|
if(classes==null)
|
||||||
|
projectClassList = projectClassService.findAllActive();
|
||||||
|
else
|
||||||
|
projectClassList = classes;
|
||||||
|
|
||||||
CompoundPropertyModel<List<ProjectClass>> levelModel = new CompoundPropertyModel<List<ProjectClass>>(projectClassList);
|
CompoundPropertyModel<List<ProjectClass>> levelModel = new CompoundPropertyModel<List<ProjectClass>>(projectClassList);
|
||||||
|
|
||||||
checkGroup = new CheckGroup<ProjectClass>("checkGroup",new ArrayList<ProjectClass>(projectClassList));
|
checkGroup = new CheckGroup<ProjectClass>("checkGroup",new ArrayList<ProjectClass>(projectClassList));
|
||||||
|
@ -4,10 +4,6 @@
|
|||||||
<wicket:extend>
|
<wicket:extend>
|
||||||
<div class="prepend-top span-24 last">
|
<div class="prepend-top span-24 last">
|
||||||
<div wicket:id="feedback"></div>
|
<div wicket:id="feedback"></div>
|
||||||
<div class="info-box rounded-box last">
|
|
||||||
Application period is open from 2012-01-01 to 2013-01-01 and the
|
|
||||||
course start for the application period is 2014-05-01. (dummy data)
|
|
||||||
</div>
|
|
||||||
<div wicket:id="ideaOverview"></div>
|
<div wicket:id="ideaOverview"></div>
|
||||||
</div>
|
</div>
|
||||||
</wicket:extend>
|
</wicket:extend>
|
||||||
|
@ -9,10 +9,21 @@
|
|||||||
<div wicket:id="dialog">
|
<div wicket:id="dialog">
|
||||||
<div wicket:id="dialogPanel"></div>
|
<div wicket:id="dialogPanel"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="info-box rounded-box last">
|
||||||
|
<b>Project idea submission is now open for the following project levels:</b><br /><br />
|
||||||
|
<div wicket:id="noLabel"></div>
|
||||||
|
<div wicket:id="periodList">
|
||||||
|
<div>
|
||||||
|
<span wicket:id="levelName"></span><span wicket:id="dates"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div wicket:id="tableMarkup">
|
||||||
<form wicket:id="form">
|
<form wicket:id="form">
|
||||||
<div class="span-5" wicket:id="levelFilter"></div>
|
<div class="span-5" wicket:id="levelFilter"></div>
|
||||||
</form>
|
</form>
|
||||||
<div class="span-24 prepend-top" wicket:id="dataPanel"></div>
|
<div class="span-24 prepend-top" wicket:id="dataPanel"></div>
|
||||||
|
</div>
|
||||||
</wicket:panel>
|
</wicket:panel>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,32 +1,40 @@
|
|||||||
package se.su.dsv.scipro.project.panels;
|
package se.su.dsv.scipro.project.panels;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
|
|
||||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
|
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
|
||||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
|
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
|
||||||
|
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||||
|
import org.apache.wicket.markup.html.basic.Label;
|
||||||
import org.apache.wicket.markup.html.form.Form;
|
import org.apache.wicket.markup.html.form.Form;
|
||||||
|
import org.apache.wicket.markup.html.list.ListItem;
|
||||||
|
import org.apache.wicket.markup.html.list.ListView;
|
||||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||||
import org.apache.wicket.markup.html.panel.Panel;
|
import org.apache.wicket.markup.html.panel.Panel;
|
||||||
import org.apache.wicket.model.IModel;
|
import org.apache.wicket.model.IModel;
|
||||||
import org.apache.wicket.model.Model;
|
import org.apache.wicket.model.Model;
|
||||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||||
import org.apache.wicket.util.time.Duration;
|
|
||||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
|
||||||
import se.su.dsv.scipro.data.dataobjects.Student;
|
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||||
import se.su.dsv.scipro.data.dataobjects.User;
|
import se.su.dsv.scipro.data.dataobjects.User;
|
||||||
import se.su.dsv.scipro.datatables.ClickableTitleColumn;
|
import se.su.dsv.scipro.datatables.ClickableTitleColumn;
|
||||||
import se.su.dsv.scipro.datatables.GenericDataPanel;
|
import se.su.dsv.scipro.datatables.GenericDataPanel;
|
||||||
|
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||||
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
||||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||||
import se.su.dsv.scipro.match.panel.FilterFormProjectClass;
|
import se.su.dsv.scipro.match.panel.FilterFormProjectClass;
|
||||||
|
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
|
||||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||||
import se.su.dsv.scipro.springdata.services.StudentService;
|
|
||||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||||
|
import se.su.dsv.scipro.util.DateFormatter;
|
||||||
|
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
|
|
||||||
public class ProjectIdeaOverviewPanel extends Panel {
|
public class ProjectIdeaOverviewPanel extends Panel {
|
||||||
|
|
||||||
@ -35,16 +43,24 @@ public class ProjectIdeaOverviewPanel extends Panel {
|
|||||||
@SpringBean
|
@SpringBean
|
||||||
private SupervisorIdeaService ideaService;
|
private SupervisorIdeaService ideaService;
|
||||||
@SpringBean
|
@SpringBean
|
||||||
private StudentService studentService;
|
private ApplicationPeriodService periodService;
|
||||||
|
|
||||||
private SupervisorIdeaService.FilterParams params;
|
private SupervisorIdeaService.FilterParams params;
|
||||||
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
||||||
private Dialog dialog;
|
private Dialog dialog;
|
||||||
|
private List<ProjectClass> currentLevels;
|
||||||
|
|
||||||
public ProjectIdeaOverviewPanel(String id, User currentUser) {
|
public ProjectIdeaOverviewPanel(String id, User currentUser) {
|
||||||
super(id);
|
super(id);
|
||||||
|
WebMarkupContainer wmc = new WebMarkupContainer("tableMarkup");
|
||||||
|
|
||||||
addDialog();
|
addDialog();
|
||||||
addDataTable(currentUser);
|
addPeriodInfo();
|
||||||
add(new FilterForm("form"));
|
addDataTable(currentUser, wmc);
|
||||||
|
wmc.add(new FilterForm("form"));
|
||||||
|
|
||||||
|
wmc.setVisible(!currentLevels.isEmpty());
|
||||||
|
add(wmc);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addDialog() {
|
private void addDialog() {
|
||||||
@ -57,8 +73,39 @@ public class ProjectIdeaOverviewPanel extends Panel {
|
|||||||
add(dialog);
|
add(dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addDataTable(final User currentUser) {
|
private void addPeriodInfo() {
|
||||||
add(genericDataPanel = new GenericDataPanel<SupervisorIdea>("dataPanel") {
|
List<ApplicationPeriod> currentPeriods = periodService.getCurrentPeriods(new Date());
|
||||||
|
ListView<ApplicationPeriod> periodListView = new ListView<ApplicationPeriod>("periodList", currentPeriods){
|
||||||
|
private static final long serialVersionUID = -5508891454629790181L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void populateItem(ListItem<ApplicationPeriod> item) {
|
||||||
|
ApplicationPeriod ap = (ApplicationPeriod)item.getModelObject();
|
||||||
|
List<String> levelStrings = new ArrayList<String>();
|
||||||
|
for(ProjectClass pc : ap.getProjectClass()) {
|
||||||
|
levelStrings.add(pc.getName());
|
||||||
|
}
|
||||||
|
item.add(new Label("levelName", Joiner.on(", ").join(levelStrings)));
|
||||||
|
item.add(new Label("dates", " period is open from " +
|
||||||
|
new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(ap.getStartDate()) + " to " +
|
||||||
|
new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(ap.getEndDate()) + " and the course start date is " +
|
||||||
|
new DateFormatter(DateFormatter.FORMAT.DEFAULT).createFormattedString(ap.getCourseStartDate())).setVisible(!levelStrings.isEmpty()));
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
add(periodListView);
|
||||||
|
currentLevels = new ArrayList<ProjectClass>();
|
||||||
|
for(ApplicationPeriod ap : currentPeriods)
|
||||||
|
for(ProjectClass pc : ap.getProjectClass())
|
||||||
|
currentLevels.add(pc);
|
||||||
|
|
||||||
|
Label noActivePeriodLabel = new Label("noLabel", "There are no active application period available right now.");
|
||||||
|
noActivePeriodLabel.setVisible(currentLevels.isEmpty());
|
||||||
|
add(noActivePeriodLabel);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addDataTable(final User currentUser, WebMarkupContainer wmc) {
|
||||||
|
wmc.add(genericDataPanel = new GenericDataPanel<SupervisorIdea>("dataPanel") {
|
||||||
|
|
||||||
private static final long serialVersionUID = -4539188306454725307L;
|
private static final long serialVersionUID = -4539188306454725307L;
|
||||||
|
|
||||||
@ -109,7 +156,7 @@ public class ProjectIdeaOverviewPanel extends Panel {
|
|||||||
params = new SupervisorIdeaService.FilterParams();
|
params = new SupervisorIdeaService.FilterParams();
|
||||||
|
|
||||||
//FILTERING ON PROJECT CLASS:
|
//FILTERING ON PROJECT CLASS:
|
||||||
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter") {
|
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter", currentLevels) {
|
||||||
private static final long serialVersionUID = -7758850229259608443L;
|
private static final long serialVersionUID = -7758850229259608443L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package se.su.dsv.scipro.springdata.repos;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.querydsl.QueryDslPredicateExecutor;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||||
|
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public interface ApplicationPeriodRepo extends JpaRepository<ApplicationPeriod, Long>, QueryDslPredicateExecutor<ApplicationPeriod> {
|
||||||
|
|
||||||
|
}
|
69
src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ApplicationPeriodServiceImpl.java
Normal file
69
src/main/java/se/su/dsv/scipro/springdata/serviceimpls/ApplicationPeriodServiceImpl.java
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
package se.su.dsv.scipro.springdata.serviceimpls;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||||
|
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||||
|
import se.su.dsv.scipro.match.dataobject.QApplicationPeriod;
|
||||||
|
import se.su.dsv.scipro.springdata.repos.ApplicationPeriodRepo;
|
||||||
|
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
|
||||||
|
|
||||||
|
import com.mysema.query.types.expr.BooleanExpression;
|
||||||
|
|
||||||
|
@Service ( "applicationPeriodService" )
|
||||||
|
@Transactional ( readOnly = true )
|
||||||
|
public class ApplicationPeriodServiceImpl extends AbstractQueryService<ApplicationPeriod, Long> implements ApplicationPeriodService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ApplicationPeriodRepo applicationPeriodRepo;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public ApplicationPeriodServiceImpl(
|
||||||
|
@Qualifier("applicationPeriodRepo")
|
||||||
|
ApplicationPeriodRepo applicationPeriodRepo) {
|
||||||
|
super(applicationPeriodRepo, applicationPeriodRepo);
|
||||||
|
System.out.println("ApplicationPeriodServiceImpl instantiating...");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ApplicationPeriod> getCurrentPeriods(Date currentDate) {
|
||||||
|
Iterable<ApplicationPeriod> periods = applicationPeriodRepo.findAll(startedBefore(currentDate).and(endedAfter(currentDate)));
|
||||||
|
return constructList(periods);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApplicationPeriod getCurrentPeriod(Date currentDate, ProjectClass pc) {
|
||||||
|
ApplicationPeriod ap = applicationPeriodRepo.findOne(startedBefore(currentDate).and(endedAfter(currentDate)).and(haveProjectClass(pc)));
|
||||||
|
return ap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private BooleanExpression haveProjectClass(ProjectClass pc) {
|
||||||
|
return QApplicationPeriod.applicationPeriod.projectClass.contains(pc);
|
||||||
|
}
|
||||||
|
|
||||||
|
private BooleanExpression startedBefore(Date currentDate){
|
||||||
|
return QApplicationPeriod.applicationPeriod.startDate.before(currentDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private BooleanExpression endedAfter(Date currentDate){
|
||||||
|
return QApplicationPeriod.applicationPeriod.endDate.after(currentDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ApplicationPeriod> constructList(Iterable<ApplicationPeriod> periods) {
|
||||||
|
List<ApplicationPeriod> list = new ArrayList<ApplicationPeriod>();
|
||||||
|
for(ApplicationPeriod ap : periods) {
|
||||||
|
list.add(ap);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package se.su.dsv.scipro.springdata.serviceimpls;
|
package se.su.dsv.scipro.springdata.serviceimpls;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
|
|
||||||
@ -24,6 +25,7 @@ import se.su.dsv.scipro.match.dataobject.QSupervisorIdea;
|
|||||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||||
import se.su.dsv.scipro.match.dataobject.Watson;
|
import se.su.dsv.scipro.match.dataobject.Watson;
|
||||||
import se.su.dsv.scipro.springdata.repos.SupervisorIdeaRepo;
|
import se.su.dsv.scipro.springdata.repos.SupervisorIdeaRepo;
|
||||||
|
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
|
||||||
import se.su.dsv.scipro.springdata.services.StudentService;
|
import se.su.dsv.scipro.springdata.services.StudentService;
|
||||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||||
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
||||||
@ -42,6 +44,8 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
|||||||
private StudentService studentService;
|
private StudentService studentService;
|
||||||
@Resource
|
@Resource
|
||||||
private SupervisorService supervisorService;
|
private SupervisorService supervisorService;
|
||||||
|
@Resource
|
||||||
|
private ApplicationPeriodService applicationPeriodService;
|
||||||
|
|
||||||
private int MAX_PARTNERS = 1;
|
private int MAX_PARTNERS = 1;
|
||||||
|
|
||||||
@ -117,6 +121,7 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
|||||||
s.addIdeaParticipation(ip);
|
s.addIdeaParticipation(ip);
|
||||||
}
|
}
|
||||||
idea.setIdeaStatus(IdeaStatus.TAKEN);
|
idea.setIdeaStatus(IdeaStatus.TAKEN);
|
||||||
|
idea.setApplicationPeriod(applicationPeriodService.getCurrentPeriod(new Date(), idea.getProjectClass()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,6 +134,9 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
|||||||
for (IdeaParticipation ip : idea.getIdeaParticipations())
|
for (IdeaParticipation ip : idea.getIdeaParticipations())
|
||||||
if(ip.getStudent().equals(author))
|
if(ip.getStudent().equals(author))
|
||||||
ip.setConfirmed(true);
|
ip.setConfirmed(true);
|
||||||
|
if(idea.getApplicationPeriod()==null) {
|
||||||
|
idea.setApplicationPeriod(applicationPeriodService.getCurrentPeriod(new Date(), idea.getProjectClass()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -142,6 +150,8 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
|||||||
}
|
}
|
||||||
//Erase watson boxes
|
//Erase watson boxes
|
||||||
idea.setWatson(new Watson());
|
idea.setWatson(new Watson());
|
||||||
|
//Remove application period association
|
||||||
|
idea.setApplicationPeriod(null);
|
||||||
//Change status back to waiting
|
//Change status back to waiting
|
||||||
idea.setIdeaStatus(IdeaStatus.WAITING);
|
idea.setIdeaStatus(IdeaStatus.WAITING);
|
||||||
|
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package se.su.dsv.scipro.springdata.services;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||||
|
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||||
|
|
||||||
|
public interface ApplicationPeriodService extends GenericService<ApplicationPeriod, Long>, QueryService<ApplicationPeriod, Long> {
|
||||||
|
|
||||||
|
List<ApplicationPeriod> getCurrentPeriods(final Date currentDate);
|
||||||
|
ApplicationPeriod getCurrentPeriod(final Date currentDate, final ProjectClass pc);
|
||||||
|
}
|
@ -142,7 +142,7 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
|||||||
params = new SupervisorIdeaService.FilterParams();
|
params = new SupervisorIdeaService.FilterParams();
|
||||||
|
|
||||||
//FILTERING ON PROJECT CLASS:
|
//FILTERING ON PROJECT CLASS:
|
||||||
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter") {
|
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter", null) {
|
||||||
private static final long serialVersionUID = -7758850229259608443L;
|
private static final long serialVersionUID = -7758850229259608443L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -0,0 +1,88 @@
|
|||||||
|
package se.su.dsv.scipro.springdata;
|
||||||
|
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.annotation.Rollback;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||||
|
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||||
|
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
|
||||||
|
import se.su.dsv.scipro.springdata.services.ProjectClassService;
|
||||||
|
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration(inheritLocations = false, locations = {
|
||||||
|
"classpath:test-applicationContext.xml"
|
||||||
|
})
|
||||||
|
public class TestApplicationPeriod {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ApplicationPeriodService periodService;
|
||||||
|
@Autowired
|
||||||
|
private ProjectClassService projectClassService;
|
||||||
|
|
||||||
|
private SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
|
||||||
|
private ApplicationPeriod currentBachelor, currentMaster, futureBachelor, pastMaster;
|
||||||
|
private ProjectClass bachelor, master;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void startTransaction() throws Exception {
|
||||||
|
bachelor = new ProjectClass(ProjectClass.BACHELOR, "Bachelor", "Bachelor degree thesis project");
|
||||||
|
bachelor = projectClassService.save(bachelor);
|
||||||
|
master = new ProjectClass(ProjectClass.MASTER, "Master", "Master degree thesis project");
|
||||||
|
master = projectClassService.save(master);
|
||||||
|
|
||||||
|
Set<ProjectClass> bachelorSet = new HashSet<ProjectClass>();
|
||||||
|
bachelorSet.add(bachelor);
|
||||||
|
Set<ProjectClass> masterSet = new HashSet<ProjectClass>();
|
||||||
|
masterSet.add(master);
|
||||||
|
|
||||||
|
currentBachelor = createPeriod(bachelorSet, date("2012-07-15"), date("2012-08-15"), date("2012-09-01"), "Current bachelor period");
|
||||||
|
currentMaster = createPeriod(masterSet, date("2012-07-10"), date("2012-08-10"), date("2012-08-25"), "Current master period");
|
||||||
|
futureBachelor = createPeriod(bachelorSet, date("2012-08-16"), date("2012-09-16"), date("2012-09-25"), "Future bachelor period");
|
||||||
|
pastMaster = createPeriod(masterSet, date("2012-05-25"), date("2012-07-01"), date("2012-07-15"), "Past master period");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Transactional
|
||||||
|
@Rollback
|
||||||
|
public void testGetCurrentPeriods() {
|
||||||
|
Date currentDate = date("2012-07-30");
|
||||||
|
List<ApplicationPeriod> currentPeriods = periodService.getCurrentPeriods(currentDate);
|
||||||
|
Assert.assertEquals(Arrays.asList(new ApplicationPeriod[]{currentBachelor, currentMaster}), currentPeriods);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private Date date(String dateString) {
|
||||||
|
try {
|
||||||
|
return date.parse(dateString);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApplicationPeriod createPeriod(final Set<ProjectClass> projectClassSet, final Date startDate, final Date endDate, final Date courseStartDate, final String name) {
|
||||||
|
ApplicationPeriod appPeriod = new ApplicationPeriod();
|
||||||
|
appPeriod.setStartDate(startDate);
|
||||||
|
appPeriod.setEndDate(endDate);
|
||||||
|
appPeriod.setCourseStartDate(courseStartDate);
|
||||||
|
appPeriod.setProjectClass(projectClassSet);
|
||||||
|
appPeriod.setName(name);
|
||||||
|
return periodService.save(appPeriod);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user