001/*-
002 * #%L
003 * HAPI FHIR - Core Library
004 * %%
005 * Copyright (C) 2014 - 2024 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.util;
021
022public enum VersionEnum {
023        V0_1,
024        V0_2,
025        V0_3,
026        V0_4,
027        V0_5,
028        V0_6,
029        V0_7,
030        V0_8,
031        V0_9,
032
033        V1_0,
034        V1_1,
035        V1_2,
036        V1_3,
037        V1_4,
038        V1_5,
039        V1_6,
040
041        V2_0,
042        V2_1,
043        V2_2,
044        V2_3,
045        V2_4,
046        V2_5,
047        V2_5_0,
048        V3_0_0,
049        V3_1_0,
050        V3_2_0,
051        V3_3_0,
052        V3_4_0,
053        V3_5_0,
054        V3_6_0,
055        V3_7_0,
056        V3_8_0,
057        V4_0_0,
058        V4_0_3,
059        V4_1_0,
060        V4_2_0,
061        @Deprecated
062        V4_3_0, // 4.3.0 was renamed to 5.0.0 during the cycle
063        V5_0_0,
064        V5_0_1,
065        V5_0_2,
066        V5_1_0,
067        V5_2_0,
068        V5_2_1,
069        V5_3_0,
070        V5_3_1,
071        V5_3_2,
072        V5_3_3,
073        V5_4_0,
074        V5_4_1,
075        V5_4_2,
076        V5_5_0,
077        V5_5_1,
078        V5_5_2,
079        V5_5_3,
080        V5_5_4,
081        V5_5_5,
082        V5_5_6,
083        V5_5_7,
084        V5_6_0,
085        V5_6_1,
086        V5_6_2,
087        V5_6_3,
088        V5_6_4,
089        V5_7_0,
090        V5_7_1,
091        V5_7_2,
092        V5_7_3,
093        V5_7_4,
094        V5_7_5,
095        V5_7_6,
096        V6_0_0,
097        V6_0_1,
098        V6_0_2,
099        V6_0_3,
100        V6_0_4,
101        V6_0_5,
102        V6_1_0,
103        V6_1_1,
104        V6_1_2,
105        V6_1_3,
106        V6_1_4,
107        V6_2_0,
108        V6_2_1,
109        V6_2_2,
110        V6_2_3,
111        V6_2_4,
112        V6_2_5,
113        // Dev Build
114        V6_3_0,
115
116        V6_4_0,
117        V6_4_1,
118        V6_4_2,
119        V6_4_3,
120        V6_4_4,
121        V6_4_5,
122        V6_4_6,
123
124        V6_5_0,
125
126        V6_6_0,
127        V6_6_1,
128        V6_6_2,
129
130        V6_7_0,
131        V6_8_0,
132        V6_8_1,
133        V6_8_2,
134        V6_8_3,
135        V6_8_4,
136        V6_8_5,
137        V6_8_6,
138        V6_8_7,
139        V6_8_8,
140
141        V6_9_0,
142
143        V6_10_0,
144        V6_10_1,
145        V6_10_2,
146        V6_10_3,
147        V6_10_4,
148        V6_10_5,
149
150        V6_11_0,
151
152        V7_0_0,
153        V7_0_1,
154        V7_0_2,
155        V7_0_3,
156
157        V7_1_0,
158        V7_2_0,
159        V7_2_1,
160        V7_2_2,
161        V7_2_3,
162
163        V7_3_0,
164        V7_4_0,
165        V7_4_1,
166        V7_4_2,
167        V7_4_3,
168        V7_4_4,
169        V7_4_5,
170
171        V7_5_0,
172        V7_6_0,
173        V7_7_0,
174        V7_8_0;
175
176        public static VersionEnum latestVersion() {
177                VersionEnum[] values = VersionEnum.values();
178                return values[values.length - 1];
179        }
180
181        public static VersionEnum forVersion(String theVersionString) {
182                String constantName = "V" + (theVersionString.replace('.', '_'));
183                return valueOf(constantName);
184        }
185
186        public boolean isNewerThan(VersionEnum theVersionEnum) {
187                return ordinal() > theVersionEnum.ordinal();
188        }
189
190        public String getVersionedDocsSlug() {
191                return this.name().replace("V", "").replaceAll("_", ".");
192        }
193}