added listCheckListPanel

This commit is contained in:
Fredrik Norberg 2011-08-02 14:12:26 +02:00
parent 6e36c1b685
commit a2b09124f7
14 changed files with 229 additions and 17 deletions

@ -6,7 +6,21 @@
</head> </head>
<body> <body>
<wicket:extend> <wicket:extend>
<div wicket:id="cCLPanel"></div>
<div class="span-22 last">
<!-- Left column -->
<div class="span-10 colborder">
<div class="span-10 last">
<div wicket:id="cCLPanel"></div>
</div>
</div>
<!-- Right column -->
<div class="span-10 last">
<div class="span-10 last">
<div wicket:id="listCLPanel"></div>
</div>
</div>
</div>
</wicket:extend> </wicket:extend>
</body> </body>

@ -9,6 +9,7 @@ import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.checklists.panels.CreateCheckListTemplatePanel; import se.su.dsv.scipro.checklists.panels.CreateCheckListTemplatePanel;
import se.su.dsv.scipro.checklists.panels.ListCheckListTemplatePanel;
import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao; import se.su.dsv.scipro.data.dao.interfaces.GeneralSystemSettingsDao;
import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings; import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
import se.su.dsv.scipro.project.panels.ProjectPartnerPanel; import se.su.dsv.scipro.project.panels.ProjectPartnerPanel;
@ -29,6 +30,7 @@ public class AdminCheckListPage extends AbstractAdminPage {
public AdminCheckListPage(PageParameters pp) { public AdminCheckListPage(PageParameters pp) {
super(pp); super(pp);
add(new CreateCheckListTemplatePanel("cCLPanel")); add(new CreateCheckListTemplatePanel("cCLPanel"));
add(new ListCheckListTemplatePanel("listCLPanel"));
} }
} }

@ -133,7 +133,6 @@ public class CreateCheckListTemplatePanel extends Panel {
question = ""; question = "";
target.addComponent(questionField); target.addComponent(questionField);
target.addComponent(container); target.addComponent(container);
System.out.println("mooooo");
} }
}; };
@ -145,7 +144,6 @@ public class CreateCheckListTemplatePanel extends Panel {
form.add(addQuestionForm); form.add(addQuestionForm);
form.add(save); form.add(save);
add(form); add(form);
//add(addQuestionLink);
}; };

@ -0,0 +1,66 @@
package se.su.dsv.scipro.checklists.panels;
import java.util.List;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
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.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import se.su.dsv.scipro.data.dao.interfaces.CheckListDao;
import se.su.dsv.scipro.data.dataobjects.CheckList;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.enums.CheckListRole;
/**
* @author Fredrik Norberg fnorbe@dsv.su.se
*
*/
public class ListCheckListPanel extends Panel {
private List<CheckList> checkLists;
private CheckListRole role;
private CheckListDao checkListDao;
private Project project;
private static final long serialVersionUID = 1L;
public ListCheckListPanel(String id, CheckListRole role, final Project project) {
super(id);
this.role = role;
checkLists = checkListDao.findCheckLists(project, role);
IModel<List<CheckList>> checkListModel = new LoadableDetachableModel<List<CheckList>>() {
private static final long serialVersionUID = 1L;
@Override
protected List<CheckList> load() {
return project.getCheckLists();
}
};
final WebMarkupContainer container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
ListView<CheckList> checkLists = new ListView<CheckList>("checkLists", checkListModel) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<CheckList> item) {
Label listName = new Label("listName", item.getModel().getObject().getName());
item.add(listName);
}
};
container.add(checkLists);
}
}

