public class Main {
public void assetsCardSynInfo(AssetsCardItem cardItem, String messageId, List<AssetsCardSynFail> fails){
AssetsCard assetsCard = ReflectUtil.typeTransform(cardItem, AssetsCard.class, CertificateService.SYN_CARD_FIELD_MAP);
}
}
public class ReflectUtil {
public static <T> T typeTransform(Object object, Class<T> claz, Map<String, String> map) throws Exception{
Map<String, String> fields = ReflectUtil.getFieldType(claz);
Object newInstance = Class.forName(claz.getCanonicalName().toString())
.newInstance();
Set<String> keySet = map.keySet();
for (String key : keySet) {
Method method = object.getClass().getDeclaredMethod(
"get" + StringHelper.toUpperCaseFirstOne(key));
String sapField = map.get(key);
if (!fields.containsKey(sapField)) {
continue;
}
if (method.getReturnType().getCanonicalName().equals(
"java.lang.String")) {
String value = (String) method.invoke(object);
if(StringUtils.isBlank(value))
continue;
if (value.contains("<")) {
value = value.replaceAll("<", "");
}
if (value.contains(">")) {
value = value.replaceAll(">", "");
}
Method method1 =null;
if(fields.get(sapField).equals("java.lang.String")){
method1=newInstance.getClass().getDeclaredMethod(
"set" + StringHelper.toUpperCaseFirstOne(sapField), String.class);
method1.invoke(newInstance, value.trim());
}else if(fields.get(sapField).equals("java.math.BigDecimal")){
method1 = newInstance.getClass().getDeclaredMethod(
"set" + StringHelper.toUpperCaseFirstOne(sapField), BigDecimal.class);
method1.invoke(newInstance, new BigDecimal(value));
}else if (fields.get(sapField).equals("java.lang.Double")) {
method1 = newInstance.getClass().getDeclaredMethod(
"set" + StringHelper.toUpperCaseFirstOne(sapField), Double.class);
method1.invoke(newInstance, new java.lang.Double(value));
}
}else if (method.getReturnType().getCanonicalName().equals(
"java.lang.Double")) {
Double value = (Double) method.invoke(object);
if(value==null)
continue;
Method method1 =null;
if(fields.get(sapField).equals("java.lang.String")){
method1=newInstance.getClass().getDeclaredMethod(
"set" + StringHelper.toUpperCaseFirstOne(sapField), String.class);
method1.invoke(newInstance, String.valueOf(value).trim());
}else if(fields.get(sapField).equals("java.math.BigDecimal")){
method1 = newInstance.getClass().getDeclaredMethod(
"set" + StringHelper.toUpperCaseFirstOne(sapField), BigDecimal.class);
method1.invoke(newInstance, BigDecimal.valueOf(value));
} else if (fields.get(sapField).equals("java.lang.Double")) {
method1 = newInstance.getClass().getDeclaredMethod(
"set" + StringHelper.toUpperCaseFirstOne(sapField), java.lang.Double.class);
method1.invoke(newInstance, value);
}
}
}
return (T)newInstance;
}
}
public class CertificateService{
public static final Map<String, String> SYN_CARD_FIELD_MAP;
static {
Map SYN_CARD_FIELD_MAP_TMP = new HashMap<String, String>();
SYN_CARD_FIELD_MAP_TMP.put("BUKRS","sapcompanyCode");
SYN_CARD_FIELD_MAP_TMP.put("ANLN1","assetsCardCode");
SYN_CARD_FIELD_MAP_TMP.put("ANLN2","assestSecondCode");
SYN_CARD_FIELD_MAP_TMP.put("ZZ_SFZG","isEstimate");
SYN_CARD_FIELD_MAP_TMP.put("ZZ_SWID","physicalId");
SYN_CARD_FIELD_MAP_TMP.put("ANLKL","sapAssetsTypeCode");
SYN_CARD_FIELD_MAP_TMP.put("TXT50","assetsName");
SYN_CARD_FIELD_MAP = Collections.unmodifiableMap(SYN_CARD_FIELD_MAP_TMP);
}
}