package de.randi2.jsf.converters; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.FacesConverter; import javax.faces.model.SelectItem; import de.randi2.model.Login; import de.randi2.services.UserService; @FacesConverter(value = "de.randi2.jsf.converters.LOGIN_CONVERTER") public class LoginConverter implements Converter { private final UserService service; public LoginConverter(final UserService s) { service = s; } @Override public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { if(arg2.equals("please select")) return null; StringBuffer b = new StringBuffer(arg2); b.delete(0, b.indexOf("(")+1); b.delete(b.indexOf(")"), b.length()); return service.getUser(b.toString()); } @Override public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { if(arg2 == null) return "please select"; StringBuffer b = new StringBuffer(); Login l = (Login) arg2; return b.append(l.getPerson().getFirstname()).append(" ") .append(l.getPerson().getSurname()).append("(") .append(l.getUsername()).append(")").toString(); } public static SelectItem getAsSelectItem(Login l) { StringBuffer b = new StringBuffer(); return new SelectItem(l, b.append(l.getPerson().getFirstname()) .append(" ").append(l.getPerson().getSurname()).append("(") .append(l.getUsername()).append(")").toString()); } }