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}