/* * 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.OpenmrsMetadata; /** * Base template search class for {@link org.openmrs.OpenmrsMetadata} models. * @param <T> The model class. */ public class BaseMetadataTemplateSearch<T extends OpenmrsMetadata> extends BaseAuditableTemplateSearch<T> { public static final long serialVersionUID = 0L; private StringComparisonType nameComparisonType; private StringComparisonType descriptionComparisonType; private StringComparisonType retireReasonComparisonType; private DateComparisonType dateRetiredComparisonType; private Boolean includeRetired; public BaseMetadataTemplateSearch(T template) { this(template, StringComparisonType.EQUAL, null); } public BaseMetadataTemplateSearch(T template, Boolean includeRetired) { this(template, StringComparisonType.EQUAL, includeRetired); } public BaseMetadataTemplateSearch(T template, StringComparisonType nameComparisonType, Boolean includeRetired) { super(template); this.nameComparisonType = nameComparisonType; this.includeRetired = includeRetired; this.descriptionComparisonType = StringComparisonType.EQUAL; this.retireReasonComparisonType = StringComparisonType.EQUAL; this.dateRetiredComparisonType = DateComparisonType.EQUAL; } public StringComparisonType getNameComparisonType() { return nameComparisonType; } public void setNameComparisonType(StringComparisonType nameComparisonType) { this.nameComparisonType = nameComparisonType; } public StringComparisonType getDescriptionComparisonType() { return descriptionComparisonType; } public void setDescriptionComparisonType(StringComparisonType descriptionComparisonType) { this.descriptionComparisonType = descriptionComparisonType; } public StringComparisonType getRetireReasonComparisonType() { return retireReasonComparisonType; } public void setRetireReasonComparisonType(StringComparisonType retireReasonComparisonType) { this.retireReasonComparisonType = retireReasonComparisonType; } public DateComparisonType getDateRetiredComparisonType() { return dateRetiredComparisonType; } public void setDateRetiredComparisonType(DateComparisonType dateRetiredComparisonType) { this.dateRetiredComparisonType = dateRetiredComparisonType; } public Boolean getIncludeRetired() { return includeRetired; } public void setIncludeRetired(Boolean includeRetired) { this.includeRetired = includeRetired; } @Override public void updateCriteria(Criteria criteria) { super.updateCriteria(criteria); T t = getTemplate(); if (t.getName() != null) { criteria.add(createCriterion("name", t.getName(), nameComparisonType)); } if (t.getDescription() != null) { criteria.add(createCriterion("description", t.getName(), nameComparisonType)); } if (includeRetired != null) { if (!includeRetired) { criteria.add(Restrictions.eq("retired", false)); } } else if (t.isRetired() != null) { criteria.add(Restrictions.eq("retired", t.isRetired())); } if (t.getRetiredBy() != null) { criteria.add(Restrictions.eq("retiredBy", t.getRetiredBy())); } if (t.getDateRetired() != null) { criteria.add(createCriterion("dateRetired", t.getDateRetired(), dateRetiredComparisonType)); } if (t.getRetireReason() != null) { criteria.add(createCriterion("retireReason", t.getRetireReason(), retireReasonComparisonType)); } } }