/**
* 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.impl;
import java.util.ArrayList;
import java.util.List;
import org.openmrs.api.APIException;
import org.openmrs.api.context.Context;
import org.openmrs.api.impl.BaseOpenmrsService;
import org.openmrs.cohort.CohortSearchHistory;
import org.openmrs.reporting.AbstractReportObject;
import org.openmrs.reporting.PatientFilter;
import org.openmrs.reporting.PatientSearch;
import org.openmrs.reporting.PatientSearchReportObject;
import org.openmrs.reporting.ReportObjectFactory;
import org.openmrs.reporting.ReportObjectService;
import org.openmrs.reporting.db.ReportObjectDAO;
import org.openmrs.util.OpenmrsConstants;
/**
* @deprecated see reportingcompatibility module
*/
@Deprecated
public class ReportObjectServiceImpl extends BaseOpenmrsService implements ReportObjectService {
private ReportObjectDAO reportObjectDAO;
private ReportObjectFactory reportObjectFactory;
/**
* Default constructor
*/
public ReportObjectServiceImpl() {
new ReportObjectFactory(); // instantiate reportObjectFactory
this.reportObjectFactory = ReportObjectFactory.getInstance();
}
/**
* @see org.openmrs.reporting.ReportObjectService#setReportObjectDAO(org.openmrs.reporting.db.ReportObjectDAO)
*/
public void setReportObjectDAO(ReportObjectDAO dao) {
this.reportObjectDAO = dao;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getAllReportObjects()
*/
public List<AbstractReportObject> getAllReportObjects() {
return reportObjectDAO.getAllReportObjects();
}
/**
* @see org.openmrs.reporting.ReportObjectService#getReportObject(java.lang.Integer)
*/
public AbstractReportObject getReportObject(Integer reportObjectId) throws APIException {
return reportObjectDAO.getReportObject(reportObjectId);
}
/**
* @see org.openmrs.reporting.ReportObjectService#getReportObjectsByType(java.lang.String)
*/
public List<AbstractReportObject> getReportObjectsByType(String reportObjectType) throws APIException {
return reportObjectDAO.getReportObjectsByType(reportObjectType);
}
/**
* @see org.openmrs.reporting.ReportObjectService#getPatientSearch(java.lang.Integer)
*/
public PatientSearch getPatientSearch(Integer searchId) throws APIException {
return ((PatientSearchReportObject) getReportObject(searchId)).getPatientSearch();
}
/**
* @see org.openmrs.reporting.ReportObjectService#getAllPatientSearches()
*/
public List<PatientSearch> getAllPatientSearches() throws APIException {
List<PatientSearch> allSearches = new ArrayList<PatientSearch>();
List<AbstractReportObject> allMatchingObjects = getReportObjectsByType(OpenmrsConstants.REPORT_OBJECT_TYPE_PATIENTSEARCH);
if (allMatchingObjects != null) {
for (AbstractReportObject aro : allMatchingObjects) {
allSearches.add(((PatientSearchReportObject) aro).getPatientSearch());
}
}
return allSearches;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getPatientSearch(java.lang.String)
*/
public PatientSearch getPatientSearch(String name) throws APIException {
List<AbstractReportObject> allMatchingObjects = getReportObjectsByType(OpenmrsConstants.REPORT_OBJECT_TYPE_PATIENTSEARCH);
if (allMatchingObjects != null) {
for (AbstractReportObject aro : allMatchingObjects) {
if (aro.getName().equals(name))
return ((PatientSearchReportObject) aro).getPatientSearch();
}
}
return null;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getPatientFilterById(java.lang.Integer)
*/
public PatientFilter getPatientFilterById(Integer filterId) throws APIException {
return (PatientFilter) getReportObject(filterId);
}
/**
* @see org.openmrs.reporting.ReportObjectService#getPatientFilterByName(java.lang.String)
*/
public PatientFilter getPatientFilterByName(String filterName) throws APIException {
// TODO: push this into the DAO layer
for (PatientFilter pf : getAllPatientFilters()) {
AbstractReportObject o = (AbstractReportObject) pf;
if (filterName.equals(o.getName())) {
return pf;
}
}
return null;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getAllPatientFilters()
*/
public List<PatientFilter> getAllPatientFilters() throws APIException {
ArrayList<PatientFilter> allPatientFilters = new ArrayList<PatientFilter>();
List<AbstractReportObject> allMatchingObjects = getReportObjectsByType(OpenmrsConstants.REPORT_OBJECT_TYPE_PATIENTFILTER);
if (allMatchingObjects != null) {
for (AbstractReportObject aro : allMatchingObjects) {
allPatientFilters.add((PatientFilter) aro);
}
}
return allPatientFilters;
}
/**
* @see org.openmrs.reporting.ReportObjectService#createReportObject(org.openmrs.reporting.AbstractReportObject)
* @deprecated
*/
public Integer createReportObject(AbstractReportObject reportObject) throws APIException {
Context.getReportObjectService().saveReportObject(reportObject);
return reportObject.getReportObjectId();
}
/**
* @see org.openmrs.reporting.ReportObjectService#saveReportObject(org.openmrs.reporting.AbstractReportObject)
*/
public AbstractReportObject saveReportObject(AbstractReportObject reportObject) throws APIException {
return reportObjectDAO.saveReportObject(reportObject);
}
/**
* @see org.openmrs.reporting.ReportObjectService#deleteReport(org.openmrs.reporting.AbstractReportObject)
* @deprecated
*/
public void deleteReport(AbstractReportObject reportObject) throws APIException {
Context.getReportObjectService().purgeReportObject(reportObject);
}
/**
* @see org.openmrs.reporting.ReportObjectService#purgeReportObject(org.openmrs.reporting.AbstractReportObject)
*/
public void purgeReportObject(AbstractReportObject reportObject) throws APIException {
reportObjectDAO.deleteReportObject(reportObject);
}
/**
* @see org.openmrs.reporting.ReportObjectService#updateReportObject(org.openmrs.reporting.AbstractReportObject)
* @deprecated
*/
public void updateReportObject(AbstractReportObject reportObject) throws APIException {
Context.getReportObjectService().saveReportObject(reportObject);
}
/**
* @see org.openmrs.reporting.ReportObjectService#getReportObjectTypes()
*/
public List<String> getReportObjectTypes() {
List<String> availableTypes = this.reportObjectFactory.getReportObjectTypes();
return availableTypes;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getReportObjectSubTypes(java.lang.String)
*/
public List<String> getReportObjectSubTypes(String type) {
List<String> availableTypes = this.reportObjectFactory.getReportObjectSubTypes(type);
return availableTypes;
}
/**
* @see org.openmrs.reporting.ReportObjectService#isSubTypeOfType(java.lang.String,
* java.lang.String)
*/
public boolean isSubTypeOfType(String type, String subType) {
return this.reportObjectFactory.isSubTypeOfType(type, subType);
}
/**
* @see org.openmrs.reporting.ReportObjectService#getReportObjectClassBySubType(java.lang.String)
*/
public String getReportObjectClassBySubType(String subType) {
String className = this.reportObjectFactory.getReportObjectClassBySubType(subType);
return className;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getAllReportObjectClasses()
*/
public List<String> getAllReportObjectClasses() {
List<String> allClasses = this.reportObjectFactory.getAllReportObjectClasses();
return allClasses;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getReportObjectValidatorByClass(java.lang.String)
*/
public String getReportObjectValidatorByClass(String currentClassName) {
String validatorClass = this.reportObjectFactory.getReportObjectValidatorByClass(currentClassName);
return validatorClass;
}
/**
* @see org.openmrs.reporting.ReportObjectService#getDefaultReportObjectValidator()
*/
public String getDefaultReportObjectValidator() {
String defaultValidator = this.reportObjectFactory.getDefaultValidator();
return defaultValidator;
}
/**
* @see org.openmrs.reporting.ReportObjectService#createSearchHistory(org.openmrs.cohort.CohortSearchHistory)
* @deprecated
*/
public void createSearchHistory(CohortSearchHistory history) {
Context.getReportObjectService().saveSearchHistory(history);
}
/**
* @see org.openmrs.reporting.ReportObjectService#saveSearchHistory(org.openmrs.cohort.CohortSearchHistory)
*/
public CohortSearchHistory saveSearchHistory(CohortSearchHistory history) {
return (CohortSearchHistory) saveReportObject(history);
}
/**
* @see org.openmrs.reporting.ReportObjectService#deleteSearchHistory(org.openmrs.cohort.CohortSearchHistory)
* @deprecated
*/
public void deleteSearchHistory(CohortSearchHistory history) {
Context.getReportObjectService().purgeSearchHistory(history);
}
/**
* @see org.openmrs.reporting.ReportObjectService#purgeSearchHistory(org.openmrs.cohort.CohortSearchHistory)
*/
public void purgeSearchHistory(CohortSearchHistory history) {
purgeReportObject(history);
}
/**
* @see org.openmrs.reporting.ReportObjectService#getSearchHistory(java.lang.Integer)
*/
public CohortSearchHistory getSearchHistory(Integer reportObjectId) {
return (CohortSearchHistory) getReportObject(reportObjectId);
}
/**
* @see org.openmrs.reporting.ReportObjectService#getSearchHistories()
* @deprecated
*/
public List<CohortSearchHistory> getSearchHistories() {
return getAllSearchHistories();
}
/**
* @see org.openmrs.reporting.ReportObjectService#getAllSearchHistories()
*/
public List<CohortSearchHistory> getAllSearchHistories() {
List<AbstractReportObject> temp = getReportObjectsByType("Search History"); // TODO make this a constant
List<CohortSearchHistory> ret = new ArrayList<CohortSearchHistory>();
for (AbstractReportObject o : temp)
ret.add((CohortSearchHistory) o);
return ret;
}
}