package de.randi2.jsf.converters; import java.util.Locale; import java.util.ResourceBundle; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.FacesConverter; import de.randi2.model.criteria.AbstractCriterion; @FacesConverter(value = "de.randi2.jsf.converters.CRITERION_CONVERTER") public class CriterionConverter implements Converter { private final Locale locale; public CriterionConverter(final Locale l) { locale = l; } @Override public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { // try { // return findGenderForl16edValue(arg2); // } catch (InstantiationException e) { // e.printStackTrace(); // } catch (IllegalAccessException e) { // e.printStackTrace(); // } catch (ClassNotFoundException e) { // e.printStackTrace(); // } return arg2; } @Override public String getAsString(FacesContext arg0, UIComponent arg1, Object value) { // String result = null; // if (value != null && value instanceof AbstractCriterion<?, ?>) { // result = ResourceBundle.getBundle("de.randi2.jsf.i18n.criteria", // locale).getString(value.getClass().getCanonicalName()); // } return (String) value; } public AbstractCriterion<?, ?> findGenderForl16edValue(String l16edValue) throws InstantiationException, IllegalAccessException, ClassNotFoundException { ResourceBundle rb = ResourceBundle.getBundle( "de.randi2.jsf.i18n.criteria", locale); for (String key : rb.keySet()) { if (rb.getString(key).equals(l16edValue)) return (AbstractCriterion<?, ?>) Class.forName(key) .newInstance(); } return null; } }