added date filtering for projects as well. Filtering on daisy start date for the active projects

This commit is contained in:
Emil Siverhall 2012-02-07 16:21:32 +01:00
parent e195700624
commit 50f470d25d
4 changed files with 73 additions and 63 deletions
src/main/java/se/su/dsv/scipro

@ -66,9 +66,10 @@ public class AdminMailPanel extends Panel {
private ProjectIdeaMailChoice ideaChoice;
private ProjectMailChoice projectChoice;
private RadioChoice<String> choice;
private WebMarkupContainer choiceContainer;
private WebMarkupContainer choiceContainer, labelContainer;
private String selectedRecipientSet;
private DatePickerPanel dpp;
private Label projectPickerLabel, ideaPickerLabel;
private static final long serialVersionUID = 1L;
@ -101,6 +102,14 @@ public class AdminMailPanel extends Panel {
}
private void setUpDatePanel() {
labelContainer = new WebMarkupContainer("labelContainer");
labelContainer.setOutputMarkupId(true);
projectPickerLabel = new Label("pickerLabel","Started between:");
ideaPickerLabel = new Label("ideaPickerLabel", "Submitted between:");
ideaPickerLabel.setVisible(false);
labelContainer.add(projectPickerLabel);
labelContainer.add(ideaPickerLabel);
add(labelContainer);
dpp = new DatePickerPanel("datePanel");
add(dpp);
}
@ -196,13 +205,18 @@ public class AdminMailPanel extends Panel {
selectedRecipientSet = projectChoice.getModelObject();
ideaChoice.setVisible(false);
projectChoice.setVisible(true);
ideaPickerLabel.setVisible(false);
projectPickerLabel.setVisible(true);
}
else {
selectedRecipientSet = ideaChoice.getModelObject();
projectChoice.setVisible(false);
ideaChoice.setVisible(true);
ideaPickerLabel.setVisible(true);
projectPickerLabel.setVisible(false);
}
target.addComponent(choiceContainer);
target.addComponent(labelContainer);
updateUserSet(target);
}
};
@ -235,7 +249,7 @@ public class AdminMailPanel extends Panel {
if(choiceInput.equals(ProjectMailChoice.THESIS_SUPPORT))
recipients = mailFacade.addThesisSupport();
else if(choiceInput.equals(ProjectMailChoice.AUTHORS_ACTIVE_PROJECT)){
recipients = mailFacade.addActiveAuthors(pc);
recipients = mailFacade.addActiveAuthors(pc, startDate, endDate);
}
else if(choiceInput.equals(ProjectIdeaMailChoice.AUTHORS_CONFIRMED)){
recipients = mailFacade.addAuthorsWithConfirmedIdeas(pc, startDate, endDate);
@ -247,7 +261,7 @@ public class AdminMailPanel extends Panel {
recipients = mailFacade.addAuthorsWithRefusedIdeas(pc, startDate, endDate);
}
else if(choiceInput.equals(ProjectMailChoice.SUPERVISOR_ALL_ACTIVE)){
recipients = mailFacade.addSupervisorsWithActiveProjects(pc);
recipients = mailFacade.addSupervisorsWithActiveProjects(pc, startDate, endDate);
}
else if(choiceInput.equals(ProjectIdeaMailChoice.SUPERVISOR_CONFIRMED)){
recipients = mailFacade.addSupervisorsWithConfirmedIdeas(pc, startDate, endDate);
@ -256,10 +270,10 @@ public class AdminMailPanel extends Panel {
recipients = mailFacade.addSupervisorsWithUnconfirmedIdeas(pc, startDate, endDate);
}
else if(choiceInput.equals(ProjectMailChoice.ACTIVE_REVIEWERS)){
recipients = mailFacade.addActiveReviewers();
recipients = mailFacade.addActiveReviewers(pc, startDate, endDate);
}
else if(choiceInput.equals(ProjectMailChoice.ACTIVE_CO_SUPERVISORS)){
recipients = mailFacade.addActiveCoSupervisors();
recipients = mailFacade.addActiveCoSupervisors(pc, startDate, endDate);
}
return recipients;
}

@ -65,24 +65,9 @@ public interface ProjectDao extends Dao<Project>{
private Date dateCreated;
private Date createdAfter;
private Date createdBefore;
private Date startedAfter;
public void setCreatedAfter(Date createdAfter) {
this.createdAfter = createdAfter;
}
public Date getCreatedAfter() {
return createdAfter;
}
public void setcreatedBefore(Date createdBefore) {
this.createdBefore = createdBefore;
}
public Date getCreatedBefore() {
return createdBefore;
}
private Date startedBefore;
private Collection<ProjectClass> projectClasses;
@ -97,7 +82,23 @@ public interface ProjectDao extends Dao<Project>{
// TODO: private Collection<DSVUnit> units;
// TODO: private Collection<DSVField> fields;
public Date getStartedBefore() {
return startedBefore;
}
public void setStartedBefore(Date startedBefore) {
this.startedBefore = startedBefore;
}
public Date getStartedAfter() {
return startedAfter;
}
public void setStartedAfter(Date startedAfter) {
this.startedAfter = startedAfter;
}
public Date getDateCreated() {
return dateCreated;
}

@ -503,7 +503,7 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
@Transactional( readOnly=true )
public List<Project> findProjects(ProjectDao.Params params){
public List<Project> findProjects(ProjectDao.Params params){
return getJpaTemplate().execute(
createQuerySet(params).fetchCallback());
}
@ -521,9 +521,9 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
.filterString(params.getFilterString())
.projectClasses(params.getProjectClasses())
.projectStatuses(params.getProjectStatuses())
.createdAfter(params.getCreatedAfter())
.createdBefore(params.getCreatedBefore())
.authors(params.getAuthors())
.createdAfter(params.getStartedAfter())
.createdBefore(params.getStartedBefore())
// .creator(params.getCreator())
.sortField(params.getSortField(), params.getDirection())
.limit(params.getLimit())
@ -535,7 +535,25 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
super(Project.class);
}
public QuerySet filterString(String filterString) {
public QuerySet createdAfter(Date startDate) {
if (startDate != null) {
getQuery().combine(
new Query().where("_.daisyStartDate >= :startDate")
.parameter("startDate", startDate));
}
return this;
}
public QuerySet createdBefore(Date endDate) {
if (endDate != null) {
getQuery().combine(
new Query().where("_.daisyStartDate <= :endDate")
.parameter("endDate", endDate));
}
return this;
}
public QuerySet filterString(String filterString) {
if (filterString != null) {
getQuery().combine(
new Query()
@ -563,15 +581,6 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
return this;
}
public QuerySet createdBefore(Date createdBefore) {
if (createdBefore != null) {
getQuery().combine(
new Query().where("_.dateCreated <= :endDate")
.parameter("endDate", createdBefore));
}
return this;
}
public QuerySet authors(Collection<Student> authors) {
if (authors != null && !authors.isEmpty()) {
getQuery().combine(
@ -594,15 +603,7 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
// }
// return this;
// }
public QuerySet createdAfter(Date createdAfter) {
if (createdAfter != null) {
getQuery().combine(
new Query().where("_.dateCreated >= :startDate")
.parameter("startDate", createdAfter));
}
return this;
}
@Override
public Query initQuery() {

@ -40,18 +40,8 @@ public class MailFacade {
private ProjectIdeaDao.Params projectIdeaParams;
private Set<User> recipients;
public Set<User> addActiveAuthors(ProjectClass pc) {
setProjectParams(ProjectStatus.ACTIVE, pc);
return authorsFromProjects();
}
public Set<User> addActiveBachelorAuthors(ProjectClass pc) {
setProjectParams(ProjectStatus.ACTIVE, pc);
return authorsFromProjects();
}
public Set<User> addActiveMasterAuthors(ProjectClass pc) {
setProjectParams(ProjectStatus.ACTIVE, pc);
public Set<User> addActiveAuthors(ProjectClass pc, Date startDate, Date endDate) {
setProjectParams(ProjectStatus.ACTIVE, pc, startDate, endDate);
return authorsFromProjects();
}
@ -79,8 +69,8 @@ public class MailFacade {
return recipients;
}
public Set<User> addSupervisorsWithActiveProjects(ProjectClass pc) {
setProjectParams(ProjectStatus.ACTIVE, pc);
public Set<User> addSupervisorsWithActiveProjects(ProjectClass pc, Date startDate, Date endDate) {
setProjectParams(ProjectStatus.ACTIVE, pc, startDate, endDate);
return supervisorsFromProjects();
}
@ -94,13 +84,13 @@ public class MailFacade {
return supervisorsFromProjectIdeas();
}
public Set<User> addActiveCoSupervisors() {
setProjectParams(ProjectStatus.ACTIVE, null);
public Set<User> addActiveCoSupervisors(ProjectClass pc, Date startDate, Date endDate) {
setProjectParams(ProjectStatus.ACTIVE, pc, startDate, endDate);
return coSupervisorsFromProjects();
}
public Set<User> addActiveReviewers() {
setProjectParams(ProjectStatus.ACTIVE, null);
public Set<User> addActiveReviewers(ProjectClass pc, Date startDate, Date endDate) {
setProjectParams(ProjectStatus.ACTIVE, pc, startDate, endDate);
return reviewersFromProjects();
}
@ -116,12 +106,16 @@ public class MailFacade {
projectIdeaParams.setSubmittedBefore(endDate);
}
private void setProjectParams(ProjectStatus status, ProjectClass projectClass) {
private void setProjectParams(ProjectStatus status, ProjectClass projectClass, Date startDate, Date endDate) {
projectParams = new ProjectDao.Params();
if (status != null)
projectParams.setProjectStatuses(Arrays.asList(new ProjectStatus[]{status}));
if (projectClass != null)
projectParams.setProjectClasses(Arrays.asList(new ProjectClass[]{projectClass}));
if(startDate != null)
projectParams.setStartedAfter(startDate);
if(endDate != null)
projectParams.setStartedBefore(endDate);
}
private Set<User> authorsFromProjectIdeas() {