@Override @SuppressWarnings("unchecked") public <T> T fetch(Class<T> type, Object value) throws IllegalStateException { checkConfig(); if (Color.class.equals(type)) { return (T) fetch(value); } else if (mode == MODE.PRIMARY && PrimaryColor.class.equals(type)) { return (T) fetch(value); } else if (mode == MODE.SECONDARY && SecondaryColor.class.equals(type)) { return (T) fetch(value); } return null; }
@Override public String getName() throws IllegalStateException { checkConfig(); return NAME; }
@Override public String getConstraintErrorMessage(Object invalidValue, Locale locale) { checkConfig(); return String.format("\"%s\" is not a correct %s color", invalidValue, mode.name().toLowerCase()); }
@Override public Serializable getReference(Object entity) throws IllegalStateException { checkConfig(); if (entity instanceof Color) { Color color = (Color) entity; switch (mode) { case PRIMARY: if (color instanceof PrimaryColor) { return color.name(); } break; case SECONDARY: if (color instanceof SecondaryColor) { return color.name(); } break; } } return null; }
@Override public Color fetch(Object value) throws IllegalStateException { checkConfig(); if (value instanceof String) { String ref = (String) value; switch (mode) { case PRIMARY: for (PrimaryColor color : PrimaryColor.values()) { if (color.name().equals(ref)) { return color; } } break; case SECONDARY: for (SecondaryColor color : SecondaryColor.values()) { if (color.name().equals(ref)) { return color; } } break; } } return null; }