package org.esmerilprogramming.overtown.http.converter; import org.esmerilprogramming.overtown.http.OvertownRequest; /** * @author efraimgentil (efraim.gentil@gmail.com) */ public class CommonsParamConverter implements ParameterConverter { @Override public <T> T translate(Class<T> clazz, String parameterName, OvertownRequest overtownRequest) { Object attribute = overtownRequest.getParameter(parameterName); if (attribute == null) return null; ParameterConverter translator = getTranslator(clazz); return translator.translate(clazz, parameterName, overtownRequest); } public ParameterConverter getTranslator(Class<?> clazz) { ParameterConverter translator = new EmptyParamConverter(); if (isString(clazz)) translator = new StringConverter(); else if (isInteger(clazz)) translator = new IntegerConverter(); else if (isDouble(clazz)) translator = new DoubleConverter(); else if (isLong(clazz)) translator = new LongConverter(); else if (isBoolean(clazz)) translator = new BooleanConverter(); return translator; } public ParameterConverter getConveter(Class<?> clazz){ ParameterConverter translator = new EmptyParamConverter(); if (isString(clazz)) translator = new StringConverter(); else if (isInteger(clazz)) translator = new IntegerConverter(); else if (isDouble(clazz)) translator = new DoubleConverter(); else if (isLong(clazz)) translator = new LongConverter(); else if (isBoolean(clazz)) translator = new BooleanConverter(); return translator; } public static boolean isCommonParam(Class<?> clazz) { return (isString(clazz) || isInteger(clazz) || isLong(clazz) || isDouble(clazz)); } private static boolean isString(Class<?> clazz) { return String.class.equals(clazz); } private static boolean isInteger(Class<?> clazz) { return Integer.class.equals(clazz); } private static boolean isLong(Class<?> clazz) { return Long.class.equals(clazz); } private static boolean isDouble(Class<?> clazz) { return Double.class.equals(clazz); } private static boolean isBoolean(Class<?> clazz) { return Boolean.class.equals(clazz); } }