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