001package ca.uhn.fhir.jpa.searchparam;
002
003/*-
004 * #%L
005 * HAPI FHIR Search Parameters
006 * %%
007 * Copyright (C) 2014 - 2022 Smile CDR, Inc.
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 *
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 *
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import ca.uhn.fhir.context.RuntimeResourceDefinition;
024import ca.uhn.fhir.interceptor.model.RequestPartitionId;
025import org.hl7.fhir.instance.model.api.IBaseResource;
026
027/**
028 * A resource type along with a search parameter map and partition id.  Everything you need to perform a search!
029 */
030public class ResourceSearch {
031        private final RuntimeResourceDefinition myRuntimeResourceDefinition;
032        private final SearchParameterMap mySearchParameterMap;
033        private final RequestPartitionId myRequestPartitionId;
034
035        public ResourceSearch(RuntimeResourceDefinition theRuntimeResourceDefinition, SearchParameterMap theSearchParameterMap, RequestPartitionId theRequestPartitionId) {
036                myRuntimeResourceDefinition = theRuntimeResourceDefinition;
037                mySearchParameterMap = theSearchParameterMap;
038                myRequestPartitionId = theRequestPartitionId;
039        }
040
041        public RuntimeResourceDefinition getRuntimeResourceDefinition() {
042                return myRuntimeResourceDefinition;
043        }
044
045        public SearchParameterMap getSearchParameterMap() {
046                return mySearchParameterMap;
047        }
048
049        public String getResourceName() {
050                return myRuntimeResourceDefinition.getName();
051        }
052
053        public boolean isDeleteExpunge() {
054                return mySearchParameterMap.isDeleteExpunge();
055        }
056
057        public Class<? extends IBaseResource> getResourceType() {
058                return myRuntimeResourceDefinition.getImplementingClass();
059        }
060
061        public RequestPartitionId getRequestPartitionId() {
062                return myRequestPartitionId;
063        }
064}