
001/* 002 * #%L 003 * HAPI FHIR - Core Library 004 * %% 005 * Copyright (C) 2014 - 2025 Smile CDR, Inc. 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package ca.uhn.fhir.rest.api; 021 022import ca.uhn.fhir.i18n.Msg; 023import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException; 024import ca.uhn.fhir.util.UrlUtil; 025 026import java.util.HashMap; 027import java.util.Map; 028 029public enum SearchIncludeDeletedEnum { 030 031 /** 032 * default, search on the non-deleted resources 033 */ 034 NEVER("never"), 035 036 /** 037 * search on the deleted resources only 038 */ 039 EXCLUSIVE("exclusive"), 040 041 /** 042 * Search on the non-deleted resources and deleted resources. 043 */ 044 BOTH("both"); 045 046 private static Map<String, SearchIncludeDeletedEnum> ourCodeToEnum; 047 private final String myCode; 048 049 SearchIncludeDeletedEnum(String theCode) { 050 myCode = theCode; 051 } 052 053 public String getCode() { 054 return myCode; 055 } 056 057 public static SearchIncludeDeletedEnum fromCode(String theCode) { 058 Map<String, SearchIncludeDeletedEnum> codeToEnum = ourCodeToEnum; 059 if (codeToEnum == null) { 060 codeToEnum = new HashMap<>(); 061 for (SearchIncludeDeletedEnum next : values()) { 062 codeToEnum.put(next.getCode(), next); 063 } 064 ourCodeToEnum = codeToEnum; 065 } 066 067 SearchIncludeDeletedEnum retVal = codeToEnum.get(theCode); 068 if (retVal == null) { 069 throw new InvalidRequestException(Msg.code(2741) + "Invalid \"" + Constants.PARAM_INCLUDE_DELETED 070 + "\" mode: " + UrlUtil.sanitizeUrlPart(theCode)); 071 } 072 073 return retVal; 074 } 075}