
001package org.hl7.fhir.r5.terminologies.utilities; 002 003import org.hl7.fhir.r5.model.Coding; 004import org.hl7.fhir.r5.model.DataType; 005import org.hl7.fhir.utilities.VersionUtilities; 006 007import java.security.AlgorithmParameterGenerator; 008 009public enum VersionAlgorithm { 010 Unknown, SemVer, Integer, Alpha, Date, Natural; 011 012 public static VersionAlgorithm fromType(DataType dt) { 013 if (dt == null) { 014 return Unknown; 015 } 016 if (dt instanceof Coding) { 017 return VersionAlgorithm.fromString(((Coding) dt).getCode()); 018 } else if (dt.isPrimitive()) { 019 return VersionAlgorithm.fromString(dt.primitiveValue()); 020 } else { 021 return Unknown; 022 } 023 } 024 025 private static VersionAlgorithm fromString(String code) { 026 if (code == null) { 027 return Unknown; 028 } 029 switch (code) { 030 case "semver": return SemVer; 031 case "integer": return Integer; 032 case "alpha" : return Alpha; 033 case "date": return Date; 034 case "natural": return Natural; 035 default: return Unknown; 036 } 037 } 038 039 public static VersionAlgorithm guessFormat(String result) { 040 if (VersionUtilities.isSemVerWithWildcards(result)) { 041 return SemVer; 042 } 043 return Alpha; 044 045 } 046}