Merge branch 'project' into develop

This commit is contained in:
Fredrik Friis 2012-02-14 14:23:39 +09:00
commit 8602d9e69a
6 changed files with 176 additions and 29 deletions

@ -5,7 +5,6 @@ import java.util.Collection;
import java.util.Date;
import java.util.List;
import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Log;
import se.su.dsv.scipro.data.dataobjects.Project;
@ -98,7 +97,6 @@ public interface ProjectDao extends Dao<Project>{
// TODO: private Collection<DSVUnit> units;
// TODO: private Collection<DSVField> fields;
public Date getDateCreated() {
return dateCreated;

@ -1,6 +1,7 @@
package se.su.dsv.scipro.data.dao.jpa;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@ -516,9 +517,8 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
private AbstractQuerySet<Project> createQuerySet(ProjectDao.Params params) {
return new QuerySet()
// .categories(params.getCategories())
.filterString(params.getFilterString())
// .creator(params.getCreator())
.projectClasses(params.getProjectClasses())
.createdAfter(params.getCreatedAfter())
.createdBefore(params.getCreatedBefore())
.sortField(params.getSortField(), params.getDirection())
@ -541,6 +541,15 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
return this;
}
public QuerySet projectClasses(Collection<ProjectClass> projectClasses) {
if (projectClasses != null && !projectClasses.isEmpty()) {
getQuery().combine(
new Query().where("_.projectClass IN (:projectClasses)")
.parameter("projectClasses", projectClasses));
}
return this;
}
public QuerySet createdBefore(Date createdBefore) {
if (createdBefore != null) {
getQuery().combine(
@ -558,28 +567,6 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
}
return this;
}
// public QuerySet creator(User user) {
// if (user != null) {
// getQuery().combine(
// new Query()
// .where("_.creator = :user")
// .parameter("user", user));
// }
// return this;
// }
// public QuerySet categories(Collection<ChecklistCategory> categories) {
// if (categories != null && !categories.isEmpty()) {
// getQuery().combine(
// new Query()
// .join("_.categories c")
// .where("c IN (:categories)")
// .parameter("categories", categories)
// .distinct());
// }
// return this;
// }
@Override
public Query initQuery() {

@ -11,9 +11,11 @@
<div wicket:id="filterStringPanel"></div>
<label>Created between: </label>
<div wicket:id="filterDatesPanel"></div>
<label>Level: </label>
<div wicket:id="filterProjectClassPanel"></div>
</div>
<div><button wicket:id="newLink">Create new project</button></div>
<div class="right"><button wicket:id="newLink">Create new project</button></div>
<div wicket:id="dialog">
<div wicket:id="panel"></div>
</div>
@ -22,14 +24,14 @@
<table class="rounded-corner" >
<thead>
<tr>
<th><a href="#" wicket:id="titleSort">Title</a></th>
<th class="rounded-left-top"><a href="#" wicket:id="titleSort">Title</a></th>
<!-- <th>Title</th> -->
<th>Level</th>
<th>Author(s)</th>
<th>Supervisor</th>
<th>Reviewer</th>
<th>Status</th>
<th>Edit</th>
<th class="rounded-right-top">Edit</th>
</tr>
</thead>
<tfoot>

@ -24,6 +24,7 @@ import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.dataproviders.NewProjectDataProvider;
import se.su.dsv.scipro.reusable.DatesPanel;
import se.su.dsv.scipro.reusable.FilterProjectClassPanel;
import se.su.dsv.scipro.reusable.FilterStringPanel;
public class ProjectManagementPanel extends Panel {
@ -169,6 +170,17 @@ public class ProjectManagementPanel extends Panel {
}
});
settingsContainer.add(new FilterProjectClassPanel("filterProjectClassPanel"){
private static final long serialVersionUID = 1L;
@Override
public void onUpdateFilter(AjaxRequestTarget target) {
params.setProjectClasses(getSelectedProjectClasses());
ajaxRefresh(target);
}
});
}
private void sortSetup(){

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<wicket:panel>
<form wicket:id="form">
<div wicket:id="list">
<div>
<span wicket:id="name"></span> <input wicket:id="check"
type="checkbox" />
</div>
</div>
</form>
</wicket:panel>
</body>
</html>

@ -0,0 +1,131 @@
package se.su.dsv.scipro.reusable;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.markup.html.basic.Label;
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.Panel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
public abstract class FilterProjectClassPanel extends Panel{
private static final long serialVersionUID = 1L;
private ProjectClassForm projectClassForm;
public FilterProjectClassPanel(String id) {
super(id);
projectClassForm = new ProjectClassForm("form");
add(projectClassForm);
}
public Collection<ProjectClass> getSelectedProjectClasses(){
return projectClassForm.getSelectedProjectClasses();
}
/**
* Override this method to do something.
*/
public abstract void onUpdateFilter(AjaxRequestTarget target);
private class ProjectClassForm extends Form {
private static final long serialVersionUID = 1L;
@SpringBean
private ProjectClassDao projectClassDao;
private Collection<ProjectClass> selectedProjectClasses;
public Collection<ProjectClass> getSelectedProjectClasses(){
return selectedProjectClasses;
}
public ProjectClassForm(String id) {
super(id);
ArrayList<Wrapper> wrapperCollection = new ArrayList<Wrapper>();
for (ProjectClass pc : projectClassDao.findAll()){
wrapperCollection.add(new Wrapper(pc));
}
selectedProjectClasses = new HashSet<ProjectClass>();
ListView<Wrapper> listView = new ListView<Wrapper>("list", wrapperCollection){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Wrapper> item) {
final Wrapper wrapper = (Wrapper) item.getModelObject();
item.add(new Label("name", wrapper.getProjectClass().getName()));
item.add(new AjaxCheckBox("check", new PropertyModel<Boolean>(wrapper, "selected")){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
if (getModelObject() == true){
System.out.println("adding" + wrapper.getProjectClass().getName());
selectedProjectClasses.add(wrapper.getProjectClass());
onUpdateFilter(target);
Iterator<ProjectClass> it = selectedProjectClasses.iterator();
while (it.hasNext()) {
System.out.println(it.next().getName());
}
}
else if (getModelObject() == false){
System.out.println("removing" + wrapper.getProjectClass().getName());
selectedProjectClasses.remove(wrapper.getProjectClass());
onUpdateFilter(target);
Iterator<ProjectClass> it = selectedProjectClasses.iterator();
while (it.hasNext()) {
System.out.println(it.next().getName());
}
}
}
});
}
};
listView.setReuseItems(true);
add(listView);
}
}
private class Wrapper implements Serializable {
private final ProjectClass projectClass;
private Boolean selected = Boolean.FALSE;
public Wrapper(ProjectClass projectClass){
this.projectClass = projectClass;
}
public boolean getSelected(){
return selected;
}
public void setSelected(boolean selected){
this.selected = selected;
}
public ProjectClass getProjectClass(){
return projectClass;
}
// public void setProjectClass(ProjectClass projectClass){
// this.projectClass = projectClass;
// }
}
}