All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cqframework.fhir.npm.NpmProcessor Maven / Gradle / Ivy

package org.cqframework.fhir.npm;

import java.util.ArrayList;
import java.util.List;

import org.cqframework.fhir.utilities.IGContext;
import org.hl7.cql.model.NamespaceInfo;
import org.hl7.fhir.utilities.npm.NpmPackage;

public class NpmProcessor {
  /**
   * Provides access to the Npm package manager. Note that this will be throw an exception in the
   * case that there is no ig context.
   */
  private NpmPackageManager packageManager;

  public NpmPackageManager getPackageManager() {
    if (this.packageManager == null) {
      throw new IllegalStateException("Package manager is not available outside of an ig context");
    }
    return this.packageManager;
  }

  /**
   * The igContext for the npmProcessor (i.e. the root IG that defines dependencies accessible in
   * the context) Note that this may be null in the case that there is no IG context
   */
  private IGContext igContext;

  public IGContext getIgContext() {
    return this.igContext;
  }

  // @Inject
  public NpmProcessor(IGContext igContext) {
    this.igContext = igContext;
    if (igContext != null) {
      packageManager = new NpmPackageManager(igContext.getSourceIg());
    }
  }

  public NamespaceInfo getIgNamespace() {
    if (igContext != null) {
      return new NamespaceInfo(igContext.getPackageId(), igContext.getCanonicalBase());
    }

    return null;
  }

  public List getNamespaces() {
    List namespaceInfos = new ArrayList<>();
    if (packageManager != null) {
      List packages = packageManager.getNpmList();
      for (NpmPackage p : packages) {
        if (p.name() != null && !p.name().isEmpty() && p.canonical() != null
            && !p.canonical().isEmpty()) {
          NamespaceInfo ni = new NamespaceInfo(p.name(), p.canonical());
          namespaceInfos.add(ni);
        }
      }
    }
    return namespaceInfos;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy