/*
* RHQ Management Platform
* Copyright (C) 2011 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 as published by
* the Free Software Foundation version 2 of the License.
*
* 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 for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.core.domain.criteria;
import static org.rhq.core.domain.util.CriteriaUtils.getListIgnoringNulls;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.rhq.core.domain.drift.DriftCategory;
import org.rhq.core.domain.drift.DriftChangeSetCategory;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageOrdering;
/**
* The generic implementation of DriftChangeSetCriteria makes no assumptions about the actual drift server
* plugin that will service the relevant requests. It is a simple impl of the interface and is
* suitable for use by any component that can not assume a backend implmentation, like a GUI
* client. Server side implementations will use this to populate the plugin-specific implementation
* of the interface.
*
* @author Jay Shaughnessy
* @author John Sanda
*/
public class GenericDriftChangeSetCriteria implements Serializable, DriftChangeSetCriteria {
private static final long serialVersionUID = 2L;
private String filterId;
private String filterVersion;
private String filterStartVersion;
private String filterEndVersion;
private Long filterCreatedAfter;
private Long filterCreatedBefore;
private Integer filterResourceId;
private Integer filterDriftDefId;
private DriftChangeSetCategory filterCategory;
private List<DriftCategory> filterDriftCategories;
private String filterDriftDirectory;
private String filterDriftPath;
private boolean fetchDrifts;
private PageOrdering sortId;
private PageOrdering sortVersion;
private PageControl pageControl;
private boolean strict;
@Override
public void addFilterVersion(String filterVersion) {
this.filterVersion = filterVersion;
}
@Override
public String getFilterVersion() {
return filterVersion;
}
@Override
public void addFilterStartVersion(String filterStartVersion) {
this.filterStartVersion = filterStartVersion;
}
@Override
public String getFilterStartVersion() {
return filterStartVersion;
}
@Override
public void addFilterEndVersion(String filterEndVersion) {
this.filterEndVersion = filterEndVersion;
}
@Override
public String getFilterEndVersion() {
return filterEndVersion;
}
@Override
public void addFilterCreatedAfter(Long filterCreatedAfter) {
this.filterCreatedAfter = filterCreatedAfter;
}
@Override
public Long getFilterCreatedAfter() {
return filterCreatedAfter;
}
@Override
public void addFilterCreatedBefore(Long filterCreatedBefore) {
this.filterCreatedBefore = filterCreatedBefore;
}
@Override
public Long getFilterCreatedBefore() {
return filterCreatedBefore;
}
@Override
public void addFilterResourceId(Integer filterResourceId) {
this.filterResourceId = filterResourceId;
}
@Override
public Integer getFilterResourceId() {
return filterResourceId;
}
@Override
public void addFilterDriftDefinitionId(Integer filterDriftDefId) {
this.filterDriftDefId = filterDriftDefId;
}
@Override
public Integer getFilterDriftDefinitionId() {
return filterDriftDefId;
}
@Override
public void addFilterCategory(DriftChangeSetCategory filterCategory) {
this.filterCategory = filterCategory;
}
@Override
public DriftChangeSetCategory getFilterCategory() {
return filterCategory;
}
@Override
public void addFilterDriftCategories(DriftCategory... filterDriftCategories) {
this.filterDriftCategories = getListIgnoringNulls(filterDriftCategories);
}
@Override
public List<DriftCategory> getFilterDriftCategories() {
return filterDriftCategories;
}
@Override
public void addFilterDriftPath(String filterDriftPath) {
this.filterDriftPath = filterDriftPath;
}
@Override
public String getFilterDriftPath() {
return this.filterDriftPath;
}
@Override
public void addFilterDriftDirectory(String filterDriftDirectory) {
// this requires strict equality
if (null != filterDriftDirectory) {
setStrict(true);
}
this.filterDriftDirectory = filterDriftDirectory;
}
@Override
public String getFilterDriftDirectory() {
return this.filterDriftDirectory;
}
@Override
public void fetchDrifts(boolean fetchDrifts) {
this.fetchDrifts = fetchDrifts;
}
@Override
public boolean isFetchDrifts() {
return fetchDrifts;
}
@Override
public void addSortId(PageOrdering sortId) {
this.sortId = sortId;
}
@Override
public void addSortVersion(PageOrdering sortVersion) {
this.sortVersion = sortVersion;
}
@Override
public PageOrdering getSortVersion() {
return sortVersion;
}
@Override
public PageControl getPageControlOverrides() {
return pageControl;
}
@Override
public void setPageControl(PageControl pageControl) {
this.pageControl = pageControl;
}
@Override
public void setStrict(boolean strict) {
this.strict = strict;
}
@Override
public boolean isStrict() {
return this.strict;
}
@Override
public void setPaging(int pageNumber, int pageSize) {
pageControl.setPageNumber(pageNumber);
pageControl.setPageSize(pageSize);
}
@Override
public List<String> getOrderingFieldNames() {
List<String> result = new ArrayList<String>(2);
if (null != sortId) {
result.add("id");
}
if (null != sortVersion) {
result.add("version");
}
return result;
}
@Override
public void addFilterId(String filterId) {
this.filterId = filterId;
}
@Override
public String getFilterId() {
return filterId;
}
}