InversePatientFilter.java

/**
 * The contents of this file are subject to the OpenMRS Public License
 * Version 1.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://license.openmrs.org
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * Copyright (C) OpenMRS, LLC.  All Rights Reserved.
 */
package org.openmrs.reporting;

import java.util.ArrayList;
import java.util.List;

import org.openmrs.Cohort;
import org.openmrs.report.EvaluationContext;
import org.openmrs.report.Parameter;
import org.openmrs.report.Parameterizable;

/**
 * @deprecated see reportingcompatibility module
 */
@Deprecated
public class InversePatientFilter extends AbstractPatientFilter implements PatientFilter, Parameterizable {
	
	private static final long serialVersionUID = -3206254139003809474L;
	
	private PatientFilter baseFilter;
	
	public InversePatientFilter() {
	}
	
	public InversePatientFilter(PatientFilter baseFilter) {
		this();
		this.baseFilter = baseFilter;
	}
	
	public PatientFilter getBaseFilter() {
		return baseFilter;
	}
	
	public void setBaseFilter(PatientFilter baseFilter) {
		this.baseFilter = baseFilter;
	}
	
	/**
	 * (The following at-should unit tests should really be distributed across many other classes,
	 * but it's much faster to put them all here.)
	 * 
	 * @should not fail with drug order filter
	 * @should not fail with drug order stop filter
	 * @should not fail with encounter patient filter
	 * @should not fail with location patient filter
	 * @should not fail with obs patient filter
	 * @should not fail with patient characteristic filter
	 * @should not fail with person attribute filter
	 * @should not fail with program state patient filter
	 * @should not fail with compound patient filter
	 * @should not fail with drug order patient filter
	 * @should not fail with program patient filter
	 */
	public Cohort filter(Cohort input, EvaluationContext context) {
		return baseFilter.filterInverse(input, context);
	}
	
	public Cohort filterInverse(Cohort input, EvaluationContext context) {
		return baseFilter.filter(input, context);
	}
	
	public boolean isReadyToRun() {
		// TODO Auto-generated method stub
		return baseFilter != null;
	}
	
	public String getDescription() {
		return "NOT " + (baseFilter == null ? "?" : baseFilter.getDescription());
	}
	
	/**
	 * @see org.openmrs.report.Parameterizable#getParameters()
	 */
	public List<Parameter> getParameters() {
		return new ArrayList<Parameter>();
	}
	
}