|
@@ -1,11 +1,12 @@
|
|
package com.diagbot.util;
|
|
package com.diagbot.util;
|
|
|
|
|
|
import com.diagbot.model.entity.Clinical;
|
|
import com.diagbot.model.entity.Clinical;
|
|
-import com.diagbot.model.entity.General;
|
|
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @description:
|
|
* @description:
|
|
@@ -51,6 +52,40 @@ public class CoreUtil {
|
|
return getPropertyList(list, "name");
|
|
return getPropertyList(list, "name");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 将列表中属性对应的值从map中获取,如果有值,将standName替换
|
|
|
|
+ *
|
|
|
|
+ * @param list
|
|
|
|
+ * @param propertyName
|
|
|
|
+ * @param <T>
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public static <T> List<String> setPropertyList(List<T> list, String propertyName, String standName, Map<String, String> map) {
|
|
|
|
+ List<String> res = new ArrayList<>();
|
|
|
|
+ if (ListUtil.isEmpty(list)) {
|
|
|
|
+ return res;
|
|
|
|
+ }
|
|
|
|
+ for (T t : list) {
|
|
|
|
+ try {
|
|
|
|
+ setFieldValue(t, propertyName, standName, map);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return res;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 将列表中属性对应的值从map中获取,如果有值,将standName替换
|
|
|
|
+ *
|
|
|
|
+ * @param list
|
|
|
|
+ * @param <T>
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public static <T> List<String> setPropertyList(List<T> list, Map<String, String> map) {
|
|
|
|
+ return setPropertyList(list, "name", "standName", map);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 循环向上转型, 获取对象的 DeclaredField
|
|
* 循环向上转型, 获取对象的 DeclaredField
|
|
* @param object : 子类对象
|
|
* @param object : 子类对象
|
|
@@ -100,22 +135,56 @@ public class CoreUtil {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 直接设置对象属性值, 忽略 private/protected 修饰符, 也不经过 setter
|
|
|
|
+ * @param object : 子类对象
|
|
|
|
+ * @param name : 父类中的属性名
|
|
|
|
+ * @param standName : 要替换的属性名
|
|
|
|
+ * @param value : 将要设置的值
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ public static void setFieldValue(Object object, String name, String standName, Map<String, String> value){
|
|
|
|
+
|
|
|
|
+ //根据 对象和属性名通过反射 调用上面的方法获取 Field对象
|
|
|
|
+ Field field = getDeclaredField(object, name) ;
|
|
|
|
+
|
|
|
|
+ //抑制Java对其的检查
|
|
|
|
+ field.setAccessible(true) ;
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ //将 object 中 field 所代表的值 设置为 value
|
|
|
|
+ String key = (String)field.get(object);
|
|
|
|
+ if (value != null && value.get(key) != null) {
|
|
|
|
+ Field standField = getDeclaredField(object, standName) ;
|
|
|
|
+ standField.setAccessible(true) ;
|
|
|
|
+ standField.set(object, value.get(key));
|
|
|
|
+ }
|
|
|
|
+ } catch (IllegalArgumentException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
List<Clinical> clinicals = new ArrayList<>();
|
|
List<Clinical> clinicals = new ArrayList<>();
|
|
Clinical c1 = new Clinical();
|
|
Clinical c1 = new Clinical();
|
|
- c1.setName("ddd");
|
|
|
|
|
|
+ c1.setName("a");
|
|
clinicals.add(c1);
|
|
clinicals.add(c1);
|
|
Clinical c2 = new Clinical();
|
|
Clinical c2 = new Clinical();
|
|
- c2.setName("ddd");
|
|
|
|
|
|
+ c2.setName("b");
|
|
clinicals.add(c2);
|
|
clinicals.add(c2);
|
|
Clinical c3 = new Clinical();
|
|
Clinical c3 = new Clinical();
|
|
- c3.setName("ddd");
|
|
|
|
|
|
+ c3.setName("c");
|
|
clinicals.add(c3);
|
|
clinicals.add(c3);
|
|
|
|
|
|
- List<General> generalLabelList = new ArrayList<>();
|
|
|
|
- General g1 = new General();
|
|
|
|
- g1.setName("ab");
|
|
|
|
- generalLabelList.add(g1);
|
|
|
|
- System.out.println(getPropertyList(generalLabelList));
|
|
|
|
|
|
+ System.out.println(getPropertyList(clinicals));
|
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
|
+ map.put("a", "A");
|
|
|
|
+ map.put("b", "B");
|
|
|
|
+
|
|
|
|
+ setPropertyList(clinicals, map);
|
|
}
|
|
}
|
|
}
|
|
}
|