001package org.hl7.fhir.utilities.npm; 002 003import java.time.Instant; 004import java.util.Comparator; 005 006import org.hl7.fhir.utilities.Utilities; 007 008public class PackageInfo { 009 private final String id; 010 private final String version; 011 private final String fhirVersion; 012 private final String description; 013 private final String url; 014 private final String canonical; 015 private Instant date; 016 017 public PackageInfo(String id, String version, String fhirVersion, String description, String url, String canonical, Instant date) { 018 this(id, version, fhirVersion, description, url, canonical, null, date); 019 } 020 021 public PackageInfo(String id, String version, String fhirVersion, String description, String url, String canonical, String address, Instant date) { 022 super(); 023 this.id = id; 024 this.version = version; 025 this.fhirVersion = fhirVersion; 026 this.description = description; 027 if (url == null && id != null && version != null) { 028 this.url = Utilities.pathURL(address, id, version); 029 } else { 030 this.url = url; 031 } 032 this.canonical = canonical; 033 this.date = date; 034 } 035 036 public String getId() { 037 return id; 038 } 039 040 public String getVersion() { 041 return version; 042 } 043 044 public String getFhirVersion() { 045 return fhirVersion; 046 } 047 048 public String getDescription() { 049 return description; 050 } 051 052 public String getUrl() { 053 return url; 054 } 055 056 public String getCanonical() { 057 return canonical; 058 } 059 060 public Instant getDate() { 061 return date; 062 } 063 064 @Override 065 public String toString() { 066 return id + "#" + (version == null ? "?pc-pi?" : version) + (fhirVersion == null ? "" : " (" + canonical + ") for FHIR " + fhirVersion) + (url == null ? "" : " @" + url) + (description == null ? "" : " '" + description + "'"); 067 } 068 069 public static class PackageInfoSorter implements Comparator<PackageInfo> { 070 071 072 private boolean byDate; 073 074 public PackageInfoSorter(boolean byDate) { 075 super(); 076 this.byDate = byDate; 077 } 078 079 @Override 080 public int compare(PackageInfo o1, PackageInfo o2) { 081 if (byDate) { 082 return o1.date.compareTo(o2.date); 083 } else { 084 return o1.id.compareTo(o2.id); 085 } 086 } 087 088 } 089 090}