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

org.hl7.fhir.validation.cli.tasks.CompareTask Maven / Gradle / Ivy

The newest version!
package org.hl7.fhir.validation.cli.tasks;

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;

import org.hl7.fhir.utilities.TimeTracker;
import org.hl7.fhir.utilities.VersionUtilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.npm.CommonPackages;
import org.hl7.fhir.validation.ValidationEngine;
import org.hl7.fhir.validation.cli.model.CliContext;
import org.hl7.fhir.validation.cli.services.ComparisonService;
import org.hl7.fhir.validation.cli.services.ValidationService;
import org.hl7.fhir.validation.cli.utils.Display;
import org.hl7.fhir.validation.cli.utils.Params;

public class CompareTask extends ValidationEngineTask {
  @Override
  public String getName() {
    return "compare";
  }

  @Override
  public String getDisplayName() {
    return "Comparing Profiles";
  }

  @Override
  public boolean isHidden() {
    return false;
  }

  @Override
  public boolean shouldExecuteTask(CliContext cliContext, String[] args) {
    return Params.hasParam(args, Params.COMPARE);
  }

  @Override
  public void printHelp(PrintStream out) {
    Display.displayHelpDetails(out,"help/compare.txt");
  }

  @Override
  public void executeTask(ValidationService validationService, ValidationEngine validationEngine, CliContext cliContext, String[] args, TimeTracker tt, TimeTracker.Session tts) throws Exception {
    Display.printCliParamsAndInfo(args);
    if (!destinationDirectoryValid(Params.getParam(args, Params.DESTINATION))) {
      return;
    }
    if (cliContext.getSv() == null) {
      cliContext.setSv(validationService.determineVersion(cliContext));
    }
    String v = VersionUtilities.getCurrentVersion(cliContext.getSv());
    String definitions = VersionUtilities.packageForVersion(v) + "#" + v;
    ValidationEngine validator = validationService.initializeValidator(cliContext, definitions, tt);
    validator.loadPackage(CommonPackages.ID_PUBPACK, null);
    ComparisonService.doLeftRightComparison(args, Params.getParam(args, Params.DESTINATION), validator);
  }

  private boolean destinationDirectoryValid(String dest) throws IOException {
    if (dest == null) {
      System.out.println("no -dest parameter provided");
      return false;
    } else if (!ManagedFileAccess.file(dest).isDirectory()) {
      System.out.println("Specified destination (-dest parameter) is not valid: \"" + dest + "\")");
      return false;
    } else {
      System.out.println("Valid destination directory provided: \"" + dest + "\")");
      return true;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy