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.PersonIdentity; import com.basic.security.model.Sync; import com.basic.security.utils.Constants; import com.basic.security.utils.ExceptionUtil; import com.basic.security.utils.SocketUtil; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class PersonIdentityManager extends BaseManager { public static List findPersonIdentityListByPersonId(String personId) { List personIdentityListByPerson = findList("select * from person_identity where person_id='" + personId + "' and del_flag ='0'"); return personIdentityListByPerson; } public static void deletePersonIdentityByPersonId(String personId) { deleteList(findPersonIdentityListByPersonId(personId)); List list = findList("select * from " + PersonIdentity.tableName + " where person_id='" + personId + "'"); for (ModelAdapter k : list) { try { deletePhysically(k); } catch (Exception e) { ExceptionUtil.printException(e); } } } public static void deletePersonIdentity(String personId, String identity_id) { try { ModelAdapter personIdentity = findOne("select * from person_identity where person_id='" + personId + "' and identity_id='" + identity_id + "' and del_flag ='0'"); if (personIdentity != null) { SocketUtil.rpcCallDeletePersonIdentity(personIdentity); deletePhysically(personIdentity); } } catch (Exception e) { ExceptionUtil.printException(e); } } public static void save(String personId, String identityId) { ModelAdapter personIdentity = findOne("select * from " + PersonIdentity.tableName + " where " + PersonIdentity.person_id + "='" + personId + "'" + " and " + PersonIdentity.identity_id + "='" + identityId + "'" ); if (personIdentity == null) { personIdentity = new ModelAdapter(); personIdentity.setString(PersonIdentity.id, personId + "" + identityId); personIdentity.setString("person_id", personId); personIdentity.setString("identity_id", identityId); personIdentity.setString("del_flag", "0"); personIdentity.setString("table", "person_identity"); personIdentity.setString("device_id", DeviceManager.getDeviceId()); personIdentity.setString("company_id", CompanyManager.getCompanyId()); save(personIdentity); SocketUtil.rpcCallSavePersonIdentity(personIdentity); } } public static void saveAdminIdentity(String personId) { } public static void delAdminIdentity(String personId) { List list = findList("select * from user where person_id='" + personId + "'"); for (ModelAdapter d : list) { deletePhysically(d); } } public static Map findIdentityMapByPersonId(String personId) { Map ruleMap = new HashMap(); List personPersonIdentity = findPersonIdentityListByPersonId(personId); for (ModelAdapter personIdentity : personPersonIdentity) { String identityId = personIdentity.getString("identity_id"); ruleMap.put(identityId, findById("identity", identityId)); } return ruleMap; } public static List findIdentityNameByPersonId(String personId) { Map checkedIdentityMapByPerson = PersonIdentityManager.findIdentityMapByPersonId(personId); List identityNameList = new ArrayList<>(); for (ModelAdapter identityModelAdapter : checkedIdentityMapByPerson.values()) { if (identityModelAdapter != null && !TextUtils.isEmpty(identityModelAdapter.getString("name"))) { identityNameList.add(identityModelAdapter.getString("name")); } } return identityNameList; } public static void savePersonIdentity(ModelAdapter person_identity) { BaseManager.save(person_identity); } public static void reSavePersonIdentities(String personId, String identitiesStr) { String[] toIdentityArray = identitiesStr.split(","); List dbIdentityList = IdentityManager.findIdentityNameListByPersonId(personId); Map allIdentityMap = IdentityManager.findAllIdentitiesMap(); List newIdentityList = new ArrayList<>(); List removePersonIdentityList = new ArrayList<>(); for (String toIdentity : toIdentityArray) { if (dbIdentityList.contains(toIdentity)) { dbIdentityList.remove(toIdentity); } else { newIdentityList.add(toIdentity); } } removePersonIdentityList.addAll(dbIdentityList); for (String removePersonIdentity : removePersonIdentityList) { if (allIdentityMap.containsKey(removePersonIdentity)) { String identityId = allIdentityMap.get(removePersonIdentity).getString(Identity.id); deletePersonIdentity(personId, identityId); } } for (String newIdentityName : newIdentityList) { if (allIdentityMap.containsKey(newIdentityName)) { PersonIdentityManager.savePersonIdentity(personId, allIdentityMap.get(newIdentityName).getString(Identity.id)); } } } public static void savePersonIdentity(String personId, String identityId) { ModelAdapter personIdentity = new ModelAdapter(personId + "" + identityId) .setString("table", "person_identity") .setString("identity_id", identityId) .setString("auto_init", "0") .setString("person_id", personId) .setString("device_id", DeviceManager.getDeviceId()) .setString("company_id", CompanyManager.getCompanyId()); save(personIdentity); } public static void initDefaultPersonIdentities() { ModelAdapter admin_person_identity = BaseManager.findById("person_identity", "admin_person_identity"); if (admin_person_identity == null) { admin_person_identity = new ModelAdapter("admin_person_identity") .setString("table", "person_identity") .setString("identity_id", IdentityManager.getAdminIdentity().getId()) .setString("auto_init", "1") .setString("person_id", PersonManager.getAdminPerson().getId()) .setString("device_id", DeviceManager.getDeviceId()) .setString("company_id", CompanyManager.getCompanyId()); admin_person_identity.setString(Sync.needSync, Constants.FALSE); PersonIdentityManager.savePersonIdentity(admin_person_identity); } } }