package org.oep.dossiermgt.service.persistence;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.oep.dossiermgt.model.DossierProc;
import org.oep.dossiermgt.model.impl.DossierProcImpl;
import org.oep.dossiermgt.util.CustomSQLUtil;
import org.oep.dossiermgt.util.StringUtil;
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.ServiceContext;
import com.liferay.portal.service.persistence.impl.BasePersistenceImpl;
public class DossierProcFinderImpl extends BasePersistenceImpl implements DossierProcFinder {
private static final String COUNT_BY_LIKE_NAME = "countByLikeName";
private static final String FIND_BY_LIKE_NAME = "findByLikeName";
private static final String COUNT_BY_GROUP_LIKE_NAME = "countByGroupLikeName";
private static final String FIND_BY_GROUP_LIKE_NAME = "findByGroupLikeName";
private static final String COUNT_BY_CUSTOMCONDITION = "countByCustomCondition";
private static final String FIND_BY_CUSTOMCONDITION = "findByCustomCondition";
private static final String COUNT_BY_GROUP_CUSTOMCONDITION = "countByGroupCustomCondition";
private static final String FIND_BY_GROUP_CUSTOMCONDITION = "findByGroupCustomCondition";
public List<DossierProc> findByLikeName(String name, int startIndex, int endIndex, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProcFinder.class.getName(), FIND_BY_LIKE_NAME);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("DossierProc", DossierProcImpl.class);
if (params != null && params.size() > 0) {
for (int index = 0; index < params.size(); index++) {
query.setString(index, String.valueOf(params.get(index)));
}
}
return (List<DossierProc>) QueryUtil.list(query, getDialect(), startIndex, endIndex);
}
public int countByLikeName(String name, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProc.class.getName(), COUNT_BY_LIKE_NAME);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
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;
}
public List<DossierProc> findByGroupLikeName(String name, int startIndex, int endIndex, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProcFinder.class.getName(), FIND_BY_GROUP_LIKE_NAME);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
sql = sql.replace("[$GROUP_FILTER$]", " AND GROUPID = ?");
params.add(serviceContext.getScopeGroupId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("DossierProc", DossierProcImpl.class);
if (params != null && params.size() > 0) {
for (int index = 0; index < params.size(); index++) {
query.setString(index, String.valueOf(params.get(index)));
}
}
return (List<DossierProc>) QueryUtil.list(query, getDialect(), startIndex, endIndex);
}
public int countByGroupLikeName(String name, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProc.class.getName(), COUNT_BY_GROUP_LIKE_NAME);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
sql = sql.replace("[$GROUP_FILTER$]", " AND GROUPID = ?");
params.add(serviceContext.getScopeGroupId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
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;
}
public List<DossierProc> findByCustomCondition(String name, Date effectDate, Date expireDate, int active, int startIndex, int endIndex, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProcFinder.class.getName(), FIND_BY_CUSTOMCONDITION);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
if (effectDate != null) {
sql = sql.replace("[$EFFECTDATE_FILTER$]", " AND EFFECTDATE >= ?");
params.add(df.format(effectDate));
}
else {
sql = sql.replace("[$EFFECTDATE_FILTER$]", "");
}
if (expireDate != null) {
sql = sql.replace("[$EXPIREDATE_FILTER$]", " AND EXPIREDATE <= ?");
params.add(df.format(expireDate));
}
else {
sql = sql.replace("[$EXPIREDATE_FILTER$]", "");
}
if (active != -1) {
sql = sql.replace("[$ACTIVE_FILTER$]", " AND STATUSACTIVE = ?");
params.add(active);
}
else {
sql = sql.replace("[$ACTIVE_FILTER$]", "");
}
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("DossierProc", DossierProcImpl.class);
if (params != null && params.size() > 0) {
for (int index = 0; index < params.size(); index++) {
query.setString(index, String.valueOf(params.get(index)));
}
}
return (List<DossierProc>) QueryUtil.list(query, getDialect(), startIndex, endIndex);
}
public int countByCustomCondition(String name, Date effectDate, Date expireDate, int active, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProcFinder.class.getName(), COUNT_BY_CUSTOMCONDITION);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
if (effectDate != null) {
sql = sql.replace("[$EFFECTDATE_FILTER$]", " AND EFFECTDATE >= ?");
params.add(df.format(effectDate));
}
else {
sql = sql.replace("[$EFFECTDATE_FILTER$]", "");
}
if (expireDate != null) {
sql = sql.replace("[$EXPIREDATE_FILTER$]", " AND EXPIREDATE <= ?");
params.add(df.format(expireDate));
}
else {
sql = sql.replace("[$EXPIREDATE_FILTER$]", "");
}
if (active != -1) {
sql = sql.replace("[$ACTIVE_FILTER$]", " AND STATUSACTIVE = ?");
params.add(active);
}
else {
sql = sql.replace("[$ACTIVE_FILTER$]", "");
}
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;
}
public List<DossierProc> findByGroupCustomCondition(String name, String administrationNo, String domainNo, Date effectDate, Date expireDate, int active, int startIndex, int endIndex, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProcFinder.class.getName(), FIND_BY_GROUP_CUSTOMCONDITION);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
sql = sql.replace("[$GROUP_FILTER$]", " AND GROUPID = ?");
params.add(serviceContext.getScopeGroupId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
if (!StringUtil.isNullOrEmpty(administrationNo)) {
sql = sql.replace("[$ADMINISTRATIONNO_FILTER$]", " AND ADMINISTRATIONNO = ?");
params.add(administrationNo);
}
else {
sql = sql.replace("[$ADMINISTRATIONNO_FILTER$]", "");
}
if (!StringUtil.isNullOrEmpty(domainNo)) {
sql = sql.replace("[$DOMAINNO_FILTER$]", " AND DOMAINNO = ?");
params.add(domainNo);
}
else {
sql = sql.replace("[$DOMAINNO_FILTER$]", "");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
if (effectDate != null) {
sql = sql.replace("[$EFFECTDATE_FILTER$]", " AND EFFECTDATE >= ?");
params.add(df.format(effectDate));
}
else {
sql = sql.replace("[$EFFECTDATE_FILTER$]", "");
}
if (expireDate != null) {
sql = sql.replace("[$EXPIREDATE_FILTER$]", " AND EXPIREDATE <= ?");
params.add(df.format(expireDate));
}
else {
sql = sql.replace("[$EXPIREDATE_FILTER$]", "");
}
if (active != -1) {
sql = sql.replace("[$ACTIVE_FILTER$]", " AND STATUSACTIVE = ?");
params.add(active);
}
else {
sql = sql.replace("[$ACTIVE_FILTER$]", "");
}
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("DossierProc", DossierProcImpl.class);
if (params != null && params.size() > 0) {
for (int index = 0; index < params.size(); index++) {
query.setString(index, String.valueOf(params.get(index)));
}
}
return (List<DossierProc>) QueryUtil.list(query, getDialect(), startIndex, endIndex);
}
public int countByGroupCustomCondition(String name, String administrationNo, String domainNo, Date effectDate, Date expireDate, int active, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(DossierProcFinder.class.getName(), COUNT_BY_GROUP_CUSTOMCONDITION);
sql = sql.replace("[$COMPANY_FILTER$]", " AND COMPANYID = ?");
params.add(serviceContext.getCompanyId());
sql = sql.replace("[$GROUP_FILTER$]", " AND GROUPID = ?");
params.add(serviceContext.getScopeGroupId());
if (!StringUtil.isNullOrEmpty(name)) {
sql = sql.replace("[$NAME_FILTER$]", " AND LOWER(NAME) LIKE ?");
params.add("%" + name.toLowerCase() + "%");
}
else {
sql = sql.replace("[$NAME_FILTER$]", "");
}
if (!StringUtil.isNullOrEmpty(administrationNo)) {
sql = sql.replace("[$ADMINISTRATIONNO_FILTER$]", " AND ADMINISTRATIONNO = ?");
params.add(administrationNo);
}
else {
sql = sql.replace("[$ADMINISTRATIONNO_FILTER$]", "");
}
if (!StringUtil.isNullOrEmpty(domainNo)) {
sql = sql.replace("[$DOMAINNO_FILTER$]", " AND DOMAINNO = ?");
params.add(domainNo);
}
else {
sql = sql.replace("[$DOMAINNO_FILTER$]", "");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
if (effectDate != null) {
sql = sql.replace("[$EFFECTDATE_FILTER$]", " AND EFFECTDATE >= ?");
params.add(df.format(effectDate));
}
else {
sql = sql.replace("[$EFFECTDATE_FILTER$]", "");
}
if (expireDate != null) {
sql = sql.replace("[$EXPIREDATE_FILTER$]", " AND EXPIREDATE <= ?");
params.add(df.format(expireDate));
}
else {
sql = sql.replace("[$EXPIREDATE_FILTER$]", "");
}
if (active != -1) {
sql = sql.replace("[$ACTIVE_FILTER$]", " AND STATUSACTIVE = ?");
params.add(active);
}
else {
sql = sql.replace("[$ACTIVE_FILTER$]", "");
}
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;
}
}