/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2, as
* published by the Free Software Foundation, and/or the GNU Lesser
* General Public License, version 2.1, also as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License and the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License
* and the GNU Lesser General Public License along with this program;
* if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.rhq.core.domain.criteria;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.util.PageOrdering;
/**
* The criteria for fetching {@link Subject}s.
*
* @author Joseph Marques
*/
@XmlAccessorType(XmlAccessType.FIELD)
@SuppressWarnings("unused")
public class SubjectCriteria extends Criteria {
private static final long serialVersionUID = 2L;
private String filterName;
private String filterFirstName;
private String filterLastName;
private String filterEmailAddress;
private String filterSmsAddress;
private String filterPhoneNumber;
private String filterDepartment;
private Boolean filterFactive;
private Boolean filterFsystem;
private Integer filterRoleId; // needs overrides
private boolean fetchConfiguration;
private boolean fetchRoles;
private PageOrdering sortName;
private PageOrdering sortFirstName;
private PageOrdering sortLastName;
private PageOrdering sortEmailAddress;
private PageOrdering sortSmsAddress;
private PageOrdering sortPhoneNumber;
private PageOrdering sortDepartment;
public SubjectCriteria() {
filterOverrides.put("roleId", "" //
+ "id IN ( SELECT innerSubject.id " //
+ " FROM Subject innerSubject " //
+ " JOIN innerSubject.roles innerRole " //
+ " WHERE innerRole.id = ? )");
}
@Override
public Class<Subject> getPersistentClass() {
return Subject.class;
}
public void addFilterName(String filterName) {
this.filterName = filterName;
}
public void addFilterFirstName(String filterFirstName) {
this.filterFirstName = filterFirstName;
}
public void addFilterLastName(String filterLastName) {
this.filterLastName = filterLastName;
}
public void addFilterEmailAddress(String filterEmailAddress) {
this.filterEmailAddress = filterEmailAddress;
}
public void addFilterSmsAddress(String filterSmsAddress) {
this.filterSmsAddress = filterSmsAddress;
}
public void addFilterPhoneNumber(String filterPhoneNumber) {
this.filterPhoneNumber = filterPhoneNumber;
}
public void addFilterDepartment(String filterDepartment) {
this.filterDepartment = filterDepartment;
}
public void addFilterFactive(Boolean filterFactive) {
this.filterFactive = filterFactive;
}
public void addFilterFsystem(Boolean filterFsystem) {
this.filterFsystem = filterFsystem;
}
public void addFilterRoleId(Integer filterRoleId) {
this.filterRoleId = filterRoleId;
}
public void fetchConfiguration(boolean fetchConfiguration) {
this.fetchConfiguration = fetchConfiguration;
}
public void fetchRoles(boolean fetchRoles) {
this.fetchRoles = fetchRoles;
}
public void addSortName(PageOrdering sortName) {
addSortField("name");
this.sortName = sortName;
}
public void addSortFirstName(PageOrdering sortFirstName) {
addSortField("firstName");
this.sortFirstName = sortFirstName;
}
public void addSortLastName(PageOrdering sortLastName) {
addSortField("lastName");
this.sortLastName = sortLastName;
}
public void addSortEmailAddress(PageOrdering sortEmailAddress) {
addSortField("emailAddress");
this.sortEmailAddress = sortEmailAddress;
}
public void addSortSmsAddress(PageOrdering sortSmsAddress) {
addSortField("smsAddress");
this.sortSmsAddress = sortSmsAddress;
}
public void addSortPhoneNumber(PageOrdering sortPhoneNumber) {
addSortField("phoneNumber");
this.sortPhoneNumber = sortPhoneNumber;
}
public void addSortDepartment(PageOrdering sortDepartment) {
addSortField("department");
this.sortDepartment = sortDepartment;
}
}