package com.ese.model.dao; import com.ese.model.db.RoleAccessModel; import com.ese.model.view.report.RoleAccessViewReport; import com.ese.utils.Utils; import org.hibernate.Criteria; import org.hibernate.SQLQuery; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Restrictions; import org.hibernate.type.StringType; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.List; @Repository public class RoleAccessDAO extends GenericDAO<RoleAccessModel, Integer>{ public List<RoleAccessModel> findBySystemRoleId(int systemRoleId){ List<RoleAccessModel> roleAccessModels = Utils.getEmptyList(); try { Criteria criteria = getCriteria(); criteria.add(Restrictions.eq("systemRoleModel.id", systemRoleId)); criteria.add(Restrictions.eq("isValid", 1)); roleAccessModels = Utils.safetyList(criteria.list()); } catch (Exception e) { log.debug("Exception error findBySystemRoleId : ", e); } return roleAccessModels; } public List<RoleAccessModel> findByMenuObjectIdAndSystemRoleId(int menuObjId, int systemRoleId, String key){ List<RoleAccessModel> roleAccessModels = Utils.getEmptyList(); try { Criteria criteria = getSession().createCriteria(RoleAccessModel.class, "ra"); criteria.createAlias("ra.menuObjectModel", "mo"); criteria.createAlias("ra.systemRoleModel", "so"); if (!Utils.isZero(menuObjId)){ criteria.add(Restrictions.eq("mo.id", menuObjId)); } if (!Utils.isZero(systemRoleId)){ criteria.add(Restrictions.eq("so.id", systemRoleId)); } if (!Utils.isNull(key) && !Utils.isZero(key.trim().length())){ Criterion objectCode = Restrictions.like("mo.code", "%" + key.trim() + "%"); Criterion objecyName = Restrictions.like("mo.name", "%"+ key.trim() +"%"); criteria.add(Restrictions.or(objectCode,objecyName)); } criteria.add(Restrictions.eq("isValid", 1)); roleAccessModels = Utils.safetyList(criteria.list()); } catch (Exception e) { log.debug("Exception error findBySystemRoleId : ", e); } return roleAccessModels; } public List<RoleAccessViewReport> genSQLReportUserAndRole(){ List<RoleAccessViewReport> reportViews = new ArrayList<RoleAccessViewReport>(); StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.append(" SELECT "); sqlBuilder.append(" ").append(getPrefix()).append(".system_role.code AS ROLE_NAME, "); sqlBuilder.append(" ").append(getPrefix()).append(".menu_object.code AS OBJ_CODE, "); sqlBuilder.append(" ").append(getPrefix()).append(".menu_object.name AS OBJ_NAME "); sqlBuilder.append(" FROM ").append(getPrefix()).append(".role_access"); sqlBuilder.append(" LEFT JOIN ").append(getPrefix()).append(".system_role"); sqlBuilder.append(" ON ").append(getPrefix()).append(".role_access.system_role_id = ").append(getPrefix()).append(".system_role.id"); sqlBuilder.append(" LEFT JOIN ").append(getPrefix()).append(".menu_object"); sqlBuilder.append(" ON ").append(getPrefix()).append(".role_access.menu_object_id = ").append(getPrefix()).append(".menu_object.id"); sqlBuilder.append(" GROUP BY ").append(getPrefix()).append(".system_role.code,"); sqlBuilder.append(" ").append(getPrefix()).append(".menu_object.code,").append(getPrefix()).append(".menu_object.name"); log.debug("--SQL {}",sqlBuilder.toString()); try { SQLQuery query = getSession().createSQLQuery(sqlBuilder.toString()) .addScalar("ROLE_NAME", StringType.INSTANCE) .addScalar("OBJ_CODE", StringType.INSTANCE) .addScalar("OBJ_NAME", StringType.INSTANCE); List<Object[]> objects = query.list(); for (Object[] entity : objects) { RoleAccessViewReport report = new RoleAccessViewReport(); report.setRoleName(Utils.parseString(entity[0], "")); report.setObjCode(Utils.parseString(entity[1], "")); report.setObjName(Utils.parseString(entity[2], "")); reportViews.add(report); } } catch (Exception e) { log.debug("Exception SQL : {}", e); } return reportViews; } }