@ -0,0 +1,67 @@
package se.su.dsv.scipro.checklists.panels;
import java.util.List;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
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.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.CheckListTemplateDao;
import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
/**
* @author Fredrik Norberg - fnorbe@dsv.su.se
*
*/
public class ListCheckListTemplatePanel extends Panel{
@SpringBean
private CheckListTemplateDao checkListTemplateDao;
private static final long serialVersionUID = 1L;
public ListCheckListTemplatePanel(String id) {
super(id);
IModel<List<CheckListTemplate>> checkListTemplateModel = new LoadableDetachableModel<List<CheckListTemplate>>() {
private static final long serialVersionUID = 1L;
@Override
protected List<CheckListTemplate> load() {
return checkListTemplateDao.findAll();
}
};
final WebMarkupContainer container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
ListView<CheckListTemplate> checkListTemplates = new ListView<CheckListTemplate>("checkListTemplates", checkListTemplateModel) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<CheckListTemplate> item) {
Label templateName = new Label("templateName", new PropertyModel<String>(item.getModel(),"name"));
Label templateOwner = new Label("templateOwner", new PropertyModel<String>(item.getModel(), "owner"));
item.add(templateName);
item.add(templateOwner);
}
};
container.add(checkListTemplates);
}
}

@ -40,7 +40,7 @@ public class ViewCheckListPanel extends Panel {
public ViewCheckListPanel(String id){ public ViewCheckListPanel(String id){
super(id); super(id);
List<CheckList> checkLists = checkListDao.findCheckLists(SciProSession.get() /* List<CheckList> checkLists = checkListDao.findCheckLists(SciProSession.get()
.getActiveProject());{ .getActiveProject());{
if (checkLists.size() < 1) { if (checkLists.size() < 1) {
CheckList checkList = new CheckList("Test", SciProSession.get().getActiveProject()); CheckList checkList = new CheckList("Test", SciProSession.get().getActiveProject());
@ -48,13 +48,12 @@ public class ViewCheckListPanel extends Panel {
checkListQuestion = checkListQuestionDao.save(checkListQuestion); checkListQuestion = checkListQuestionDao.save(checkListQuestion);
checkList.getQuestions().add(checkListQuestion); checkList.getQuestions().add(checkListQuestion);
checkList = checkListDao.save(checkList); checkList = checkListDao.save(checkList);
} }
ListView<CheckList> checkListsListView = new ListView<CheckList>("checkLists", checkLists) { ListView<CheckList> checkListsListView = new ListView<CheckList>("checkLists", checkLists) {
/**
*
*/
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Override @Override
@ -104,7 +103,7 @@ public class ViewCheckListPanel extends Panel {
}; };
add(checkListsListView); add(checkListsListView);
}; };*/
} }
} }

@ -4,8 +4,11 @@ import java.util.List;
import se.su.dsv.scipro.data.dataobjects.CheckList; import se.su.dsv.scipro.data.dataobjects.CheckList;
import se.su.dsv.scipro.data.dataobjects.Project; import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.enums.CheckListRole;
public interface CheckListDao extends Dao<CheckList> { public interface CheckListDao extends Dao<CheckList> {
public List<CheckList> findCheckLists(final Project project); public List<CheckList> findCheckLists(final Project project, CheckListRole role);
//use this if a dataview is necesary
//public int countCheckLists (final CheckList cl, Project project);
} }

