| | |
| | | package org.yeshi.utils.annotation; |
| | | |
| | | import com.google.gson.Gson; |
| | | import net.sf.json.JSONObject; |
| | | import org.yeshi.utils.StringUtil; |
| | | |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.lang.annotation.Annotation; |
| | | import java.lang.reflect.Field; |
| | | import java.util.Properties; |
| | | |
| | | public class MapUtil { |
| | | |
| | | public static Object parseMap(Class<?> clazz, Properties ps) { |
| | | System.out.println(clazz.getName()); |
| | | Object target = null; |
| | | try { |
| | | Class clz = Class.forName(clazz.getName()); |
| | | target = clz.newInstance(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Field[] fields = clazz.getDeclaredFields(); |
| | | for (Field fd : fields) { |
| | | fd.setAccessible(true); |
| | | Annotation[] as = fd.getAnnotations(); |
| | | for (Annotation a : as) { |
| | | if (a instanceof Map) { |
| | | Map c = (Map) a; |
| | | try { |
| | | fd.set(target, new String(ps.getProperty(c.value()).getBytes("ISO-8859-1"), "UTF-8")); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return target; |
| | | } |
| | | public static Object parseMap(Class<?> clazz, Properties ps) { |
| | | System.out.println(clazz.getName()); |
| | | Object target = null; |
| | | try { |
| | | Class clz = Class.forName(clazz.getName()); |
| | | target = clz.newInstance(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Field[] fields = clazz.getDeclaredFields(); |
| | | for (Field fd : fields) { |
| | | fd.setAccessible(true); |
| | | Annotation[] as = fd.getAnnotations(); |
| | | for (Annotation a : as) { |
| | | if (a instanceof Map) { |
| | | Map c = (Map) a; |
| | | try { |
| | | fd.set(target, new String(ps.getProperty(c.value()).getBytes("ISO-8859-1"), "UTF-8")); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return target; |
| | | } |
| | | |
| | | |
| | | public static Object parseMapByJson(Class<?> clazz, Properties ps, String encoding) { |
| | | if (StringUtil.isNullOrEmpty(encoding)) { |
| | | encoding = "ISO-8859-1"; |
| | | } |
| | | JSONObject json = new JSONObject(); |
| | | Field[] fields = clazz.getDeclaredFields(); |
| | | for (Field fd : fields) { |
| | | fd.setAccessible(true); |
| | | Annotation[] as = fd.getAnnotations(); |
| | | for (Annotation a : as) { |
| | | if (a instanceof Map) { |
| | | Map c = (Map) a; |
| | | try { |
| | | json.put(fd.getName(), new String(ps.getProperty(c.value()).getBytes(encoding), "UTF-8")); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | return new Gson().fromJson(json.toString(), clazz); |
| | | } |
| | | |
| | | } |