package com.founderdpt.comm.xworld.orm.mapping.generator; import java.util.HashMap; import java.util.Map; import com.founderdpt.comm.xworld.orm.mapping.generator.impl.FSequenceGeneratorImpl; import com.founderdpt.comm.xworld.orm.mapping.generator.impl.UUIDGeneratorImpl; import com.founderdpt.comm.xworld.orm.mapping.model.XworldMapping.Column; import com.founderdpt.comm.xworld.orm.mapping.model.XworldMapping.Column.Generator; public class GeneratorFactory { private static Map<String, IGeneratorID> idGenerators = new HashMap<String, IGeneratorID>(); public static String defaultGenerator="uuid"; static { idGenerators.put("uuid", new UUIDGeneratorImpl()); idGenerators.put("sequence", new FSequenceGeneratorImpl()); } public static String getGenerator(String value,Class clazz) throws InstantiationException, IllegalAccessException, ClassNotFoundException{ IGeneratorID generatorID=null; if(value!=null){ generatorID=idGenerators.get(value.trim().toLowerCase()); if(generatorID==null){ generatorID = (IGeneratorID) Class.forName(value.trim()).newInstance(); } } if(generatorID==null){ generatorID=idGenerators.get(defaultGenerator); } return generatorID.generator(clazz); } public static String getGeneratorColumnValue(Column column , Class<? extends Object> clazz) throws InstantiationException, IllegalAccessException, ClassNotFoundException{ IGeneratorID generatorID=null; Generator generatorObj = column.getGenerator(); if(generatorObj!=null){ String generator=generatorObj.getClazz(); if(generator!=null){ generatorID=idGenerators.get(generator.trim().toLowerCase()); if(generatorID==null){ generatorID = (IGeneratorID) Class.forName(generator.trim()).newInstance(); } } } if(generatorID==null){ generatorID=idGenerators.get(defaultGenerator); } return generatorID.generatorColumnValue(column,clazz); } }