/* * The contents of this file are subject to the OpenMRS Public License * Version 2.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.module.openhmis.commons.api.entity.search; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.openmrs.OpenmrsData; /** * Base template search class for {@link org.openmrs.OpenmrsData} models. * @param <T> The model class. */ public class BaseDataTemplateSearch<T extends OpenmrsData> extends BaseAuditableTemplateSearch<T> { public static final long serialVersionUID = 0L; private DateComparisonType dateVoidedComparisonType; private StringComparisonType voidReasonComparisonType; private Boolean includeVoided; public BaseDataTemplateSearch(T template) { this(template, null); } public BaseDataTemplateSearch(T template, Boolean includeVoided) { super(template); this.includeVoided = includeVoided; this.dateVoidedComparisonType = DateComparisonType.EQUAL; this.voidReasonComparisonType = StringComparisonType.EQUAL; } public DateComparisonType getDateVoidedComparisonType() { return dateVoidedComparisonType; } public void setDateVoidedComparisonType(DateComparisonType dateVoidedComparisonType) { this.dateVoidedComparisonType = dateVoidedComparisonType; } public StringComparisonType getVoidReasonComparisonType() { return voidReasonComparisonType; } public void setVoidReasonComparisonType(StringComparisonType voidReasonComparisonType) { this.voidReasonComparisonType = voidReasonComparisonType; } public boolean getIncludeVoided() { return includeVoided; } public void setIncludeVoided(boolean includeVoided) { this.includeVoided = includeVoided; } @Override public void updateCriteria(Criteria criteria) { super.updateCriteria(criteria); T t = getTemplate(); if (includeVoided != null) { if (!includeVoided) { criteria.add(Restrictions.eq("voided", false)); } } else if (t.isVoided() != null) { criteria.add(Restrictions.eq("voided", t.isVoided())); } if (t.getVoidedBy() != null) { criteria.add(Restrictions.eq("voidedBy", t.getVoidedBy())); } if (t.getDateVoided() != null) { criteria.add(createCriterion("dateVoided", t.getDateVoided(), dateVoidedComparisonType)); } if (t.getVoidReason() != null) { criteria.add(createCriterion("voidReason", t.getVoidReason(), voidReasonComparisonType)); } } }