package org.oep.usermgt.service.persistence; import java.util.ArrayList; import java.util.List; import org.oep.usermgt.model.Employee; import org.oep.usermgt.model.impl.EmployeeImpl; import org.oep.usermgt.service.persistence.EmployeeFinder; import com.liferay.portal.kernel.dao.orm.QueryUtil; import com.liferay.portal.kernel.dao.orm.SQLQuery; import com.liferay.portal.kernel.dao.orm.Session; import com.liferay.portal.kernel.dao.orm.Type; import com.liferay.portal.service.persistence.impl.BasePersistenceImpl; import com.liferay.util.dao.orm.CustomSQLUtil; public class EmployeeFinderImpl extends BasePersistenceImpl implements EmployeeFinder{ private static final String COUNT_BY_CUSTOMCONDITION = EmployeeFinder.class.getName() + ".countByCustomCondition"; private static final String FIND_BY_LIKENAMEFORVIEW = EmployeeFinder.class.getName() + ".findByLikeNameForView"; private static final String FIND_BY_LIKENAME = EmployeeFinder.class.getName() + ".findByLikeName"; private static final String COUNT_BY_LIKENAME = EmployeeFinder.class.getName() + ".countByLikeName"; public List<Employee> findByLikeName(String textSearch, long workingUnitId) { List<Object> params = new ArrayList<Object>(); Session session = openSession(); String sql = CustomSQLUtil.get(FIND_BY_LIKENAME); if (textSearch != null && !"".equals(textSearch)) { sql = sql.replace("[$NAME_FILTER$]", " AND (LOWER(FULLNAME) LIKE ? OR LOWER(PERSONELDOCNO) LIKE ?)"); params.add("%" + textSearch.toLowerCase() + "%"); params.add("%" + textSearch.toLowerCase() + "%"); } else { sql = sql.replace("[$NAME_FILTER$]", ""); } if (workingUnitId > 0) { sql = sql.replace("[$WORKINGUNIT_FILTER$]", " AND WORKINGUNITID = ?"); params.add(workingUnitId); } else { sql = sql.replace("[$WORKINGUNIT_FILTER$]", ""); } //System.out.println(" kkkkkkkkkkkkkkkkkkkk " + sql); SQLQuery query = session.createSQLQuery(sql); query.addEntity("Employee", EmployeeImpl.class); if (params != null && params.size() > 0) { for (int index = 0; index < params.size(); index++) { query.setString(index, String.valueOf(params.get(index))); } } if (query.list() != null){ return (List<Employee>) query.list(); } return new ArrayList<Employee>(); //return (List<WorkingUnit>) query.list(); } public List<Employee> findByLikeName(String textSearch, long workingUnitId, int startIndex, int endIndex) { List<Object> params = new ArrayList<Object>(); Session session = openSession(); String sql = CustomSQLUtil.get(FIND_BY_LIKENAME); if (textSearch != null && !"".equals(textSearch)) { sql = sql.replace("[$NAME_FILTER$]", " AND (LOWER(FULLNAME) LIKE ? OR LOWER(PERSONELDOCNO) LIKE ?)"); params.add("%" + textSearch.toLowerCase() + "%"); params.add("%" + textSearch.toLowerCase() + "%"); } else { sql = sql.replace("[$NAME_FILTER$]", ""); } if (workingUnitId > 0) { sql = sql.replace("[$WORKINGUNIT_FILTER$]", " AND WORKINGUNITID = ?"); params.add(workingUnitId); } else { sql = sql.replace("[$WORKINGUNIT_FILTER$]", ""); } //System.out.println(" kkkkkkkkkkkkkkkkkkkk " + sql); SQLQuery query = session.createSQLQuery(sql); query.addEntity("Employee", EmployeeImpl.class); if (params != null && params.size() > 0) { for (int index = 0; index < params.size(); index++) { query.setString(index, String.valueOf(params.get(index))); } } if (query.list() != null){ return (List<Employee>) QueryUtil.list(query, getDialect(), startIndex, endIndex); } return new ArrayList<Employee>(); //return (List<WorkingUnit>) query.list(); } public List<Object[]> findByLikeNameForView(String textSearch, long workingUnitId) { List<Object> params = new ArrayList<Object>(); Session session = openSession(); String sql = CustomSQLUtil.get(FIND_BY_LIKENAMEFORVIEW); if (textSearch != null && !"".equals(textSearch)) { sql = sql.replace("[$NAME_FILTER$]", " AND (LOWER(emp.fullNme) LIKE ? OR LOWER(emp.personelDocNo) LIKE ?)"); params.add("%" + textSearch.toLowerCase() + "%"); params.add("%" + textSearch.toLowerCase() + "%"); } else { sql = sql.replace("[$NAME_FILTER$]", ""); } if (workingUnitId > 0) { sql = sql.replace("[$WORKINGUNIT_FILTER$]", " AND emp.workingUnitId = ?"); params.add(workingUnitId); } else { sql = sql.replace("[$WORKINGUNIT_FILTER$]", ""); } //System.out.println(" kkkkkkkkkkkkkkkkkkkk " + sql); SQLQuery query = session.createSQLQuery(sql); query.addEntity("Employee", EmployeeImpl.class); query.addScalar("workingUnitName",Type.STRING); query.addScalar("jobPosName",Type.STRING); query.addScalar("screenName",Type.STRING); if (params != null && params.size() > 0) { for (int index = 0; index < params.size(); index++) { query.setString(index, String.valueOf(params.get(index))); } } if (query.list() != null){ return (List) query.list(); } return new ArrayList(); //return (List<WorkingUnit>) query.list(); } public List<Object[]> findByLikeNameForView(String textSearch, long workingUnitId, int startIndex, int endIndex) { List<Object> params = new ArrayList<Object>(); Session session = openSession(); String sql = CustomSQLUtil.get(FIND_BY_LIKENAMEFORVIEW); if (textSearch != null && !"".equals(textSearch)) { sql = sql.replace("[$NAME_FILTER$]", " AND (LOWER(emp.fullName) LIKE ? OR LOWER(emp.personelDocNo) LIKE ?)"); params.add("%" + textSearch.toLowerCase() + "%"); params.add("%" + textSearch.toLowerCase() + "%"); } else { sql = sql.replace("[$NAME_FILTER$]", ""); } if (workingUnitId > 0) { sql = sql.replace("[$WORKINGUNIT_FILTER$]", " AND emp.workingUnitId = ?"); params.add(workingUnitId); } else { sql = sql.replace("[$WORKINGUNIT_FILTER$]", ""); } //System.out.println(" kkkkkkkkkkkkkkkkkkkk " + sql); SQLQuery query = session.createSQLQuery(sql); query.addEntity("Employee", EmployeeImpl.class); query.addScalar("workingUnitName",Type.STRING); query.addScalar("jobPosName",Type.STRING); query.addScalar("screenName",Type.STRING); if (params != null && params.size() > 0) { for (int index = 0; index < params.size(); index++) { query.setString(index, String.valueOf(params.get(index))); } } if (query.list() != null){ return (List) QueryUtil.list(query, getDialect(), startIndex, endIndex); } return new ArrayList(); //return (List<WorkingUnit>) query.list(); } public int countByLikeName(String textSearch, long workingUnitId) { List<Object> params = new ArrayList<Object>(); Session session = openSession(); String sql = CustomSQLUtil.get(COUNT_BY_LIKENAME); //System.out.println(" iiiiiiiiiiiiiiiiiiii " + sql); if (textSearch != null && !"".equals(textSearch)) { sql = sql.replace("[$NAME_FILTER$]", " AND (LOWER(FULLNAME) LIKE ? OR LOWER(PERSONELDOCNO) LIKE ?)"); params.add("%" + textSearch.toLowerCase() + "%"); params.add("%" + textSearch.toLowerCase() + "%"); } else { sql = sql.replace("[$NAME_FILTER$]", ""); } if (workingUnitId > 0) { sql = sql.replace("[$WORKINGUNIT_FILTER$]", " AND WORKINGUNITID = ?"); params.add(workingUnitId); } else { sql = sql.replace("[$WORKINGUNIT_FILTER$]", ""); } //System.out.println(" iiiiiiiiiiiiiiiiiiii " + sql); SQLQuery query = session.createSQLQuery(sql); query.addScalar("total", Type.LONG); if (params != null && params.size() > 0) { for (int index = 0; index < params.size(); index++) { query.setString(index, String.valueOf(params.get(index))); } } List temps = query.list(); if (temps != null && temps.size() > 0) { Long total = (Long) temps.get(0); return total.intValue(); } return 0; } }