package com.mossle.auth.persistence.manager; import java.util.List; import com.mossle.auth.persistence.domain.Access; import com.mossle.auth.persistence.domain.Perm; import com.mossle.core.hibernate.HibernateEntityDao; import org.springframework.stereotype.Service; @Service public class AccessManager extends HibernateEntityDao<Access> { private static final int PRIORITY_STEP = 10; public void batchSave(String tenantId, String type, List<String> ids, List<String> values, List<String> perms) { int priority = 0; for (int i = 0; i < values.size(); i++) { String idStr = ids.get(i); String value = values.get(i); String permStr = perms.get(i); if (value.trim().length() == 0) { continue; } Access access = createOrGetAccess(idStr, value, type, permStr, tenantId); priority += PRIORITY_STEP; access.setPriority(priority); Perm perm = this.createOrGetPerm(permStr, tenantId); access.setPerm(perm); this.save(access); } } public Access createOrGetAccess(String id, String value, String type, String perm, String tenantId) { Access access; if (id.length() != 0) { access = this.get(Long.parseLong(id)); } else { access = this.findUnique( "from Access where value=? and type=? and tenant_id=?", value, type, tenantId); } if (access == null) { access = new Access(); access.setType(type); access.setValue(value); access.setTenantId(tenantId); this.save(access); } return access; } public Perm createOrGetPerm(String code, String tenantId) { Perm perm = this.findUnique("from Perm where code=? and tenant_id=?", code, tenantId); if (perm == null) { perm = new Perm(); perm.setCode(code); perm.setName(code); perm.setTenantId(tenantId); this.save(perm); } return perm; } }