package org.joget.directory.dao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; import org.joget.commons.spring.model.AbstractSpringDao; import org.joget.commons.util.LogUtil; import org.joget.directory.model.Employment; import org.joget.directory.model.Grade; public class GradeDaoImpl extends AbstractSpringDao implements GradeDao { private OrganizationDao organizationDao; private EmploymentDao employmentDao; public EmploymentDao getEmploymentDao() { return employmentDao; } public void setEmploymentDao(EmploymentDao employmentDao) { this.employmentDao = employmentDao; } public OrganizationDao getOrganizationDao() { return organizationDao; } public void setOrganizationDao(OrganizationDao organizationDao) { this.organizationDao = organizationDao; } public Boolean addGrade(Grade grade) { try { save("Grade", grade); return true; } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Add Grade Error!"); return false; } } public Boolean updateGrade(Grade grade) { try { merge("Grade", grade); return true; } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Update Grade Error!"); return false; } } public Boolean deleteGrade(String id) { try { Grade grade = getGrade(id); if (grade != null && grade.getEmployments() != null && grade.getEmployments().size() > 0) { for (Employment e : (Set<Employment>) grade.getEmployments()) { employmentDao.unassignUserFromGrade(e.getUserId(), id); } } delete("Grade", grade); return true; } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Delete Grade Error!"); return false; } } public Grade getGrade(String id) { try { return (Grade) find("Grade", id); } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Get Grade Error!"); return null; } } public Grade getGradeByName(String name) { try { Grade grade = new Grade(); grade.setName(name); List grades = findByExample("Grade", grade); if (grades.size() > 0) { return (Grade) grades.get(0); } } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Get Grade By Name Error!"); } return null; } public Collection<Grade> getGradesByOrganizationId(String filterString, String organizationId, String sort, Boolean desc, Integer start, Integer rows) { try { if (filterString == null) { filterString = ""; } Collection param = new ArrayList(); String condition = "where (e.id like ? or e.name like ? or e.description like ?)"; param.add("%" + filterString + "%"); param.add("%" + filterString + "%"); param.add("%" + filterString + "%"); if (organizationId != null) { condition += " and e.organization.id = ?"; param.add(organizationId); } return find("Grade", condition, param.toArray(), sort, desc, start, rows); } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Get Grades By Organization Id Error!"); } return null; } public Long getTotalGradesByOrganizationId(String filterString, String organizationId) { try { if (filterString == null) { filterString = ""; } Collection param = new ArrayList(); String condition = "where (e.id like ? or e.name like ? or e.description like ?)"; param.add("%" + filterString + "%"); param.add("%" + filterString + "%"); param.add("%" + filterString + "%"); if (organizationId != null) { condition += " and e.organization.id = ?"; param.add(organizationId); } return count("Grade", condition, param.toArray()); } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Get Total Grades By Organization Id Error!"); } return 0L; } public Collection<Grade> findGrades(String condition, Object[] params, String sort, Boolean desc, Integer start, Integer rows) { try { return find("Grade", condition, params, sort, desc, start, rows); } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Find Grades Error!"); } return null; } public Long countGrades(String condition, Object[] params) { try { return count("Grade", condition, params); } catch (Exception e) { LogUtil.error(GradeDaoImpl.class.getName(), e, "Count Grades Error!"); } return 0L; } }