package org.oep.ssomgt.service.persistence;
import java.util.ArrayList;
import java.util.List;
import org.oep.ssomgt.model.UserSync;
import org.oep.ssomgt.model.impl.UserSyncImpl;
import org.oep.ssomgt.util.CustomSQLUtil;
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 UserSyncFinderImpl extends BasePersistenceImpl implements UserSyncFinder {
private static final String COUNT_BY_APPLICATION_SYNC = "countByApplicationSync";
private static final String FIND_BY_APPLICATION_SYNC = "findByApplicationSync";
public List<UserSync> findByApplicationSync(long applicationId, boolean isSync, int startIndex, int endIndex, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(UserSyncFinder.class.getName(), FIND_BY_APPLICATION_SYNC);
sql = sql.replace("[$COMPANY_FILTER$]", "");
sql = sql.replace("[$GROUP_FILTER$]", "");
if (applicationId != 0) {
sql = sql.replace("[$APPLICATION_FILTER$]", " AND applicationId=?");
params.add(applicationId);
}
else {
sql = sql.replace("[$APPLICATION_FILTER$]", "");
}
if (isSync) {
sql = sql.replace("[$SYNCTIME_FILTER$]", "AND (UNIX_TIMESTAMP(syncTime)!=0 OR syncTime IS NOT NULL)");
}
else {
sql = sql.replace("[$SYNCTIME_FILTER$]", " AND (UNIX_TIMESTAMP(syncTime)=0 OR syncTIME IS NULL)");
}
System.out.println("SQL: " +sql);
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("UserSync", UserSyncImpl.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<UserSync>) QueryUtil.list(query, getDialect(), startIndex, endIndex);
}
public int countByApplicationSync(long applicationId, boolean isSync, ServiceContext serviceContext) {
List<Object> params = new ArrayList<Object>();
Session session = openSession();
String sql = CustomSQLUtil.get(UserSyncFinder.class.getName(), COUNT_BY_APPLICATION_SYNC);
sql = sql.replace("[$COMPANY_FILTER$]", "");
sql = sql.replace("[$GROUP_FILTER$]", "");
if (applicationId != 0) {
sql = sql.replace("[$APPLICATION_FILTER$]", " AND applicationId=?");
params.add(applicationId);
}
else {
sql = sql.replace("[$APPLICATION_FILTER$]", "");
}
if (isSync) {
sql = sql.replace("[$SYNCTIME_FILTER$]", "AND (UNIX_TIMESTAMP(syncTime)!=0 OR syncTime IS NOT NULL)");
}
else {
sql = sql.replace("[$SYNCTIME_FILTER$]", " AND (UNIX_TIMESTAMP(syncTime)=0 OR syncTIME IS NULL)");
}
System.out.println("SQL: " +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;
}
}