Criteria processCrit = crit.createCriteria("process");
// Filtering on PID
List<String> pids = filter.getPidFilter();
if (pids != null && pids.size() > 0) {
Disjunction disj = Restrictions.disjunction();
for (String pid: pids) {
if( !filter.arePidsNegative() ) {
disj.add(Restrictions.eq("processId", pid));
} else {
disj.add(Restrictions.ne("processId", pid));
}
}
processCrit.add(disj);
}
List<String> iids = filter.getIidFilter();
if (iids != null && iids.size() > 0) {
Disjunction disj = Restrictions.disjunction();
for (String iid: iids) {
disj.add(Restrictions.eq("id", new Long(iid)));
}
crit.add(disj);
}
// Filtering on name and namespace
if (filter.getNameFilter() != null) {
processCrit.add(Restrictions.like("typeName", filter.getNameFilter().replaceAll("\\*", "%")));
}
if (filter.getNamespaceFilter() != null) {
processCrit.add(Restrictions.like("typeNamespace", filter.getNamespaceFilter().replaceAll("\\*", "%")));
}
// Specific filter for status (using a disjunction between possible statuses)
if (filter.getStatusFilter() != null) {
List<Short> statuses = filter.convertFilterState();
Disjunction disj = Restrictions.disjunction();
for (short status : statuses) {
disj.add(Restrictions.eq("state", status));
}
crit.add(disj);
}
// Specific filter for started and last active dates.