package foundation.object.reader; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import foundation.translator.Translator; public class ObjectPropertyRecorder { private List nameList; private List lowerNameList; private Map nameMap; private Map propertyReaderMap; private List propertyReaderList; public ObjectPropertyRecorder() { nameList = new ArrayList(); lowerNameList = new ArrayList(); nameMap = new HashMap(); propertyReaderMap = new HashMap(); propertyReaderList = new LinkedList(); } public void addGetMethod(String key, String property, Method method) throws Exception { if (key == null) { return; } Class returnType = method.getReturnType(); String lower = property.toLowerCase(); PropertyReader propertyReader = propertyReaderMap.get(key.toLowerCase()); if (propertyReader == null) { nameMap.put(lower, nameList.size()); nameList.add(property); lowerNameList.add(lower); propertyReader = new PropertyReader(property, returnType); propertyReaderList.add(propertyReader); propertyReaderMap.put(lower, propertyReader); } propertyReader.setGetMethod(method); } public void addSetMethod(String key, String property, Method method) throws Exception { if (key == null) { return; } Class paramType = method.getParameterTypes()[0]; if (!Translator.containsType(paramType)) { return; } String lower = property.toLowerCase(); PropertyReader propertyReader = propertyReaderMap.get(key.toLowerCase()); if (propertyReader == null) { nameMap.put(lower, nameList.size()); nameList.add(property); lowerNameList.add(lower); propertyReader = new PropertyReader(property, paramType); propertyReaderList.add(propertyReader); propertyReaderMap.put(lower, propertyReader); } propertyReader.setSetMethod(method); } public PropertyReader[] getPropertyReaderArray() { PropertyReader[] result = new PropertyReader[propertyReaderList.size()]; result = propertyReaderList.toArray(result); return result; } public String[] getNameArray() { String[] result = new String[nameList.size()]; return nameList.toArray(result); } public String[] getLowerNameArray() { String[] result = new String[lowerNameList.size()]; return lowerNameList.toArray(result); } public Map getNameMap() { return nameMap; } }