package com.basic.security.manager; import android.text.TextUtils; import com.basic.security.model.Identity; import com.basic.security.model.ModelAdapter; import com.basic.security.model.Person; import com.basic.security.model.PersonA; import com.basic.security.model.PersonAReserved; import com.basic.security.utils.ExceptionUtil; import com.google.gson.Gson; import java.lang.reflect.Field; import java.util.HashMap; import java.util.List; import java.util.Map; public class PersonAReservedManager extends BaseManager { public static String getReservedJsonStr(ModelAdapter person) { String reservedJsonStr = ""; try { Gson gson = new Gson(); Map reservedMap = new HashMap<>(); List personIdentityNameList = PersonIdentityManager.findIdentityNameByPersonId(person.getString(Person.id)); if (personIdentityNameList.size() > 0) { reservedMap.put(PersonAReserved.person_identity_name_list, gson.toJson(personIdentityNameList)); } Field[] fields = PersonAReserved.class.getDeclaredFields(); for (Field field : fields) { String fieldName = field.getName(); if (fieldName.startsWith("person_") && !PersonAReserved.person_identity_name_list.equals(fieldName)) { String modelFieldValue = person.getString(fieldName.substring("person_".length())); if (!TextUtils.isEmpty(modelFieldValue)) { reservedMap.put(fieldName.substring("person_".length()), modelFieldValue); } } } reservedJsonStr = gson.toJson(reservedMap); } catch (Exception e) { ExceptionUtil.printException(e); } return reservedJsonStr; } public static void parseReservedJson(ModelAdapter personA, ModelAdapter person) { try { String reserved = personA.getString(PersonA.reserved); if (TextUtils.isEmpty(reserved)) { return; } PersonIdentityManager.deletePersonIdentityByPersonId(personA.getString(PersonA.id)); Gson gson = new Gson(); Map reservedMap = gson.fromJson(reserved, Map.class); String person_identity_name_list_str = reservedMap.get(PersonAReserved.person_identity_name_list); if (TextUtils.isEmpty(person_identity_name_list_str)) { List person_identity_name_list = gson.fromJson(person_identity_name_list_str, List.class); for (String identityName : person_identity_name_list) { ModelAdapter identity = IdentityManager.findIdentityByName(identityName); if (identity != null) { PersonIdentityManager.savePersonIdentity(personA.getString(PersonA.id), identity.getString(Identity.id)); } } } for (Map.Entry entry : reservedMap.entrySet()) { if (!PersonAReserved.person_identity_name_list.equals(entry.getKey())) { person.setString(entry.getKey(), entry.getValue()); } } } catch (Exception e) { ExceptionUtil.printException(e); } } public static void main(String[] args) { } }