@ -1,6 +1,7 @@
package se.su.dsv.scipro.data.dao.jpa; package se.su.dsv.scipro.data.dao.jpa;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
@ -9,12 +10,16 @@ import javax.persistence.PersistenceException;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import org.hibernate.ejb.QueryHints; import org.hibernate.ejb.QueryHints;
import org.joda.time.DateTime;
import org.springframework.orm.jpa.JpaCallback; import org.springframework.orm.jpa.JpaCallback;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import se.su.dsv.scipro.data.dao.interfaces.CheckListDao; import se.su.dsv.scipro.data.dao.interfaces.CheckListDao;
import se.su.dsv.scipro.data.dataobjects.CheckList; import se.su.dsv.scipro.data.dataobjects.CheckList;
import se.su.dsv.scipro.data.dataobjects.Project; import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
import se.su.dsv.scipro.data.enums.CheckListRole;
/** /**
* *
@ -29,7 +34,7 @@ public class CheckListDaoJPAImp extends AbstractDaoJPAImp<CheckList> implements
super(CheckList.class); super(CheckList.class);
} }
public List<CheckList> findCheckLists(final Project project) { public List<CheckList> findCheckLists(final Project project, CheckListRole role) {
return getJpaTemplate().execute(new JpaCallback<List<CheckList>>() { return getJpaTemplate().execute(new JpaCallback<List<CheckList>>() {
public List<CheckList> doInJpa(EntityManager em) throws PersistenceException { public List<CheckList> doInJpa(EntityManager em) throws PersistenceException {
String q = "select s " + "from CheckList s " + "where s.project = :project"; String q = "select s " + "from CheckList s " + "where s.project = :project";
@ -47,4 +52,23 @@ public class CheckListDaoJPAImp extends AbstractDaoJPAImp<CheckList> implements
}); });
} }
//use this if a dataview is necesary
/*@Override
@Transactional(readOnly = true)
public int countCheckLists(final CheckList cl,final Project project) {
return getJpaTemplate().execute(new JpaCallback<Integer>() {
@Override
public Integer doInJpa(EntityManager em)
throws PersistenceException {
String q = "SELECT COUNT(cl) from CheckList cl WHERE cl.project = :p" ;
TypedQuery<Long> query = em.createQuery(q,
Long.class);
query.setHint(QueryHints.HINT_CACHEABLE, "true");
query.setParameter("p", project);
return (query.getSingleResult()).intValue();
}
});
}*/
} }

@ -1,6 +1,8 @@
package se.su.dsv.scipro.data.dataobjects; package se.su.dsv.scipro.data.dataobjects;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
@ -41,6 +43,7 @@ public class Project extends DomainObject implements Comparable<Project>, Iconiz
private static final long serialVersionUID = 9071570648984376188L; private static final long serialVersionUID = 9071570648984376188L;
public static final String PP_PROJECT_ID = "pid"; public static final String PP_PROJECT_ID = "pid";
@Id @Id
@GeneratedValue @GeneratedValue
@ -82,6 +85,10 @@ public class Project extends DomainObject implements Comparable<Project>, Iconiz
private String statusMessage = ""; private String statusMessage = "";
private Date daisyStartDate; private Date daisyStartDate;
@OneToMany(targetEntity=CheckList.class, cascade=CascadeType.ALL, orphanRemoval=true)
@Sort(type=SortType.NATURAL) //Required by hibernate
private List<CheckList> checkLists = new ArrayList<CheckList>();
public Project() {} public Project() {}
@ -208,6 +215,18 @@ public class Project extends DomainObject implements Comparable<Project>, Iconiz
public void setStatusMessage(String statusMessage) { public void setStatusMessage(String statusMessage) {
this.statusMessage = statusMessage; this.statusMessage = statusMessage;
} }
public List<CheckList> getCheckLists() {
return checkLists;
}
public void setCheckLists(List<CheckList> checkLists) {
this.checkLists = checkLists;
}
public void addCheckList(CheckList cl){
checkLists.add(cl);
}
@Override @Override
public int hashCode() { public int hashCode() {
@ -268,6 +287,5 @@ public class Project extends DomainObject implements Comparable<Project>, Iconiz
final public String getCommentKey() { final public String getCommentKey() {
return Project.class.getCanonicalName().toString(); return Project.class.getCanonicalName().toString();
} }
} }

@ -0,0 +1,7 @@
package se.su.dsv.scipro.data.enums;
public enum CheckListRole {
AUTHOR,
SUPERVISOR,
ADMIN
}

