Merge branch 'profile' into develop

This commit is contained in:
Fredrik Friis 2012-02-27 11:57:06 +09:00
commit da56c4c899
3 changed files with 281 additions and 1 deletions
src/main/java/se/su/dsv/scipro/supervisor

@ -1,19 +1,32 @@
package se.su.dsv.scipro.supervisor.pages;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
import se.su.dsv.scipro.security.auth.Authorization;
import se.su.dsv.scipro.security.auth.roles.Roles;
import se.su.dsv.scipro.supervisor.panels.ProfilePanel;
import se.su.dsv.scipro.user.panels.UserProfilePanelFactory;
@Authorization(authorizedRoles={Roles.EMPLOYEE})
//@Authorization(authorizedRoles={Roles.SYSADMIN})
public class SupervisorProfilePage extends AbstractSupervisorPage {
@SpringBean
SupervisorDao supervisorDao;
@SpringBean
private UserProfilePanelFactory factory;
public SupervisorProfilePage(final PageParameters pp){
super(pp);
add(factory.createUserProfilePanelForUser("supervisorProfile",getUser()));
//add(factory.createUserProfilePanelForUser("supervisorProfile",getUser()));
if (supervisorDao.getFrom(getUser()) == null){
add(new EmptyPanel("supervisorProfile"));
}
else {
add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(getUser()))));
}
}
}

@ -0,0 +1,57 @@
<!DOCTYPE html>
<html
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<wicket:panel>
<form wicket:id="form">
<div class="append-bottom">
<label>Unit: (imported from Daisy)</label>
<div wicket:id="unitlabel"></div>
</div>
<div class="append-bottom">
<label>Research areas: (imported from Daisy)</label>
<div wicket:id="emptylabel"></div>
<div wicket:id="arealistview">
<span wicket:id="arealabel"></span>
<!-- <input type="checkbox" wicket:id="areacheckbox" /> -->
</div>
</div>
<div class="append-bottom">
<label>Select what languages you can supervise in: </label>
<div wicket:id="languagelistview">
<span wicket:id="languagelabel"></span> <input type="checkbox"
wicket:id="languagecheckbox" />
</div>
</div>
<div><label>Select keywords: </label></div>
<div class="span-22 last" wicket:id="regularcontainer">
<div class="span-11">
<label>Available</label>
<div wicket:id="regularlistview">
<span wicket:id="regularlabel"></span> <input type="checkbox"
wicket:id="regularcheckbox" />
</div>
</div>
<div class="span-11 last">
<label>Selected</label>
<div wicket:id="regularlistview2">
<span wicket:id="regularlabel"></span> <input type="checkbox"
wicket:id="regularcheckbox" />
</div>
</div>
</div>
</form>
</wicket:panel>
</body>
</html>

