001/* 002 * #%L 003 * HAPI FHIR - Core Library 004 * %% 005 * Copyright (C) 2014 - 2023 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.gclient; 021 022import ca.uhn.fhir.rest.param.ParamPrefixEnum; 023 024/** 025 * Token parameter type for use in fluent client interfaces 026 */ 027public class NumberClientParam extends BaseClientParam implements IParam { 028 029 private final String myParamName; 030 031 public NumberClientParam(String theParamName) { 032 myParamName = theParamName; 033 } 034 035 public IMatches<ICriterion<NumberClientParam>> exactly() { 036 return new IMatches<ICriterion<NumberClientParam>>() { 037 @Override 038 public ICriterion<NumberClientParam> number(long theNumber) { 039 return new StringCriterion<>(getParamName(), Long.toString(theNumber)); 040 } 041 042 @Override 043 public ICriterion<NumberClientParam> number(String theNumber) { 044 return new StringCriterion<>(getParamName(), (theNumber)); 045 } 046 }; 047 } 048 049 @Override 050 public String getParamName() { 051 return myParamName; 052 } 053 054 public IMatches<ICriterion<NumberClientParam>> greaterThan() { 055 return new IMatches<ICriterion<NumberClientParam>>() { 056 @Override 057 public ICriterion<NumberClientParam> number(long theNumber) { 058 return new StringCriterion<>(getParamName(), ParamPrefixEnum.GREATERTHAN, Long.toString(theNumber)); 059 } 060 061 @Override 062 public ICriterion<NumberClientParam> number(String theNumber) { 063 return new StringCriterion<>(getParamName(), ParamPrefixEnum.GREATERTHAN, (theNumber)); 064 } 065 }; 066 } 067 068 public IMatches<ICriterion<NumberClientParam>> greaterThanOrEqual() { 069 return new IMatches<ICriterion<NumberClientParam>>() { 070 @Override 071 public ICriterion<NumberClientParam> number(long theNumber) { 072 return new StringCriterion<>(getParamName(), ParamPrefixEnum.GREATERTHAN_OR_EQUALS, Long.toString(theNumber)); 073 } 074 075 @Override 076 public ICriterion<NumberClientParam> number(String theNumber) { 077 return new StringCriterion<>(getParamName(), ParamPrefixEnum.GREATERTHAN_OR_EQUALS, (theNumber)); 078 } 079 }; 080 } 081 082 public IMatches<ICriterion<NumberClientParam>> lessThan() { 083 return new IMatches<ICriterion<NumberClientParam>>() { 084 @Override 085 public ICriterion<NumberClientParam> number(long theNumber) { 086 return new StringCriterion<>(getParamName(), ParamPrefixEnum.LESSTHAN, Long.toString(theNumber)); 087 } 088 089 @Override 090 public ICriterion<NumberClientParam> number(String theNumber) { 091 return new StringCriterion<>(getParamName(), ParamPrefixEnum.LESSTHAN, (theNumber)); 092 } 093 }; 094 } 095 096 public IMatches<ICriterion<NumberClientParam>> lessThanOrEqual() { 097 return new IMatches<ICriterion<NumberClientParam>>() { 098 @Override 099 public ICriterion<NumberClientParam> number(long theNumber) { 100 return new StringCriterion<>(getParamName(), ParamPrefixEnum.LESSTHAN_OR_EQUALS, Long.toString(theNumber)); 101 } 102 103 @Override 104 public ICriterion<NumberClientParam> number(String theNumber) { 105 return new StringCriterion<>(getParamName(), ParamPrefixEnum.LESSTHAN_OR_EQUALS, (theNumber)); 106 } 107 }; 108 } 109 110 public IMatches<ICriterion<NumberClientParam>> withPrefix(final ParamPrefixEnum thePrefix) { 111 return new IMatches<ICriterion<NumberClientParam>>() { 112 @Override 113 public ICriterion<NumberClientParam> number(long theNumber) { 114 return new StringCriterion<>(getParamName(), thePrefix, Long.toString(theNumber)); 115 } 116 117 @Override 118 public ICriterion<NumberClientParam> number(String theNumber) { 119 return new StringCriterion<>(getParamName(), thePrefix, (theNumber)); 120 } 121 }; 122 } 123 124 public interface IMatches<T> { 125 /** 126 * Creates a search criterion that matches against the given number 127 * 128 * @param theNumber 129 * The number 130 * @return A criterion 131 */ 132 T number(long theNumber); 133 134 /** 135 * Creates a search criterion that matches against the given number 136 * 137 * @param theNumber 138 * The number 139 * @return A criterion 140 */ 141 T number(String theNumber); 142 } 143 144}