001package org.galaxyproject.gxformat2.v19_09.utils;
002
003import java.io.File;
004import java.io.IOException;
005import java.nio.file.Files;
006import java.nio.file.Path;
007import java.nio.file.Paths;
008import java.util.Map;
009
010public class RootLoader {
011  public static Object loadDocument(
012      final Map<String, Object> doc, final String baseUri_, final LoadingOptions loadingOptions_) {
013    final String baseUri = ensureBaseUri(baseUri_);
014    LoadingOptions loadingOptions = loadingOptions_;
015    if (loadingOptions == null) {
016      loadingOptions = new LoadingOptionsBuilder().build();
017    }
018    return LoaderInstances.union_of_GalaxyWorkflow_or_array_of_GalaxyWorkflow.documentLoad(
019        doc, baseUri, loadingOptions);
020  }
021
022  public static Object loadDocument(final Map<String, Object> doc, final String baseUri) {
023    return loadDocument(doc, baseUri, null);
024  }
025
026  public static Object loadDocument(final Map<String, Object> doc) {
027    return loadDocument(doc, ensureBaseUri(null));
028  }
029
030  public static Object loadDocument(final Path path) {
031    return loadDocument(readPath(path));
032  }
033
034  public static Object loadDocument(final Path path, String baseUri) {
035    return loadDocument(readPath(path), baseUri);
036  }
037
038  public static Object loadDocument(final Path path, LoadingOptions loadingOptions) {
039    return loadDocument(readPath(path), loadingOptions);
040  }
041
042  public static Object loadDocument(
043      final Path path, String baseUri, LoadingOptions loadingOptions) {
044    return loadDocument(readPath(path), baseUri, loadingOptions);
045  }
046
047  public static Object loadDocument(final File file) {
048    return loadDocument(file.toPath());
049  }
050
051  public static Object loadDocument(final File file, String baseUri) {
052    return loadDocument(file.toPath(), baseUri);
053  }
054
055  public static Object loadDocument(final File file, LoadingOptions loadingOptions) {
056    return loadDocument(file.toPath(), loadingOptions);
057  }
058
059  public static Object loadDocument(
060      final File file, String baseUri, LoadingOptions loadingOptions) {
061    return loadDocument(file.toPath(), baseUri, loadingOptions);
062  }
063
064  public static Object loadDocument(final String doc) {
065    return loadDocument(doc, ensureBaseUri(null));
066  }
067
068  public static Object loadDocument(final String doc, final LoadingOptions loadingOptions) {
069    return loadDocument(doc, ensureBaseUri(null), loadingOptions);
070  }
071
072  public static Object loadDocument(final String doc, final String uri) {
073    return loadDocument(doc, uri, null);
074  }
075
076  public static Object loadDocument(
077      final String doc, final String uri_, final LoadingOptions loadingOptions_) {
078    final String uri = ensureBaseUri(uri_);
079    LoadingOptions loadingOptions = loadingOptions_;
080    if (loadingOptions == null) {
081      loadingOptions = new LoadingOptionsBuilder().setFileUri(uri).build();
082    }
083    final Map<String, Object> result = YamlUtils.mapFromString(doc);
084    loadingOptions.idx.put(uri, result);
085    return loadDocument(result, uri, loadingOptions);
086  }
087
088  static String readPath(final Path path) {
089    try {
090      return new String(Files.readAllBytes(path), "UTF8");
091    } catch (final IOException e) {
092      throw new RuntimeException(e);
093    }
094  }
095
096  static String ensureBaseUri(final String baseUri_) {
097    String baseUri = baseUri_;
098    if (baseUri == null) {
099      baseUri = Uris.fileUri(Paths.get(".").toAbsolutePath().normalize().toString()) + "/";
100    }
101    return baseUri;
102  }
103}