@ -0,0 +1,210 @@
package se.su.dsv.scipro.supervisor.panels;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
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.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import se.su.dsv.scipro.data.dao.interfaces.LanguageDao;
import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Language;
import se.su.dsv.scipro.match.dao.interfaces.KeywordDao;
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
import se.su.dsv.scipro.match.dataobject.Keyword;
import se.su.dsv.scipro.match.dataobject.KeywordType;
/**
* Author: fred
* Date: 2/24/12
* Time: 3:07 PM
*/
public class ProfilePanel extends Panel {
private static final long serialVersionUID = 1L;
private WebMarkupContainer regularContainer;
public ProfilePanel(String id, Model<Employee> employeeModel) {
super(id);
add(new ProfileForm("form", employeeModel));
}
public class ProfileForm extends Form<Void> {
private static final long serialVersionUID = 1L;
@SpringBean
LanguageDao languageDao;
@SpringBean
SupervisorDao employeeDao;
@SpringBean
KeywordTypeDao keywordTypeDao;
@SpringBean
KeywordDao keywordDao;
public ProfileForm(String id, final Model<Employee> employeeModel) {
super(id);
ListView<Language> languageListView = new ListView<Language>("languagelistview", languageDao.findAll()) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Language> item) {
final Language l = item.getModelObject();
item.add(new Label("languagelabel", l.getName()));
item.add(new AjaxCheckBox("languagecheckbox", new Model<Boolean>(employeeModel.getObject().getCapabilities().getLanguages().contains(l))){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
Set<Language> languages = employeeModel.getObject().getCapabilities().getLanguages();
if (getModelObject()==true){
languages.add(l);
System.out.println("added language " + l.getName());
}
else {
languages.remove(l);
System.out.println("removed language " + l.getName());
}
employeeModel.getObject().getCapabilities().setLanguages(languages);
employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
}
});
}
};
add(languageListView);
final KeywordType unitType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT);
if (employeeModel.getObject().getKeywords().getFiltered(unitType) == null || employeeModel.getObject().getKeywords().getFiltered(unitType).isEmpty()){
add(new Label("unitlabel", "You are not registered under any existing/active unit in Daisy. Please make sure you are registered under an existing/active unit in Daisy ASAP."));
}
else {
add(new Label("unitlabel", employeeModel.getObject().getKeywords().getFiltered(unitType).get(0).getKeyword()));
}
final KeywordType areaType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.RESEARCH_AREA);
add(new Label("emptylabel", "You do not have any active/existing research areas selected in Daisy. Please make sure that you select at least one active/existing research area in Daisy ASAP.").setVisible(employeeModel.getObject().getKeywords().getFiltered(areaType) == null || employeeModel.getObject().getKeywords().getFiltered(areaType).isEmpty()));
ListView<Keyword> areaListView = new ListView<Keyword>("arealistview", new ArrayList<Keyword>(keywordDao.getKeywords(areaType, false))){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Keyword> item) {
final Keyword kw = item.getModelObject();
item.add(new Label("arealabel", kw.getKeyword()));
if (!employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw)){
item.setVisible(false);
}
item.add(new AjaxCheckBox("areacheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(areaType).contains(kw))){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll());
if (getModelObject()==true){
oldKeywords.add(kw);
System.out.println("added regular " + kw.getKeyword());
}
else {
oldKeywords.remove(kw);
System.out.println("removed regular " + kw.getKeyword());
}
employeeModel.getObject().getKeywords().setKeywords(oldKeywords);
employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
target.addComponent(regularContainer);
}
});
}
};
add(areaListView);
regularContainer = new WebMarkupContainer("regularcontainer");
regularContainer.setOutputMarkupId(true);
add(regularContainer);
final KeywordType regularType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.REGULAR);
ListView<Keyword> regularListView = new ListView<Keyword>("regularlistview", new ArrayList<Keyword>(keywordDao.getKeywords(regularType, false))){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Keyword> item) {
final Keyword kw = item.getModelObject();
if(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){
item.setVisible(false);
}
item.add(new Label("regularlabel", kw.getKeyword()));
item.add(new AjaxCheckBox("regularcheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw))){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll());
if (getModelObject()==true){
oldKeywords.add(kw);
System.out.println("added regular " + kw.getKeyword());
}
else {
oldKeywords.remove(kw);
System.out.println("removed regular " + kw.getKeyword());
}
employeeModel.getObject().getKeywords().setKeywords(oldKeywords);
employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
target.addComponent(regularContainer);
}
});
}
};
regularContainer.add(regularListView);
ListView<Keyword> regularListView2 = new ListView<Keyword>("regularlistview2", new ArrayList<Keyword>(keywordDao.getKeywords(regularType, false))){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Keyword> item) {
final Keyword kw = item.getModelObject();
if(!employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw)){
item.setVisible(false);
}
item.add(new Label("regularlabel", kw.getKeyword()));
item.add(new AjaxCheckBox("regularcheckbox", new Model<Boolean>(employeeModel.getObject().getKeywords().getFiltered(regularType).contains(kw))){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
Set<Keyword> oldKeywords = new HashSet<Keyword>(employeeModel.getObject().getKeywords().getAll());
if (getModelObject()==true){
oldKeywords.add(kw);
System.out.println("added regular " + kw.getKeyword());
}
else {
oldKeywords.remove(kw);
System.out.println("removed regular " + kw.getKeyword());
}
employeeModel.getObject().getKeywords().setKeywords(oldKeywords);
employeeModel.setObject(employeeDao.save(employeeModel.getObject()));
target.addComponent(regularContainer);
}
});
}
};
regularContainer.add(regularListView2);
}
}
}