package se.unlogic.standardutils.populators;

import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;


public class QueryParameterPopulatorRegistery {

   private final static HashMap<Class<?>, QueryParameterPopulator<?>> QUERY_PARAMETER_POPULATORS = new HashMap<Class<?>, QueryParameterPopulator<?>>();

   static{
      addTypePopulator(new UUIDPopulator());
   }

   private static void addTypePopulator(QueryParameterPopulator<?> queryParameterPopulator){

      QUERY_PARAMETER_POPULATORS.put(queryParameterPopulator.getType(), queryParameterPopulator);
   }

   @SuppressWarnings("unchecked")
   public static <T> BeanStringPopulator<T> getQueryParameterPopulator(Class<T> clazz){

      return (BeanStringPopulator<T>) QUERY_PARAMETER_POPULATORS.get(clazz);
   }

   public static Collection<QueryParameterPopulator<?>> getQueryParameterPopulators(){

      return Collections.unmodifiableCollection(QUERY_PARAMETER_POPULATORS.values());
   }
}
