@SuppressWarnings("unused")
@Override
public List<JobInstance> load(int first, int pageSize, List<SortMeta> multiSortMeta, Map<String, String> filters)
{
// Pagination is very important here - we are querying a table that could count millions of rows
Query q = Query.create().setFirstRow(first).setPageSize(pageSize);
// Add filters
for (String key : filters.keySet())
{
if ("queue.name".equals(key))
{
q.setQueueName(filters.get(key));
}
else if ("h.id".equals(key))
{
q.setJobInstanceId(Integer.parseInt(filters.get(key)));
}
else if ("jd.applicationName".equals(key))
{
q.setApplicationName(filters.get(key));
}
else if ("h.user".equals(key))
{
q.setUser(filters.get(key));
}
else if ("h.parent".equals(key))
{
q.setParentId(Integer.parseInt(filters.get(key)));
}
else if ("jd.keyword1".equals(key))
{
q.setJobDefKeyword1(filters.get(key));
}
else if ("jd.keyword2".equals(key))
{
q.setJobDefKeyword2(filters.get(key));
}
else if ("jd.keyword3".equals(key))
{
q.setJobDefKeyword3(filters.get(key));
}
else if ("jd.application".equals(key))
{
q.setJobDefApplication(filters.get(key));
}
else if ("jd.module".equals(key))
{
q.setJobDefModule(filters.get(key));
}
}
if (this.fromFilter != null)
{
Calendar tCalendar = Calendar.getInstance();
tCalendar.setTime(fromFilter);
q.setBeganRunningAfter(tCalendar);
}
if (this.untilFilter != null)
{
Calendar tCalendar = Calendar.getInstance();
tCalendar.setTime(untilFilter);
q.setBeganRunningBefore(tCalendar);
}
// Add sorts
if (multiSortMeta == null && sortCache != null)
{
multiSortMeta = sortCache;
}
if (multiSortMeta != null)
{
sortCache = multiSortMeta;
for (SortMeta sm : multiSortMeta)
{
if ("queue.name".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.QUEUENAME) : q.addSortDesc(Sort.QUEUENAME);
}
else if ("h.id".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.ID) : q.addSortDesc(Sort.ID);
}
else if ("jd.applicationName".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.APPLICATIONNAME) : q
.addSortDesc(Sort.APPLICATIONNAME);
}
else if ("h.user".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.USERNAME) : q.addSortDesc(Sort.USERNAME);
}
else if ("h.parent".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.PARENTID) : q.addSortDesc(Sort.PARENTID);
}
else if ("h.enqueue".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.DATEENQUEUE) : q
.addSortDesc(Sort.DATEENQUEUE);
}
else if ("h.begin".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.DATEEXECUTION) : q
.addSortDesc(Sort.DATEENQUEUE);
}
else if ("h.end".equals(sm.getSortField()))
{
Object p = sm.getSortOrder().equals(SortOrder.ASCENDING) ? q.addSortAsc(Sort.DATEEND) : q.addSortDesc(Sort.DATEEND);
}
}
}
// Run the query
q.run();
this.setRowCount(q.getResultSize());
jiCache = q.getResults();
return q.getResults();
}