@ -2,6 +2,9 @@ package se.su.dsv.scipro.project.pages;
import org.apache.wicket.PageParameters; import org.apache.wicket.PageParameters;
import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.checklists.panels.ListCheckListPanel;
import se.su.dsv.scipro.data.enums.CheckListRole;
import se.su.dsv.scipro.security.auth.Authorization; import se.su.dsv.scipro.security.auth.Authorization;
import se.su.dsv.scipro.security.auth.roles.Roles; import se.su.dsv.scipro.security.auth.roles.Roles;
@ -10,11 +13,13 @@ import se.su.dsv.scipro.security.auth.roles.Roles;
* *
*/ */
@Authorization(authorizedRoles={Roles.SYSADMIN}) //TODO Hidden for initial deployment @Authorization(authorizedRoles={Roles.SYSADMIN})
public class ProjectChecklistPage extends ProjectPage { public class ProjectChecklistPage extends ProjectPage {
public ProjectChecklistPage(PageParameters pp) { public ProjectChecklistPage(PageParameters pp) {
super(pp); super(pp);
add(new ListCheckListPanel("listCheckListPanel", CheckListRole.AUTHOR,
SciProSession.get().getActiveProject()));
//add(new TrafficLightPanel("trafficLightPanel")); //add(new TrafficLightPanel("trafficLightPanel"));
//add(new CreateCheckListTemplatePanel("createCheckList")); //add(new CreateCheckListTemplatePanel("createCheckList"));
} }

@ -7,7 +7,6 @@
<div class="span-22 last"> <div class="span-22 last">
<div wicket:id=feedback></div> <div wicket:id=feedback></div>
<!-- Left column --> <!-- Left column -->
<div class="span-10 colborder"> <div class="span-10 colborder">
<div class="span-10 last"> <div class="span-10 last">
<h5 class="peer-title">Look for project partner</h5> <h5 class="peer-title">Look for project partner</h5>

@ -59,7 +59,6 @@ public class ProjectPartnerPage extends ProjectPage {
private DataView<ProjectPartner> dataView; private DataView<ProjectPartner> dataView;
private WebMarkupContainer wmc; private WebMarkupContainer wmc;
private IModel<List<ProjectPartner>> listModel;
private RadioChoice<ProjectClass> degreeChoice; private RadioChoice<ProjectClass> degreeChoice;
private RadioChoice<ProjectClass> showChoice; private RadioChoice<ProjectClass> showChoice;
@ -76,7 +75,7 @@ public class ProjectPartnerPage extends ProjectPage {
settings = generalSystemSettingsDao.getGeneralSystemSettingsInstance(); settings = generalSystemSettingsDao.getGeneralSystemSettingsInstance();
choices = new ArrayList<ProjectClass>(); choices = new ArrayList<ProjectClass>();
days = settings.getProjectPartnerDaysToLive(); setDays(settings.getProjectPartnerDaysToLive());
ProjectClass bachelor = projectClassDao.getProjectClass(ProjectClass.BACHELOR); ProjectClass bachelor = projectClassDao.getProjectClass(ProjectClass.BACHELOR);
choices.add(bachelor); choices.add(bachelor);
choices.add(projectClassDao.getProjectClass(ProjectClass.MASTER)); choices.add(projectClassDao.getProjectClass(ProjectClass.MASTER));
@ -142,7 +141,6 @@ public class ProjectPartnerPage extends ProjectPage {
private void loadListView(ProjectPartnerDataProvider projectPartnerDataProvider){ private void loadListView(ProjectPartnerDataProvider projectPartnerDataProvider){
dataView = new DataView<ProjectPartner>("list", projectPartnerDataProvider, 5 ){ dataView = new DataView<ProjectPartner>("list", projectPartnerDataProvider, 5 ){
//wmc.add(new ListView<ProjectPartner>("list", new PropertyModel<List<ProjectPartner>>(this, "ProjectPartnerDao.getProjectPartner")){
@ -160,5 +158,13 @@ public class ProjectPartnerPage extends ProjectPage {
} }
}; };
} }
public int getDays() {
return days;
}
public void setDays(int days) {
this.days = days;
}
} }

@ -38,6 +38,10 @@
"projectClassDao" "projectClassDao"
"projectScheduleDao" "projectScheduleDao"
"projectFollowerDao" "projectFollowerDao"
"checkListDao"
"checkListQuestion"
"checkListTemplate"
"checkListAnswer"
"stringResourceDao" "stringResourceDao"
"fileDescriptionDao" "fileDescriptionDao"
"projectEventTemplateDao" "projectEventTemplateDao"