added a new profile panel thats halfway done. todo: fix nullpointer for users who are not employees

This commit is contained in:
Fredrik Friis 2012-02-24 19:28:22 +09:00
parent 06be88e3bc
commit e1a8bb09cf
3 changed files with 157 additions and 2 deletions
src/main/java/se/su/dsv/scipro/supervisor

@ -1,19 +1,25 @@
package se.su.dsv.scipro.supervisor.pages;
import org.apache.wicket.PageParameters;
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()));
add(new ProfilePanel("supervisorProfile", new Model<Employee>(supervisorDao.getFrom(getUser()))));
}
}

@ -0,0 +1,25 @@
<!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>Languages:</label>
<div wicket:id="languagelistview">
<span wicket:id="languagelabel"></span> <input type="checkbox"
wicket:id="languagecheckbox" />
</div>
</div>
<div class="append-bottom">
<label>Regular:</label>
<div wicket:id="regularlistview">
<span wicket:id="regularlabel"></span> <input type="checkbox"
wicket:id="regularcheckbox" />
</div>
</div>
</form>
</wicket:panel>
</body>
</html>

@ -0,0 +1,124 @@
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.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;
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 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();
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()));
}
});
}
};
add(regularListView);
// final KeywordType unitType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT);
}
}
}