Merge pull request #1590 from hapifhir/2024-04-gg-fixes

2024 04 gg fixes
This commit is contained in:
Grahame Grieve 2024-04-03 21:46:57 +11:00 committed by GitHub
commit aa8d171e10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
291 changed files with 2980 additions and 2080 deletions

View File

@ -50,17 +50,17 @@ public class MavenWrapperDownloader {
public static void main(String args[]) { public static void main(String args[]) {
System.out.println("- Downloader started"); System.out.println("- Downloader started");
File baseDirectory = new File(args[0]); File baseDirectory = ManagedFileAccess.file(args[0]);
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
// If the maven-wrapper.properties exists, read it and check if it contains a custom // If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter. // wrapperUrl parameter.
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); File mavenWrapperPropertyFile = ManagedFileAccess.file(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
String url = DEFAULT_DOWNLOAD_URL; String url = DEFAULT_DOWNLOAD_URL;
if(mavenWrapperPropertyFile.exists()) { if(mavenWrapperPropertyFile.exists()) {
FileInputStream mavenWrapperPropertyFileInputStream = null; FileInputStream mavenWrapperPropertyFileInputStream = null;
try { try {
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); mavenWrapperPropertyFileInputStream = ManagedFileAccess.inStream(mavenWrapperPropertyFile);
Properties mavenWrapperProperties = new Properties(); Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
@ -78,7 +78,7 @@ public class MavenWrapperDownloader {
} }
System.out.println("- Downloading from: : " + url); System.out.println("- Downloading from: : " + url);
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); File outputFile = ManagedFileAccess.file(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
if(!outputFile.getParentFile().exists()) { if(!outputFile.getParentFile().exists()) {
if(!outputFile.getParentFile().mkdirs()) { if(!outputFile.getParentFile().mkdirs()) {
System.out.println( System.out.println(
@ -101,7 +101,7 @@ public class MavenWrapperDownloader {
URL website = new URL(urlString); URL website = new URL(urlString);
ReadableByteChannel rbc; ReadableByteChannel rbc;
rbc = Channels.newChannel(website.openStream()); rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(destination); FileOutputStream fos = ManagedFileAccess.outStream(destination);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close(); fos.close();
rbc.close(); rbc.close();

View File

@ -67,6 +67,7 @@ import org.hl7.fhir.dstu3.utils.StructureMapUtilities;
import org.hl7.fhir.dstu3.utils.StructureMapUtilities.ITransformerServices; import org.hl7.fhir.dstu3.utils.StructureMapUtilities.ITransformerServices;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
/** /**
* This class manages conversion from R2 to R3 and vice versa * This class manages conversion from R2 to R3 and vice versa
@ -113,8 +114,8 @@ public class R2R3ConversionManager implements ITransformerServices {
self.setR3Definitions(getNamedParam(args, "-d3")); self.setR3Definitions(getNamedParam(args, "-d3"));
self.setMappingLibrary(getNamedParam(args, "-maps")); self.setMappingLibrary(getNamedParam(args, "-maps"));
FhirFormat fmt = hasParam(args, "-fmt") ? getNamedParam(args, "-fmt").equalsIgnoreCase("json") ? FhirFormat.JSON : FhirFormat.XML : FhirFormat.XML; FhirFormat fmt = hasParam(args, "-fmt") ? getNamedParam(args, "-fmt").equalsIgnoreCase("json") ? FhirFormat.JSON : FhirFormat.XML : FhirFormat.XML;
InputStream src = new FileInputStream(getNamedParam(args, "-src")); InputStream src = ManagedFileAccess.inStream(getNamedParam(args, "-src"));
OutputStream dst = new FileOutputStream(getNamedParam(args, "-dest")); OutputStream dst = ManagedFileAccess.outStream(getNamedParam(args, "-dest"));
self.convert(src, dst, hasParam(args, "-r2"), fmt); self.convert(src, dst, hasParam(args, "-r2"), fmt);
} }
} }
@ -164,9 +165,9 @@ public class R2R3ConversionManager implements ITransformerServices {
} }
public void setR2Definitions(String source) throws IOException, FHIRException { public void setR2Definitions(String source) throws IOException, FHIRException {
File f = new File(source); File f = ManagedFileAccess.file(source);
if (f.exists()) if (f.exists())
setR2Definitions(new FileInputStream(f)); setR2Definitions(ManagedFileAccess.inStream(f));
else else
setR2Definitions(fetch(source)); setR2Definitions(fetch(source));
} }
@ -184,9 +185,9 @@ public class R2R3ConversionManager implements ITransformerServices {
} }
public void setR3Definitions(String source) throws IOException, FHIRException { public void setR3Definitions(String source) throws IOException, FHIRException {
File f = new File(source); File f = ManagedFileAccess.file(source);
if (f.exists()) if (f.exists())
setR3Definitions(new FileInputStream(f)); setR3Definitions(ManagedFileAccess.inStream(f));
else else
setR3Definitions(fetch(source)); setR3Definitions(fetch(source));
} }
@ -201,9 +202,9 @@ public class R2R3ConversionManager implements ITransformerServices {
} }
public void setMappingLibrary(String source) throws IOException, FHIRException { public void setMappingLibrary(String source) throws IOException, FHIRException {
File f = new File(source); File f = ManagedFileAccess.file(source);
if (f.exists()) if (f.exists())
setMappingLibrary(new FileInputStream(f)); setMappingLibrary(ManagedFileAccess.inStream(f));
else else
setMappingLibrary(fetch(source)); setMappingLibrary(fetch(source));
} }

View File

@ -42,6 +42,7 @@ import org.hl7.fhir.utilities.IniFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.VersionUtilities; import org.hl7.fhir.utilities.VersionUtilities;
import org.hl7.fhir.utilities.ZipGenerator; import org.hl7.fhir.utilities.ZipGenerator;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xhtml.NodeType; import org.hl7.fhir.utilities.xhtml.NodeType;
import org.hl7.fhir.utilities.xhtml.XhtmlComposer; import org.hl7.fhir.utilities.xhtml.XhtmlComposer;
import org.hl7.fhir.utilities.xhtml.XhtmlNode; import org.hl7.fhir.utilities.xhtml.XhtmlNode;
@ -132,7 +133,7 @@ public class SpecDifferenceEvaluator {
} }
private static void loadSD4(Map<String, StructureDefinition> map, String fn) throws FHIRException, IOException { private static void loadSD4(Map<String, StructureDefinition> map, String fn) throws FHIRException, IOException {
org.hl7.fhir.r4.model.Bundle bundle = (org.hl7.fhir.r4.model.Bundle) new org.hl7.fhir.r4.formats.XmlParser().parse(new FileInputStream(fn)); org.hl7.fhir.r4.model.Bundle bundle = (org.hl7.fhir.r4.model.Bundle) new org.hl7.fhir.r4.formats.XmlParser().parse(ManagedFileAccess.inStream(fn));
for (org.hl7.fhir.r4.model.Bundle.BundleEntryComponent be : bundle.getEntry()) { for (org.hl7.fhir.r4.model.Bundle.BundleEntryComponent be : bundle.getEntry()) {
if (be.getResource() instanceof org.hl7.fhir.r4.model.StructureDefinition) { if (be.getResource() instanceof org.hl7.fhir.r4.model.StructureDefinition) {
org.hl7.fhir.r4.model.StructureDefinition sd = (org.hl7.fhir.r4.model.StructureDefinition) be.getResource(); org.hl7.fhir.r4.model.StructureDefinition sd = (org.hl7.fhir.r4.model.StructureDefinition) be.getResource();
@ -143,7 +144,7 @@ public class SpecDifferenceEvaluator {
} }
private static void loadSD(Map<String, StructureDefinition> map, String fn) throws FHIRFormatError, IOException { private static void loadSD(Map<String, StructureDefinition> map, String fn) throws FHIRFormatError, IOException {
Bundle bundle = (Bundle) new XmlParser().parse(new FileInputStream(fn)); Bundle bundle = (Bundle) new XmlParser().parse(ManagedFileAccess.inStream(fn));
for (BundleEntryComponent be : bundle.getEntry()) { for (BundleEntryComponent be : bundle.getEntry()) {
if (be.getResource() instanceof StructureDefinition) { if (be.getResource() instanceof StructureDefinition) {
StructureDefinition sd = (StructureDefinition) be.getResource(); StructureDefinition sd = (StructureDefinition) be.getResource();
@ -153,7 +154,7 @@ public class SpecDifferenceEvaluator {
} }
private static void loadVS4(Map<String, ValueSet> map, String fn) throws FHIRException, IOException { private static void loadVS4(Map<String, ValueSet> map, String fn) throws FHIRException, IOException {
org.hl7.fhir.r4.model.Bundle bundle = (org.hl7.fhir.r4.model.Bundle) new org.hl7.fhir.r4.formats.XmlParser().parse(new FileInputStream(fn)); org.hl7.fhir.r4.model.Bundle bundle = (org.hl7.fhir.r4.model.Bundle) new org.hl7.fhir.r4.formats.XmlParser().parse(ManagedFileAccess.inStream(fn));
for (org.hl7.fhir.r4.model.Bundle.BundleEntryComponent be : bundle.getEntry()) { for (org.hl7.fhir.r4.model.Bundle.BundleEntryComponent be : bundle.getEntry()) {
if (be.getResource() instanceof org.hl7.fhir.r4.model.ValueSet) { if (be.getResource() instanceof org.hl7.fhir.r4.model.ValueSet) {
org.hl7.fhir.r4.model.ValueSet sd = (org.hl7.fhir.r4.model.ValueSet) be.getResource(); org.hl7.fhir.r4.model.ValueSet sd = (org.hl7.fhir.r4.model.ValueSet) be.getResource();
@ -163,7 +164,7 @@ public class SpecDifferenceEvaluator {
} }
private static void loadVS(Map<String, ValueSet> map, String fn) throws FHIRFormatError, IOException { private static void loadVS(Map<String, ValueSet> map, String fn) throws FHIRFormatError, IOException {
Bundle bundle = (Bundle) new XmlParser().parse(new FileInputStream(fn)); Bundle bundle = (Bundle) new XmlParser().parse(ManagedFileAccess.inStream(fn));
for (BundleEntryComponent be : bundle.getEntry()) { for (BundleEntryComponent be : bundle.getEntry()) {
if (be.getResource() instanceof ValueSet) { if (be.getResource() instanceof ValueSet) {
ValueSet sd = (ValueSet) be.getResource(); ValueSet sd = (ValueSet) be.getResource();

View File

@ -18,6 +18,7 @@ import org.hl7.fhir.utilities.SimpleHTTPClient;
import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult; import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonArray; import org.hl7.fhir.utilities.json.model.JsonArray;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -230,14 +231,14 @@ public class PackageVisitor {
String[] p = url.split("\\/"); String[] p = url.split("\\/");
String repo = "https://build.fhir.org/ig/"+p[0]+"/"+p[1]; String repo = "https://build.fhir.org/ig/"+p[0]+"/"+p[1];
JsonObject manifest = JsonParser.parseObjectFromUrl(repo+"/package.manifest.json"); JsonObject manifest = JsonParser.parseObjectFromUrl(repo+"/package.manifest.json");
File co = new File(Utilities.path(cache, pid+"."+manifest.asString("date")+".tgz")); File co = ManagedFileAccess.file(Utilities.path(cache, pid+"."+manifest.asString("date")+".tgz"));
if (!co.exists()) { if (!co.exists()) {
SimpleHTTPClient fetcher = new SimpleHTTPClient(); SimpleHTTPClient fetcher = new SimpleHTTPClient();
HTTPResult res = fetcher.get(repo+"/package.tgz?nocache=" + System.currentTimeMillis()); HTTPResult res = fetcher.get(repo+"/package.tgz?nocache=" + System.currentTimeMillis());
res.checkThrowException(); res.checkThrowException();
TextFile.bytesToFile(res.getContent(), co); TextFile.bytesToFile(res.getContent(), co);
} }
NpmPackage npm = NpmPackage.fromPackage(new FileInputStream(co)); NpmPackage npm = NpmPackage.fromPackage(ManagedFileAccess.inStream(co));
String fv = npm.fhirVersion(); String fv = npm.fhirVersion();
long ms2 = System.currentTimeMillis(); long ms2 = System.currentTimeMillis();

View File

@ -9,11 +9,12 @@ import java.io.InputStreamReader;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class BOMRemover { public class BOMRemover {
public static void main(String[] args) throws FileNotFoundException, IOException { public static void main(String[] args) throws FileNotFoundException, IOException {
new BOMRemover().execute(new File(args[0])); new BOMRemover().execute(ManagedFileAccess.file(args[0]));
} }

View File

@ -9,20 +9,21 @@ import java.io.IOException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.r5.formats.JsonParser; import org.hl7.fhir.r5.formats.JsonParser;
import org.hl7.fhir.r5.model.CodeSystem; import org.hl7.fhir.r5.model.CodeSystem;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class BigCodeSystemGenerator { public class BigCodeSystemGenerator {
public static void main(String[] args) throws FileNotFoundException, IOException { public static void main(String[] args) throws FileNotFoundException, IOException {
new BigCodeSystemGenerator().execute(new File("/Users/grahamegrieve/work/test-cases/tx/big/codesystem-big.json")); new BigCodeSystemGenerator().execute(ManagedFileAccess.file("/Users/grahamegrieve/work/test-cases/tx/big/codesystem-big.json"));
} }
private void execute(File file) throws FHIRFormatError, FileNotFoundException, IOException { private void execute(File file) throws FHIRFormatError, FileNotFoundException, IOException {
CodeSystem cs = (CodeSystem) new JsonParser().parse(new FileInputStream(file)); CodeSystem cs = (CodeSystem) new JsonParser().parse(ManagedFileAccess.inStream(file));
cs.getConcept().clear(); cs.getConcept().clear();
for (int i = 1; i <= 2000; i++) { for (int i = 1; i <= 2000; i++) {
cs.addConcept().setCode("code"+i).setDisplay("Display "+i).setDefinition("This is code "+i); cs.addConcept().setCode("code"+i).setDisplay("Display "+i).setDefinition("This is code "+i);
} }
new JsonParser().compose(new FileOutputStream(file), cs); new JsonParser().compose(ManagedFileAccess.outStream(file), cs);
} }

View File

@ -44,6 +44,7 @@ import org.hl7.fhir.utilities.SimpleHTTPClient;
import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult; import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -115,9 +116,9 @@ public class CKMImporter {
String src = Utilities.path(Utilities.path("[tmp]"), id + ".xml"); String src = Utilities.path(Utilities.path("[tmp]"), id + ".xml");
String dst = Utilities.path(dest, id + ".xml"); String dst = Utilities.path(dest, id + ".xml");
if (!new File(src).exists()) if (!ManagedFileAccess.file(src).exists())
downloadArchetype(id); downloadArchetype(id);
if (cfg != null && new File(cfg).exists()) if (cfg != null && ManagedFileAccess.file(cfg).exists())
ADLImporter.main(new String[]{"-source", src, "-dest", dst, "-config", config, "-info", cfg}); ADLImporter.main(new String[]{"-source", src, "-dest", dst, "-config", config, "-info", cfg});
else else
ADLImporter.main(new String[]{"-source", src, "-dest", dst, "-config", config}); ADLImporter.main(new String[]{"-source", src, "-dest", dst, "-config", config});

View File

@ -32,6 +32,7 @@ import org.hl7.fhir.r5.model.Enumerations.PublicationStatus;
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities; import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class CPTImporter { public class CPTImporter {
@ -89,12 +90,12 @@ public class CPTImporter {
System.out.println(c); System.out.println(c);
System.out.println(k); System.out.println(k);
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(dst), cs); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(dst), cs);
produceDB(Utilities.changeFileExt(dst, ".db"), cs); produceDB(Utilities.changeFileExt(dst, ".db"), cs);
cs.setContent(CodeSystemContentMode.FRAGMENT); cs.setContent(CodeSystemContentMode.FRAGMENT);
cs.getConcept().removeIf(cc -> !Utilities.existsInList(cc.getCode(), "metadata-kinds", "metadata-designations", "99202", "99203", "0001A", "99252", "25", "P1", "1P", "F1", "95")); cs.getConcept().removeIf(cc -> !Utilities.existsInList(cc.getCode(), "metadata-kinds", "metadata-designations", "99202", "99203", "0001A", "99252", "25", "P1", "1P", "F1", "95"));
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.changeFileExt(dst, "-fragment.json")), cs); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.changeFileExt(dst, "-fragment.json")), cs);
produceDB(Utilities.changeFileExt(dst, "-fragment.db"), cs); produceDB(Utilities.changeFileExt(dst, "-fragment.db"), cs);
} }
@ -146,7 +147,7 @@ public class CPTImporter {
} }
private void produceDB(String path, CodeSystem cs) throws ClassNotFoundException, SQLException { private void produceDB(String path, CodeSystem cs) throws ClassNotFoundException, SQLException, IOException {
Connection con = connect(path); Connection con = connect(path);
Statement stmt = con.createStatement(); Statement stmt = con.createStatement();
@ -185,10 +186,10 @@ public class CPTImporter {
} }
private Connection connect(String dest) throws SQLException, ClassNotFoundException { private Connection connect(String dest) throws SQLException, ClassNotFoundException, IOException {
// Class.forName("com.mysql.jdbc.Driver"); // Class.forName("com.mysql.jdbc.Driver");
// con = DriverManager.getConnection("jdbc:mysql://localhost:3306/omop?useSSL=false","root",{pwd}); // con = DriverManager.getConnection("jdbc:mysql://localhost:3306/omop?useSSL=false","root",{pwd});
new File(dest).delete(); ManagedFileAccess.file(dest).delete();
Connection con = DriverManager.getConnection("jdbc:sqlite:"+dest); Connection con = DriverManager.getConnection("jdbc:sqlite:"+dest);
makeMetadataTable(con); makeMetadataTable(con);
makeConceptsTable(con); makeConceptsTable(con);
@ -267,7 +268,7 @@ public class CPTImporter {
} }
private int processModifiers(CodeSystem cs, String path) throws FHIRException, FileNotFoundException, IOException { private int processModifiers(CodeSystem cs, String path) throws FHIRException, FileNotFoundException, IOException {
CSVReader csv = new CSVReader(new FileInputStream(path)); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(path));
csv.readHeaders(); csv.readHeaders();
int res = 0; int res = 0;
@ -309,7 +310,7 @@ public class CPTImporter {
FileInputStream inputStream = null; FileInputStream inputStream = null;
Scanner sc = null; Scanner sc = null;
try { try {
inputStream = new FileInputStream(path); inputStream = ManagedFileAccess.inStream(path);
sc = new Scanner(inputStream, "UTF-8"); sc = new Scanner(inputStream, "UTF-8");
while (sc.hasNextLine()) { while (sc.hasNextLine()) {
String line = sc.nextLine(); String line = sc.nextLine();

View File

@ -24,6 +24,7 @@ import org.hl7.fhir.r4.model.Coding;
import org.hl7.fhir.r4.model.DateTimeType; import org.hl7.fhir.r4.model.DateTimeType;
import org.hl7.fhir.r4.model.StringType; import org.hl7.fhir.r4.model.StringType;
import org.hl7.fhir.r4.terminologies.CodeSystemUtilities; import org.hl7.fhir.r4.terminologies.CodeSystemUtilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -58,7 +59,7 @@ public class CVXImporter {
} }
private void doUpdate(String source, String dest) throws FHIRFormatError, FileNotFoundException, IOException, ParserConfigurationException, SAXException { private void doUpdate(String source, String dest) throws FHIRFormatError, FileNotFoundException, IOException, ParserConfigurationException, SAXException {
CodeSystem cvx = (CodeSystem) new JsonParser().parse(new FileInputStream(dest)); CodeSystem cvx = (CodeSystem) new JsonParser().parse(ManagedFileAccess.inStream(dest));
String ldate = null; String ldate = null;
@ -94,7 +95,7 @@ public class CVXImporter {
Collections.sort(cvx.getConcept(), new CVXSorter()); Collections.sort(cvx.getConcept(), new CVXSorter());
cvx.setDateElement(new DateTimeType(ldate)); cvx.setDateElement(new DateTimeType(ldate));
cvx.setVersion(ldate.replace("-", "")); cvx.setVersion(ldate.replace("-", ""));
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(dest), cvx); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(dest), cvx);
} }
private ConceptDefinitionComponent findCVXCode(CodeSystem cvx, String code) { private ConceptDefinitionComponent findCVXCode(CodeSystem cvx, String code) {

View File

@ -7,6 +7,7 @@ import java.io.IOException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
import org.hl7.fhir.utilities.npm.NpmPackage; import org.hl7.fhir.utilities.npm.NpmPackage;
@ -26,12 +27,12 @@ public class CorePackageTools {
private void buildPackage(String path, String output) throws IOException { private void buildPackage(String path, String output) throws IOException {
NpmPackage npm = NpmPackage.fromFolder(path); NpmPackage npm = NpmPackage.fromFolder(path);
npm.loadAllFiles(); npm.loadAllFiles();
npm.save(new FileOutputStream(output)); npm.save(ManagedFileAccess.outStream(output));
} }
private void buildXml(String json, String xml, String version) throws FHIRFormatError, IOException { private void buildXml(String json, String xml, String version) throws FHIRFormatError, IOException {
for (File f : new File(Utilities.path(json, "package")).listFiles()) { for (File f : ManagedFileAccess.file(Utilities.path(json, "package")).listFiles()) {
if (f.getName().endsWith(".json")) { if (f.getName().endsWith(".json")) {
JsonObject j = JsonParser.parseObject(f); JsonObject j = JsonParser.parseObject(f);
if (j.has("resourceType")) { if (j.has("resourceType")) {
@ -39,8 +40,8 @@ public class CorePackageTools {
String n = f.getName(); String n = f.getName();
System.out.println(n); System.out.println(n);
String xn = Utilities.changeFileExt(n, ".xml"); String xn = Utilities.changeFileExt(n, ".xml");
org.hl7.fhir.dstu2016may.model.Resource r = new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(new FileInputStream(f)); org.hl7.fhir.dstu2016may.model.Resource r = new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(ManagedFileAccess.inStream(f));
new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(org.hl7.fhir.dstu2016may.formats.IParser.OutputStyle.NORMAL).compose(new FileOutputStream(Utilities.path(xml, "package", xn)), r); new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(org.hl7.fhir.dstu2016may.formats.IParser.OutputStyle.NORMAL).compose(ManagedFileAccess.outStream(Utilities.path(xml, "package", xn)), r);
} }
} }
} }

View File

@ -45,6 +45,7 @@ import org.hl7.fhir.r4.model.CodeType;
import org.hl7.fhir.r4.model.ContactPoint.ContactPointSystem; import org.hl7.fhir.r4.model.ContactPoint.ContactPointSystem;
import org.hl7.fhir.r4.model.DateTimeType; import org.hl7.fhir.r4.model.DateTimeType;
import org.hl7.fhir.r4.model.Enumerations.PublicationStatus; import org.hl7.fhir.r4.model.Enumerations.PublicationStatus;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -123,10 +124,10 @@ public class CountryCodesConverter {
cs1.setCount(cs1.getConcept().size()); cs1.setCount(cs1.getConcept().size());
cs2.setCount(cs2.getConcept().size()); cs2.setCount(cs2.getConcept().size());
throw new Error("Needs revisiting"); throw new Error("Needs revisiting");
// new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "4.0.1", "package", "CodeSstem-iso3166.json")), cs1); // new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "4.0.1", "package", "CodeSstem-iso3166.json")), cs1);
// new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "3.0.2", "package", "CodeSstem-iso3166.json")), cs1); // format hasn't changed // new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "3.0.2", "package", "CodeSstem-iso3166.json")), cs1); // format hasn't changed
// new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "4.0.1", "package", "CodeSstem-iso3166-2.json")), cs2); // new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "4.0.1", "package", "CodeSstem-iso3166-2.json")), cs2);
// new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "3.0.2", "package", "CodeSstem-iso3166-2.json")), cs2); // format hasn't changed // new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "3.0.2", "package", "CodeSstem-iso3166-2.json")), cs2); // format hasn't changed
} }
public void setMetadata(Document src, CodeSystem cs, String id, String url, String partName, String partTitle) { public void setMetadata(Document src, CodeSystem cs, String id, String url, String partName, String partTitle) {
@ -360,7 +361,7 @@ public class CountryCodesConverter {
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new FileInputStream(source)); return builder.parse(ManagedFileAccess.inStream(source));
} }

View File

@ -23,6 +23,7 @@ import org.hl7.fhir.r4.model.ValueSet;
import org.hl7.fhir.r4.utils.NPMPackageGenerator; import org.hl7.fhir.r4.utils.NPMPackageGenerator;
import org.hl7.fhir.r4.utils.NPMPackageGenerator.Category; import org.hl7.fhir.r4.utils.NPMPackageGenerator.Category;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -73,8 +74,8 @@ public class DicomPackageBuilder {
Set<String> ids = new HashSet<>(); Set<String> ids = new HashSet<>();
ids.add(vs.getId()); ids.add(vs.getId());
for (File f : new File(Utilities.path(source, "Resources", "valuesets", "fhir", "json")).listFiles()) { for (File f : ManagedFileAccess.file(Utilities.path(source, "Resources", "valuesets", "fhir", "json")).listFiles()) {
vs = (ValueSet) JsonParser.loadFile(new FileInputStream(f)); vs = (ValueSet) JsonParser.loadFile(ManagedFileAccess.inStream(f));
vs.setVersion(version); vs.setVersion(version);
if (vs.getId().length() > 64) { if (vs.getId().length() > 64) {
vs.setId(vs.getId().substring(0, 64)); vs.setId(vs.getId().substring(0, 64));
@ -133,7 +134,7 @@ public class DicomPackageBuilder {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new FileInputStream(Utilities.path(source, "Resources", "Ontology", "DCM", "dcm.owl"))); Document doc = builder.parse(ManagedFileAccess.inStream(Utilities.path(source, "Resources", "Ontology", "DCM", "dcm.owl")));
Element rdf = doc.getDocumentElement(); Element rdf = doc.getDocumentElement();
Element d = XMLUtil.getFirstChild(rdf); Element d = XMLUtil.getFirstChild(rdf);
version = processVersion(XMLUtil.getNamedChildText(d, "versionInfo")); version = processVersion(XMLUtil.getNamedChildText(d, "versionInfo"));

View File

@ -10,6 +10,7 @@ import java.util.Set;
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_40_50; import org.hl7.fhir.convertors.factory.VersionConvertorFactory_40_50;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -22,9 +23,9 @@ public class ExamplesPackageBuilder {
private void process(String source) throws FHIRFormatError, FileNotFoundException, IOException { private void process(String source) throws FHIRFormatError, FileNotFoundException, IOException {
Set<String> set = new HashSet<>(); Set<String> set = new HashSet<>();
for (File f : new File(source).listFiles()) { for (File f : ManagedFileAccess.file(source).listFiles()) {
if (f.getName().endsWith(".json")) { if (f.getName().endsWith(".json")) {
JsonObject obj = JsonParser.parseObject(new FileInputStream(f)); JsonObject obj = JsonParser.parseObject(ManagedFileAccess.inStream(f));
if (obj.has("resourceType") && obj.has("id")) { if (obj.has("resourceType") && obj.has("id")) {
String type = obj.asString("resourceType"); String type = obj.asString("resourceType");
String id = obj.asString("id"); String id = obj.asString("id");

View File

@ -23,6 +23,7 @@ import org.hl7.fhir.r5.model.StructureDefinition.TypeDerivationRule;
import org.hl7.fhir.r5.model.ValueSet; import org.hl7.fhir.r5.model.ValueSet;
import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent; import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager; import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
import org.hl7.fhir.utilities.npm.NpmPackage; import org.hl7.fhir.utilities.npm.NpmPackage;
@ -131,7 +132,7 @@ public class ExtensionExtractor {
save(cs, dst,s, ids); save(cs, dst,s, ids);
} }
deleteMatchingResources(ids, new File("/Users/grahamegrieve/work/r5/source")); deleteMatchingResources(ids, ManagedFileAccess.file("/Users/grahamegrieve/work/r5/source"));
} }
private void deleteMatchingResources(Set<String> ids, File folder) { private void deleteMatchingResources(Set<String> ids, File folder) {
@ -172,9 +173,9 @@ public class ExtensionExtractor {
ids.add(cr.getId()); ids.add(cr.getId());
String fn = Utilities.path(dst, folder, cr.fhirType()+"-"+cr.getId()+".xml"); String fn = Utilities.path(dst, folder, cr.fhirType()+"-"+cr.getId()+".xml");
cr.setUserData("folder", folder); cr.setUserData("folder", folder);
if (!new File(fn).exists()) { if (!ManagedFileAccess.file(fn).exists()) {
Utilities.createDirectory(Utilities.getDirectoryForFile(fn)); Utilities.createDirectory(Utilities.getDirectoryForFile(fn));
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(fn), cr); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(fn), cr);
} }
} }

View File

@ -43,13 +43,14 @@ import org.hl7.fhir.dstu2.model.Resource;
import org.hl7.fhir.dstu2.model.ValueSet; import org.hl7.fhir.dstu2.model.ValueSet;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class GenValueSetExpansionConvertor { public class GenValueSetExpansionConvertor {
public static void main(String[] args) throws FHIRFormatError, IOException { public static void main(String[] args) throws FHIRFormatError, IOException {
String src = args[0]; String src = args[0];
String tgt = args[1]; String tgt = args[1];
Bundle bundle = (Bundle) new XmlParser().parse(new FileInputStream(src)); Bundle bundle = (Bundle) new XmlParser().parse(ManagedFileAccess.inStream(src));
for (BundleEntryComponent be : bundle.getEntry()) { for (BundleEntryComponent be : bundle.getEntry()) {
Resource res = be.getResource(); Resource res = be.getResource();
if (res != null) { if (res != null) {
@ -58,7 +59,7 @@ public class GenValueSetExpansionConvertor {
id = tail(((ValueSet) res).getUrl()); id = tail(((ValueSet) res).getUrl());
String dst = Utilities.path(tgt, res.fhirType() + "-" + id + ".json"); String dst = Utilities.path(tgt, res.fhirType() + "-" + id + ".json");
System.out.println(dst); System.out.println(dst);
new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(new FileOutputStream(dst), res); new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(ManagedFileAccess.outStream(dst), res);
} }
} }
} }

View File

@ -28,6 +28,7 @@ import org.hl7.fhir.r4.utils.ToolingExtensions;
import org.hl7.fhir.utilities.SimpleHTTPClient; import org.hl7.fhir.utilities.SimpleHTTPClient;
import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult; import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonElement; import org.hl7.fhir.utilities.json.model.JsonElement;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -49,7 +50,7 @@ public class ICD11Generator {
processMMSEntity(cs, base, child.asString(), cs.addConcept(), dest); processMMSEntity(cs, base, child.asString(), cs.addConcept(), dest);
System.out.println(); System.out.println();
} }
new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "icd-11-mms.xml")), cs); new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "icd-11-mms.xml")), cs);
makeFullVs(dest, cs); makeFullVs(dest, cs);
cs = makeEntityCodeSystem(); cs = makeEntityCodeSystem();
@ -62,7 +63,7 @@ public class ICD11Generator {
processEntity(cs, ids, base, tail(child.asString()), dest); processEntity(cs, ids, base, tail(child.asString()), dest);
System.out.println(); System.out.println();
} }
new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "icd-11-foundation.xml")), cs); new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "icd-11-foundation.xml")), cs);
makeFullVs2(dest, cs); makeFullVs2(dest, cs);
System.out.println("finished"); System.out.println("finished");
} }
@ -153,7 +154,7 @@ public class ICD11Generator {
vs.setStatus(cs.getStatus()); vs.setStatus(cs.getStatus());
ConceptSetComponent inc = vs.getCompose().addInclude(); ConceptSetComponent inc = vs.getCompose().addInclude();
inc.setSystem(cs.getUrl()); inc.setSystem(cs.getUrl());
new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "vs-all-MMS.xml")), vs); new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "vs-all-MMS.xml")), vs);
} }
private void makeFullVs2(String dest, CodeSystem cs) throws IOException { private void makeFullVs2(String dest, CodeSystem cs) throws IOException {
@ -172,7 +173,7 @@ public class ICD11Generator {
vs.setStatus(cs.getStatus()); vs.setStatus(cs.getStatus());
ConceptSetComponent inc = vs.getCompose().addInclude(); ConceptSetComponent inc = vs.getCompose().addInclude();
inc.setSystem(cs.getUrl()); inc.setSystem(cs.getUrl());
new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "vs-all-foundation.xml")), vs); new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "vs-all-foundation.xml")), vs);
} }
private void processMMSEntity(CodeSystem cs, String base, String ref, org.hl7.fhir.r4.model.CodeSystem.ConceptDefinitionComponent cc, String dest) throws IOException { private void processMMSEntity(CodeSystem cs, String base, String ref, org.hl7.fhir.r4.model.CodeSystem.ConceptDefinitionComponent cc, String dest) throws IOException {
@ -281,7 +282,7 @@ public class ICD11Generator {
for (JsonElement e : o.getJsonArray("scaleEntity")) { for (JsonElement e : o.getJsonArray("scaleEntity")) {
inc.addFilter().setProperty("concept").setOp(FilterOperator.ISA).setValue(tail(e.asString())); inc.addFilter().setProperty("concept").setOp(FilterOperator.ISA).setValue(tail(e.asString()));
} }
new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "vs-" + id + ".xml")), vs); new XmlParser(XmlVersion.V1_1).setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "vs-" + id + ".xml")), vs);
return url; return url;
} }

View File

@ -19,6 +19,7 @@ import org.hl7.fhir.r5.model.CodeSystem.ConceptDefinitionComponent;
import org.hl7.fhir.r5.model.CodeSystem.PropertyType; import org.hl7.fhir.r5.model.CodeSystem.PropertyType;
import org.hl7.fhir.r5.model.CodeType; import org.hl7.fhir.r5.model.CodeType;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class ICFImporter { public class ICFImporter {
@ -28,7 +29,7 @@ public class ICFImporter {
} }
private void doImport(String src, String dst) throws FHIRException, FileNotFoundException, IOException { private void doImport(String src, String dst) throws FHIRException, FileNotFoundException, IOException {
CSVReader csv = new CSVReader(new FileInputStream(src)); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(src));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
@ -98,7 +99,7 @@ public class ICFImporter {
} }
csv.close(); csv.close();
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(dst), cs); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(dst), cs);
} }
// //
// private String processLink(String cell) { // private String processLink(String cell) {

View File

@ -53,6 +53,7 @@ import org.hl7.fhir.dstu3.model.ValueSet;
import org.hl7.fhir.dstu3.terminologies.CodeSystemUtilities; import org.hl7.fhir.dstu3.terminologies.CodeSystemUtilities;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -122,7 +123,7 @@ public class ICPC2Importer {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false); factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new FileInputStream(sourceFileName)); Document doc = builder.parse(ManagedFileAccess.inStream(sourceFileName));
ValueSet vs = new ValueSet(); ValueSet vs = new ValueSet();
vs.setUrl("http://hl7.org/fhir/sid/icpc2/vs"); vs.setUrl("http://hl7.org/fhir/sid/icpc2/vs");
@ -170,8 +171,8 @@ public class ICPC2Importer {
XmlParser xml = new XmlParser(); XmlParser xml = new XmlParser();
xml.setOutputStyle(OutputStyle.PRETTY); xml.setOutputStyle(OutputStyle.PRETTY);
xml.compose(new FileOutputStream(targetFileNameVS), vs); xml.compose(ManagedFileAccess.outStream(targetFileNameVS), vs);
xml.compose(new FileOutputStream(targetFileNameCS), cs); xml.compose(ManagedFileAccess.outStream(targetFileNameCS), cs);
} }
private void processClass(Element cls, Map<String, ConceptDefinitionComponent> concepts, CodeSystem define) throws FHIRFormatError { private void processClass(Element cls, Map<String, ConceptDefinitionComponent> concepts, CodeSystem define) throws FHIRFormatError {

View File

@ -68,6 +68,7 @@ import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class IEEE11073Convertor { public class IEEE11073Convertor {
@ -113,7 +114,7 @@ public class IEEE11073Convertor {
g.setSource("urn:iso:std:iso:11073:10101"); g.setSource("urn:iso:std:iso:11073:10101");
g.setTarget("http://loinc.org"); g.setTarget("http://loinc.org");
CSVReader csv = new CSVReader(new FileInputStream(src)); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(src));
csv.readHeaders(); csv.readHeaders();
while (csv.line()) { while (csv.line()) {
SourceElementComponent e = g.addElement(); SourceElementComponent e = g.addElement();
@ -124,13 +125,13 @@ public class IEEE11073Convertor {
t.setCode(csv.cell("LOINC_NUM")); t.setCode(csv.cell("LOINC_NUM"));
t.setDisplay(csv.cell("LOINC_LONG_COMMON_NAME")); t.setDisplay(csv.cell("LOINC_LONG_COMMON_NAME"));
} }
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dst, "conceptmap-" + cm.getId() + ".xml")), cm); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dst, "conceptmap-" + cm.getId() + ".xml")), cm);
System.out.println("Done"); System.out.println("Done");
return cm; return cm;
} }
public static CodeSystem generateMDC(String src, String dst, UcumService ucum) throws IOException, FHIRException { public static CodeSystem generateMDC(String src, String dst, UcumService ucum) throws IOException, FHIRException {
CSVReader csv = new CSVReader(new FileInputStream(src)); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(src));
csv.readHeaders(); csv.readHeaders();
CodeSystem cs = new CodeSystem(); CodeSystem cs = new CodeSystem();
Map<String, String> ucumIssues = new HashMap<String, String>(); Map<String, String> ucumIssues = new HashMap<String, String>();
@ -206,7 +207,7 @@ public class IEEE11073Convertor {
} }
} }
csv.close(); csv.close();
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dst, "codesystem-" + cs.getId() + ".xml")), cs); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dst, "codesystem-" + cs.getId() + ".xml")), cs);
System.out.println(errorCount + "UCUM errors"); System.out.println(errorCount + "UCUM errors");
for (String u : sorted(ucumIssues.keySet())) for (String u : sorted(ucumIssues.keySet()))

View File

@ -49,6 +49,7 @@ import org.hl7.fhir.dstu3.model.ValueSet;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.FhirPublication; import org.hl7.fhir.utilities.FhirPublication;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class IGPackConverter102 extends BaseAdvisor_10_30 { public class IGPackConverter102 extends BaseAdvisor_10_30 {
@ -60,21 +61,21 @@ public class IGPackConverter102 extends BaseAdvisor_10_30 {
private void process() throws IOException, FHIRException { private void process() throws IOException, FHIRException {
initCSList(); initCSList();
for (String s : new File(Utilities.path("[tmp]", "igpack2")).list()) { for (String s : ManagedFileAccess.file(Utilities.path("[tmp]", "igpack2")).list()) {
if (s.endsWith(".xml") && !s.startsWith("z-") && !Utilities.existsInList(s, "expansions.xml", "v3-codesystems.xml", "v2-tables.xml")) { if (s.endsWith(".xml") && !s.startsWith("z-") && !Utilities.existsInList(s, "expansions.xml", "v3-codesystems.xml", "v2-tables.xml")) {
System.out.println("process " + s); System.out.println("process " + s);
org.hl7.fhir.dstu2.formats.XmlParser xp = new org.hl7.fhir.dstu2.formats.XmlParser(); org.hl7.fhir.dstu2.formats.XmlParser xp = new org.hl7.fhir.dstu2.formats.XmlParser();
org.hl7.fhir.dstu2.model.Resource r10 = xp.parse(new FileInputStream(Utilities.path("[tmp]", "igpack2\\" + s))); org.hl7.fhir.dstu2.model.Resource r10 = xp.parse(ManagedFileAccess.inStream(Utilities.path("[tmp]", "igpack2\\" + s)));
org.hl7.fhir.dstu3.model.Resource r17 = VersionConvertorFactory_10_30.convertResource(r10, this); org.hl7.fhir.dstu3.model.Resource r17 = VersionConvertorFactory_10_30.convertResource(r10, this);
org.hl7.fhir.dstu3.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser(); org.hl7.fhir.dstu3.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser();
xc.setOutputStyle(OutputStyle.PRETTY); xc.setOutputStyle(OutputStyle.PRETTY);
xc.compose(new FileOutputStream(Utilities.path("[tmp]", "igpack2\\" + s)), r17); xc.compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "igpack2\\" + s)), r17);
} }
} }
System.out.println("save codesystems"); System.out.println("save codesystems");
org.hl7.fhir.dstu3.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser(); org.hl7.fhir.dstu3.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser();
xc.setOutputStyle(OutputStyle.PRETTY); xc.setOutputStyle(OutputStyle.PRETTY);
xc.compose(new FileOutputStream(Utilities.path("[tmp]", "igpack2\\codesystems.xml")), cslist); xc.compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "igpack2\\codesystems.xml")), cslist);
System.out.println("done"); System.out.println("done");
} }

View File

@ -37,20 +37,21 @@ import java.io.FileOutputStream;
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_30; import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_30;
import org.hl7.fhir.dstu3.formats.IParser.OutputStyle; import org.hl7.fhir.dstu3.formats.IParser.OutputStyle;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class IGPackConverter140 { public class IGPackConverter140 {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
for (String s : new File(Utilities.path("[tmp]", "igpack")).list()) { for (String s : ManagedFileAccess.file(Utilities.path("[tmp]", "igpack")).list()) {
// if (s.endsWith(".xml") && !s.contains("z-")) { // if (s.endsWith(".xml") && !s.contains("z-")) {
if (s.equals("expansions.xml")) { if (s.equals("expansions.xml")) {
System.out.println("process " + s); System.out.println("process " + s);
org.hl7.fhir.dstu2016may.formats.XmlParser xp = new org.hl7.fhir.dstu2016may.formats.XmlParser(); org.hl7.fhir.dstu2016may.formats.XmlParser xp = new org.hl7.fhir.dstu2016may.formats.XmlParser();
org.hl7.fhir.dstu2016may.model.Resource r14 = xp.parse(new FileInputStream(Utilities.path("[tmp]", "igpack\\" + s))); org.hl7.fhir.dstu2016may.model.Resource r14 = xp.parse(ManagedFileAccess.inStream(Utilities.path("[tmp]", "igpack\\" + s)));
org.hl7.fhir.dstu3.model.Resource r17 = VersionConvertorFactory_14_30.convertResource(r14); org.hl7.fhir.dstu3.model.Resource r17 = VersionConvertorFactory_14_30.convertResource(r14);
org.hl7.fhir.dstu3.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser(); org.hl7.fhir.dstu3.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser();
xc.setOutputStyle(OutputStyle.PRETTY); xc.setOutputStyle(OutputStyle.PRETTY);
xc.compose(new FileOutputStream(Utilities.path("[tmp]", "igpack\\z-" + s)), r17); xc.compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "igpack\\z-" + s)), r17);
} }
} }
System.out.println("done"); System.out.println("done");

View File

@ -3,6 +3,7 @@ package org.hl7.fhir.convertors.misc;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -15,7 +16,7 @@ public class JsonProcessor {
private void process(String source) throws IOException { private void process(String source) throws IOException {
JsonObject json = JsonParser.parseObjectFromFile(source); JsonObject json = JsonParser.parseObjectFromFile(source);
process(json); process(json);
JsonParser.compose(json, new FileOutputStream(source), true); JsonParser.compose(json, ManagedFileAccess.outStream(source), true);
} }

View File

@ -1,33 +1,33 @@
package org.hl7.fhir.convertors.misc; package org.hl7.fhir.convertors.misc;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer. list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, * Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. and/or other materials provided with the distribution.
* Neither the name of HL7 nor the names of its contributors may be used to * Neither the name of HL7 nor the names of its contributors may be used to
endorse or promote products derived from this software without specific endorse or promote products derived from this software without specific
prior written permission. prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
*/ */
@ -50,6 +50,7 @@ import org.hl7.fhir.r5.model.DateTimeType;
import org.hl7.fhir.r5.model.InstantType; import org.hl7.fhir.r5.model.InstantType;
import org.hl7.fhir.r5.model.Meta; import org.hl7.fhir.r5.model.Meta;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -151,12 +152,12 @@ public class LoincToDEConvertor {
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
xml = builder.parse(new FileInputStream(definitions)); xml = builder.parse(ManagedFileAccess.inStream(definitions));
} }
private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException {
XmlParser xml = new XmlParser(); XmlParser xml = new XmlParser();
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
xml.compose(s, bundle, true); xml.compose(s, bundle, true);
s.close(); s.close();
} }

View File

@ -48,6 +48,7 @@ import org.hl7.fhir.r4.model.Enumerations.PublicationStatus;
import org.hl7.fhir.r4.model.StringType; import org.hl7.fhir.r4.model.StringType;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class NUCCConvertor { public class NUCCConvertor {
@ -56,7 +57,7 @@ public class NUCCConvertor {
} }
public void execute() throws IOException, FHIRException { public void execute() throws IOException, FHIRException {
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path("[tmp]", "nucc.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path("[tmp]", "nucc.csv")));
CodeSystem cs = new CodeSystem(); CodeSystem cs = new CodeSystem();
cs.setId("nucc-provider-taxonomy"); cs.setId("nucc-provider-taxonomy");
cs.setUrl("http://nucc.org/provider-taxonomy"); cs.setUrl("http://nucc.org/provider-taxonomy");
@ -79,7 +80,7 @@ public class NUCCConvertor {
} }
csv.close(); csv.close();
cs.sort(); cs.sort();
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "nucc.json")), cs); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "nucc.json")), cs);
} }
private void processLine(CodeSystem cs, String[] values) throws FHIRFormatError { private void processLine(CodeSystem cs, String[] values) throws FHIRFormatError {

View File

@ -39,6 +39,7 @@ import org.hl7.fhir.r5.model.Resource;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.VersionUtilities; import org.hl7.fhir.utilities.VersionUtilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonArray; import org.hl7.fhir.utilities.json.model.JsonArray;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -80,7 +81,7 @@ public class NpmPackageVersionConverter {
} }
public void execute() throws IOException { public void execute() throws IOException {
Map<String, byte[]> content = loadContentMap(new FileInputStream(source)); Map<String, byte[]> content = loadContentMap(ManagedFileAccess.inStream(source));
Map<String, byte[]> output = new HashMap<>(); Map<String, byte[]> output = new HashMap<>();
output.put("package/package.json", convertPackage(content.get("package/package.json"))); output.put("package/package.json", convertPackage(content.get("package/package.json")));
@ -141,7 +142,7 @@ public class NpmPackageVersionConverter {
tar.write(cnt); tar.write(cnt);
tar.closeArchiveEntry(); tar.closeArchiveEntry();
cnt = TextFile.fileToBytes(e.getValue().getDbFilename()); cnt = TextFile.fileToBytes(e.getValue().getDbFilename());
new File(e.getValue().getDbFilename()).delete(); ManagedFileAccess.file(e.getValue().getDbFilename()).delete();
entry = new TarArchiveEntry(e.getKey() + "/.index.db"); entry = new TarArchiveEntry(e.getKey() + "/.index.db");
entry.setSize(cnt.length); entry.setSize(cnt.length);
tar.putArchiveEntry(entry); tar.putArchiveEntry(entry);

View File

@ -3,10 +3,12 @@ package org.hl7.fhir.convertors.misc;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException;
import org.hl7.fhir.r5.elementmodel.Manager.FhirFormat; import org.hl7.fhir.r5.elementmodel.Manager.FhirFormat;
import org.hl7.fhir.utilities.IniFile; import org.hl7.fhir.utilities.IniFile;
import org.hl7.fhir.utilities.VersionUtilities; import org.hl7.fhir.utilities.VersionUtilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class OIDAssigner { public class OIDAssigner {
@ -15,9 +17,9 @@ public class OIDAssigner {
new OIDAssigner().execute(args[0], args[1], args[2]); new OIDAssigner().execute(args[0], args[1], args[2]);
} }
private void execute(String oidSource, String folder, String version) { private void execute(String oidSource, String folder, String version) throws IOException {
IniFile oids = new IniFile(oidSource); IniFile oids = new IniFile(oidSource);
File f = new File(folder); File f = ManagedFileAccess.file(folder);
process(oids, f, version); process(oids, f, version);
} }
@ -47,7 +49,7 @@ public class OIDAssigner {
org.hl7.fhir.dstu2.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.dstu2.formats.JsonParser() : new org.hl7.fhir.dstu2.formats.XmlParser(); org.hl7.fhir.dstu2.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.dstu2.formats.JsonParser() : new org.hl7.fhir.dstu2.formats.XmlParser();
try { try {
boolean save = false; boolean save = false;
org.hl7.fhir.dstu2.model.Resource r = parser.parse(new FileInputStream(f)); org.hl7.fhir.dstu2.model.Resource r = parser.parse(ManagedFileAccess.inStream(f));
if (r instanceof org.hl7.fhir.dstu2.model.ValueSet) { if (r instanceof org.hl7.fhir.dstu2.model.ValueSet) {
org.hl7.fhir.dstu2.model.ValueSet vs = (org.hl7.fhir.dstu2.model.ValueSet) r; org.hl7.fhir.dstu2.model.ValueSet vs = (org.hl7.fhir.dstu2.model.ValueSet) r;
boolean hasOid = isOid(vs.getIdentifier()); boolean hasOid = isOid(vs.getIdentifier());
@ -81,7 +83,7 @@ public class OIDAssigner {
} }
} }
if (save) { if (save) {
parser.setOutputStyle(org.hl7.fhir.dstu2.formats.IParser.OutputStyle.PRETTY).compose(new FileOutputStream(f), r); parser.setOutputStyle(org.hl7.fhir.dstu2.formats.IParser.OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage()); System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage());
@ -93,7 +95,7 @@ public class OIDAssigner {
org.hl7.fhir.dstu3.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.dstu3.formats.JsonParser() : new org.hl7.fhir.dstu3.formats.XmlParser(); org.hl7.fhir.dstu3.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.dstu3.formats.JsonParser() : new org.hl7.fhir.dstu3.formats.XmlParser();
try { try {
boolean save = false; boolean save = false;
org.hl7.fhir.dstu3.model.Resource r = parser.parse(new FileInputStream(f)); org.hl7.fhir.dstu3.model.Resource r = parser.parse(ManagedFileAccess.inStream(f));
if (r instanceof org.hl7.fhir.dstu3.model.CodeSystem) { if (r instanceof org.hl7.fhir.dstu3.model.CodeSystem) {
org.hl7.fhir.dstu3.model.CodeSystem cs = (org.hl7.fhir.dstu3.model.CodeSystem) r; org.hl7.fhir.dstu3.model.CodeSystem cs = (org.hl7.fhir.dstu3.model.CodeSystem) r;
boolean hasOid = isOid(cs.getIdentifier()); boolean hasOid = isOid(cs.getIdentifier());
@ -141,7 +143,7 @@ public class OIDAssigner {
} }
} }
if (save) { if (save) {
parser.setOutputStyle(org.hl7.fhir.dstu3.formats.IParser.OutputStyle.PRETTY).compose(new FileOutputStream(f), r); parser.setOutputStyle(org.hl7.fhir.dstu3.formats.IParser.OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage()); System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage());
@ -153,7 +155,7 @@ public class OIDAssigner {
org.hl7.fhir.r4.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.r4.formats.JsonParser() : new org.hl7.fhir.r4.formats.XmlParser(); org.hl7.fhir.r4.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.r4.formats.JsonParser() : new org.hl7.fhir.r4.formats.XmlParser();
try { try {
boolean save = false; boolean save = false;
org.hl7.fhir.r4.model.Resource r = parser.parse(new FileInputStream(f)); org.hl7.fhir.r4.model.Resource r = parser.parse(ManagedFileAccess.inStream(f));
if (r instanceof org.hl7.fhir.r4.model.CodeSystem) { if (r instanceof org.hl7.fhir.r4.model.CodeSystem) {
org.hl7.fhir.r4.model.CodeSystem cs = (org.hl7.fhir.r4.model.CodeSystem) r; org.hl7.fhir.r4.model.CodeSystem cs = (org.hl7.fhir.r4.model.CodeSystem) r;
boolean hasOid = false; boolean hasOid = false;
@ -206,7 +208,7 @@ public class OIDAssigner {
} }
} }
if (save) { if (save) {
parser.setOutputStyle(org.hl7.fhir.r4.formats.IParser.OutputStyle.PRETTY).compose(new FileOutputStream(f), r); parser.setOutputStyle(org.hl7.fhir.r4.formats.IParser.OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage()); System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage());
@ -217,7 +219,7 @@ public class OIDAssigner {
org.hl7.fhir.r4b.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.r4b.formats.JsonParser() : new org.hl7.fhir.r4b.formats.XmlParser(); org.hl7.fhir.r4b.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.r4b.formats.JsonParser() : new org.hl7.fhir.r4b.formats.XmlParser();
try { try {
boolean save = false; boolean save = false;
org.hl7.fhir.r4b.model.Resource r = parser.parse(new FileInputStream(f)); org.hl7.fhir.r4b.model.Resource r = parser.parse(ManagedFileAccess.inStream(f));
if (r instanceof org.hl7.fhir.r4b.model.CanonicalResource) { if (r instanceof org.hl7.fhir.r4b.model.CanonicalResource) {
org.hl7.fhir.r4b.model.CanonicalResource cs = (org.hl7.fhir.r4b.model.CanonicalResource) r; org.hl7.fhir.r4b.model.CanonicalResource cs = (org.hl7.fhir.r4b.model.CanonicalResource) r;
boolean hasOid = false; boolean hasOid = false;
@ -233,7 +235,7 @@ public class OIDAssigner {
} }
} }
if (save) { if (save) {
parser.setOutputStyle(org.hl7.fhir.r4b.formats.IParser.OutputStyle.PRETTY).compose(new FileOutputStream(f), r); parser.setOutputStyle(org.hl7.fhir.r4b.formats.IParser.OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage()); System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage());
@ -245,7 +247,7 @@ public class OIDAssigner {
org.hl7.fhir.r5.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.r5.formats.JsonParser() : new org.hl7.fhir.r5.formats.XmlParser(); org.hl7.fhir.r5.formats.IParser parser = fmt == FhirFormat.JSON ? new org.hl7.fhir.r5.formats.JsonParser() : new org.hl7.fhir.r5.formats.XmlParser();
try { try {
boolean save = false; boolean save = false;
org.hl7.fhir.r5.model.Resource r = parser.parse(new FileInputStream(f)); org.hl7.fhir.r5.model.Resource r = parser.parse(ManagedFileAccess.inStream(f));
if (r instanceof org.hl7.fhir.r5.model.CanonicalResource) { if (r instanceof org.hl7.fhir.r5.model.CanonicalResource) {
org.hl7.fhir.r5.model.CanonicalResource cs = (org.hl7.fhir.r5.model.CanonicalResource) r; org.hl7.fhir.r5.model.CanonicalResource cs = (org.hl7.fhir.r5.model.CanonicalResource) r;
boolean hasOid = false; boolean hasOid = false;
@ -261,7 +263,7 @@ public class OIDAssigner {
} }
} }
if (save) { if (save) {
parser.setOutputStyle(org.hl7.fhir.r5.formats.IParser.OutputStyle.PRETTY).compose(new FileOutputStream(f), r); parser.setOutputStyle(org.hl7.fhir.r5.formats.IParser.OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} catch (Exception e) { } catch (Exception e) {
System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage()); System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage());

View File

@ -15,6 +15,7 @@ import java.util.Map;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class OMOPImporter { public class OMOPImporter {
@ -107,15 +108,15 @@ public class OMOPImporter {
} }
private void connect(String dest) throws SQLException, ClassNotFoundException { private void connect(String dest) throws SQLException, ClassNotFoundException, IOException {
// Class.forName("com.mysql.jdbc.Driver"); // Class.forName("com.mysql.jdbc.Driver");
// con = DriverManager.getConnection("jdbc:mysql://localhost:3306/omop?useSSL=false","root",{pwd}); // con = DriverManager.getConnection("jdbc:mysql://localhost:3306/omop?useSSL=false","root",{pwd});
new File("/Users/grahamegrieve/temp/omop/omop.db").delete(); ManagedFileAccess.file("/Users/grahamegrieve/temp/omop/omop.db").delete();
con = DriverManager.getConnection("jdbc:sqlite:"+dest); con = DriverManager.getConnection("jdbc:sqlite:"+dest);
} }
private void processRelationships(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { private void processRelationships(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException {
Tracker t = new Tracker("Relationships", 700); Tracker t = new Tracker("Relationships", 700);
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "RELATIONSHIP.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "RELATIONSHIP.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -147,7 +148,7 @@ public class OMOPImporter {
stmt.execute("Create Index `RelationshipsId` on Relationships (`relationship_id`)"); stmt.execute("Create Index `RelationshipsId` on Relationships (`relationship_id`)");
stmt.execute("Create Index`RelationshipsReverse` on Relationships (`reverse_relationship_id`)"); stmt.execute("Create Index`RelationshipsReverse` on Relationships (`reverse_relationship_id`)");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "RELATIONSHIP.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "RELATIONSHIP.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -182,7 +183,7 @@ public class OMOPImporter {
private void processVocabularies(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { private void processVocabularies(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException {
Tracker t = new Tracker("Vocabularies", 60); Tracker t = new Tracker("Vocabularies", 60);
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "VOCABULARY.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "VOCABULARY.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -217,7 +218,7 @@ public class OMOPImporter {
"\r\n"); "\r\n");
stmt.execute("CREATE INDEX `VocabulariesId` on Vocabularies (`vocabulary_id`)"); stmt.execute("CREATE INDEX `VocabulariesId` on Vocabularies (`vocabulary_id`)");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "VOCABULARY.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "VOCABULARY.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -244,7 +245,7 @@ public class OMOPImporter {
private void processDomains(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { private void processDomains(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException {
Tracker t = new Tracker("Domains", 50); Tracker t = new Tracker("Domains", 50);
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "DOMAIN.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "DOMAIN.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -275,7 +276,7 @@ public class OMOPImporter {
stmt.execute("CREATE INDEX `DomainId` on Domains (`domain_id`)"); stmt.execute("CREATE INDEX `DomainId` on Domains (`domain_id`)");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "DOMAIN.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "DOMAIN.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -299,7 +300,7 @@ public class OMOPImporter {
private void processConceptClasses(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { private void processConceptClasses(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException {
Tracker t = new Tracker("ConceptClasses", 400); Tracker t = new Tracker("ConceptClasses", 400);
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT_CLASS.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT_CLASS.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -325,7 +326,7 @@ public class OMOPImporter {
" PRIMARY KEY (`concept_class_concept_id`)\r\n"+ " PRIMARY KEY (`concept_class_concept_id`)\r\n"+
") \r\n"+ ") \r\n"+
"\r\n"); "\r\n");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT_CLASS.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT_CLASS.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -356,7 +357,7 @@ public class OMOPImporter {
return; return;
} }
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "DRUG_STRENGTH.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "DRUG_STRENGTH.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -398,7 +399,7 @@ public class OMOPImporter {
" PRIMARY KEY (`drug_concept_id`,`ingredient_concept_id`)\r\n"+ " PRIMARY KEY (`drug_concept_id`,`ingredient_concept_id`)\r\n"+
") \r\n"+ ") \r\n"+
"\r\n"); "\r\n");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "DRUG_STRENGTH.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "DRUG_STRENGTH.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -446,7 +447,7 @@ public class OMOPImporter {
return; return;
} }
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -485,7 +486,7 @@ public class OMOPImporter {
stmt.execute("CREATE INDEX `ConceptVocabulary` on Concepts (`vocabulary_id`,`concept_code`)"); stmt.execute("CREATE INDEX `ConceptVocabulary` on Concepts (`vocabulary_id`,`concept_code`)");
stmt.execute("CREATE INDEX `ConceptClass` on Concepts (`concept_class_id`)"); stmt.execute("CREATE INDEX `ConceptClass` on Concepts (`concept_class_id`)");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -523,7 +524,7 @@ public class OMOPImporter {
} }
t.scan(); t.scan();
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT_SYNONYM.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT_SYNONYM.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -545,7 +546,7 @@ public class OMOPImporter {
stmt.execute("CREATE INDEX `SynonymId` on ConceptSynonyms (`concept_id`)"); stmt.execute("CREATE INDEX `SynonymId` on ConceptSynonyms (`concept_id`)");
stmt.execute("CREATE INDEX `SynonymLang` on ConceptSynonyms (`language_concept_id`)"); stmt.execute("CREATE INDEX `SynonymLang` on ConceptSynonyms (`language_concept_id`)");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT_SYNONYM.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT_SYNONYM.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -575,7 +576,7 @@ public class OMOPImporter {
} }
t.process(); t.process();
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT_ANCESTOR.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT_ANCESTOR.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -614,7 +615,7 @@ public class OMOPImporter {
} }
t.scan(); t.scan();
CSVReader csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT_RELATIONSHIP.csv"))); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT_RELATIONSHIP.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);
@ -641,7 +642,7 @@ public class OMOPImporter {
// stmt.execute("CREATE INDEX `type1` on ConceptRelationships (`relationship_id`,`concept_id_1`,`concept_id_2`)"); // stmt.execute("CREATE INDEX `type1` on ConceptRelationships (`relationship_id`,`concept_id_1`,`concept_id_2`)");
// stmt.execute("CREATE INDEX `type2` on ConceptRelationships (`relationship_id`,`concept_id_2`,`concept_id_1`)"); // stmt.execute("CREATE INDEX `type2` on ConceptRelationships (`relationship_id`,`concept_id_2`,`concept_id_1`)");
csv = new CSVReader(new FileInputStream(Utilities.path(folder, "CONCEPT_RELATIONSHIP.csv"))); csv = new CSVReader(ManagedFileAccess.inStream(Utilities.path(folder, "CONCEPT_RELATIONSHIP.csv")));
csv.setDelimiter('\t'); csv.setDelimiter('\t');
csv.readHeaders(); csv.readHeaders();
csv.setDoingQuotes(false); csv.setDoingQuotes(false);

View File

@ -51,6 +51,7 @@ import org.hl7.fhir.dstu3.model.Type;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class ObservationStatsBuilder { public class ObservationStatsBuilder {
@ -78,7 +79,7 @@ public class ObservationStatsBuilder {
vitals(b, base, 130, 95, 133, 97, 37.2); vitals(b, base, 130, 95, 133, 97, 37.2);
vitals(b, base, 150, 85, 125, 98, 37.1); vitals(b, base, 150, 85, 125, 98, 37.1);
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "vitals.xml")), b); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "vitals.xml")), b);
} }
private static void vitals(Bundle b, Calendar base, int minutes, int diastolic, int systolic, int sat, double temp) throws FHIRFormatError { private static void vitals(Bundle b, Calendar base, int minutes, int diastolic, int systolic, int sat, double temp) throws FHIRFormatError {
@ -202,7 +203,7 @@ public class ObservationStatsBuilder {
addAge(b, 10, 0, "31.9"); addAge(b, 10, 0, "31.9");
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "obs.xml")), b); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "obs.xml")), b);
} }
private static void addAge(Bundle b, int y, int m, String v) throws FHIRException { private static void addAge(Bundle b, int y, int m, String v) throws FHIRException {

View File

@ -7,6 +7,7 @@ import java.util.List;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -67,15 +68,15 @@ public class PackageMaintainer {
System.out.println("Examples contains " + s + " but core doesn't"); System.out.println("Examples contains " + s + " but core doesn't");
} }
} }
strip(new File(Utilities.path(PATH, "hl7.fhir." + ver + ".core", "package"))); strip(ManagedFileAccess.file(Utilities.path(PATH, "hl7.fhir." + ver + ".core", "package")));
strip(new File(Utilities.path(PATH, "hl7.fhir." + ver + ".expansions", "package"))); strip(ManagedFileAccess.file(Utilities.path(PATH, "hl7.fhir." + ver + ".expansions", "package")));
if (!ver.equals("r2b")) if (!ver.equals("r2b"))
strip(new File(Utilities.path(PATH, "hl7.fhir." + ver + ".elements", "package"))); strip(ManagedFileAccess.file(Utilities.path(PATH, "hl7.fhir." + ver + ".elements", "package")));
} }
private List<String> listResources(String dir) { private List<String> listResources(String dir) throws IOException {
File folder = new File(dir); File folder = ManagedFileAccess.file(dir);
List<String> res = new ArrayList<>(); List<String> res = new ArrayList<>();
for (String fn : folder.list()) { for (String fn : folder.list()) {
if (fn.endsWith(".json") && fn.contains("-")) { if (fn.endsWith(".json") && fn.contains("-")) {

View File

@ -7,6 +7,7 @@ import java.io.IOException;
import org.hl7.fhir.r5.formats.JsonParser; import org.hl7.fhir.r5.formats.JsonParser;
import org.hl7.fhir.r5.model.Resource; import org.hl7.fhir.r5.model.Resource;
import org.hl7.fhir.r5.utils.ResourceMinifier; import org.hl7.fhir.r5.utils.ResourceMinifier;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager; import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
import org.hl7.fhir.utilities.npm.NpmPackage; import org.hl7.fhir.utilities.npm.NpmPackage;
import org.hl7.fhir.utilities.npm.NpmPackage.PackageResourceInformation; import org.hl7.fhir.utilities.npm.NpmPackage.PackageResourceInformation;
@ -33,7 +34,7 @@ public class PackageMinifier {
} }
} }
} }
tgt.save(new FileOutputStream(target)); tgt.save(ManagedFileAccess.outStream(target));
} }
} }

View File

@ -3,6 +3,7 @@ package org.hl7.fhir.convertors.misc;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
@ -38,6 +39,7 @@ import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_40;
import org.hl7.fhir.dstu3.model.Bundle; import org.hl7.fhir.dstu3.model.Bundle;
import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent; import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
/* /*
* load reosurces in xml format, and sve them in package format (json, with correct name * load reosurces in xml format, and sve them in package format (json, with correct name
@ -48,10 +50,10 @@ import org.hl7.fhir.utilities.Utilities;
public class PackagePreparer { public class PackagePreparer {
public static void main(String[] args) { public static void main(String[] args) throws IOException {
for (File f : new File("C:\\work\\fhirserver\\resources\\mihin").listFiles()) { for (File f : ManagedFileAccess.file("C:\\work\\fhirserver\\resources\\mihin").listFiles()) {
try { try {
org.hl7.fhir.dstu3.model.Resource r = new org.hl7.fhir.dstu3.formats.JsonParser().parse(new FileInputStream(f)); org.hl7.fhir.dstu3.model.Resource r = new org.hl7.fhir.dstu3.formats.JsonParser().parse(ManagedFileAccess.inStream(f));
if (r instanceof Bundle) { if (r instanceof Bundle) {
Bundle b = (Bundle) r; Bundle b = (Bundle) r;
for (BundleEntryComponent be : b.getEntry()) { for (BundleEntryComponent be : b.getEntry()) {
@ -60,7 +62,7 @@ public class PackagePreparer {
if (r4.getId().startsWith(r4.fhirType() + "-")) if (r4.getId().startsWith(r4.fhirType() + "-"))
be.getResource().setId(r4.getId().substring(r4.fhirType().length() + 1)); be.getResource().setId(r4.getId().substring(r4.fhirType().length() + 1));
if (be.getResource().hasId()) if (be.getResource().hasId())
new org.hl7.fhir.r4.formats.JsonParser().compose(new FileOutputStream(Utilities.path("C:\\work\\fhirserver\\resources\\fhir.test.data\\3.5.0\\package", be.getResource().fhirType() + "-" + be.getResource().getId() + ".json")), r4); new org.hl7.fhir.r4.formats.JsonParser().compose(ManagedFileAccess.outStream(Utilities.path("C:\\work\\fhirserver\\resources\\fhir.test.data\\3.5.0\\package", be.getResource().fhirType() + "-" + be.getResource().getId() + ".json")), r4);
else else
System.out.println(f.getName() + " bundle entry has no id"); System.out.println(f.getName() + " bundle entry has no id");
} catch (Exception e) { } catch (Exception e) {
@ -68,7 +70,7 @@ public class PackagePreparer {
} }
} }
} else if (r.hasId()) } else if (r.hasId())
new org.hl7.fhir.r4.formats.JsonParser().compose(new FileOutputStream(Utilities.path(Utilities.getDirectoryForFile(f.getAbsolutePath()), r.fhirType() + "-" + r.getId() + ".json")), VersionConvertorFactory_30_40.convertResource(r)); new org.hl7.fhir.r4.formats.JsonParser().compose(ManagedFileAccess.outStream(Utilities.path(Utilities.getDirectoryForFile(f.getAbsolutePath()), r.fhirType() + "-" + r.getId() + ".json")), VersionConvertorFactory_30_40.convertResource(r));
else else
System.out.println(f.getName() + " has no id"); System.out.println(f.getName() + " has no id");
} catch (Exception e) { } catch (Exception e) {

View File

@ -18,6 +18,7 @@ import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class PhinVadsImporter extends OIDBasedValueSetImporter { public class PhinVadsImporter extends OIDBasedValueSetImporter {
@ -32,13 +33,13 @@ public class PhinVadsImporter extends OIDBasedValueSetImporter {
self.process(args[0], args[1]); self.process(args[0], args[1]);
} }
private void process(String source, String dest) { private void process(String source, String dest) throws IOException {
for (File f : new File(source).listFiles()) { for (File f : ManagedFileAccess.file(source).listFiles()) {
try { try {
System.out.println("Process " + f.getName()); System.out.println("Process " + f.getName());
ValueSet vs = importValueSet(TextFile.fileToBytes(f)); ValueSet vs = importValueSet(TextFile.fileToBytes(f));
if (vs.getId() != null) { if (vs.getId() != null) {
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "ValueSet-" + vs.getId() + ".json")), vs); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "ValueSet-" + vs.getId() + ".json")), vs);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -23,6 +23,7 @@ import org.hl7.fhir.r5.utils.ResourceDependencyWalker;
import org.hl7.fhir.r5.utils.ResourceDependencyWalker.IResourceDependencyNotifier; import org.hl7.fhir.r5.utils.ResourceDependencyWalker.IResourceDependencyNotifier;
import org.hl7.fhir.r5.utils.ResourceMinifier; import org.hl7.fhir.r5.utils.ResourceMinifier;
import org.hl7.fhir.utilities.VersionUtilities; import org.hl7.fhir.utilities.VersionUtilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.JsonException; import org.hl7.fhir.utilities.json.JsonException;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager; import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
@ -47,7 +48,7 @@ public class ResourceDependencyPackageBuilder {
new ResourceDependencyWalker(ctxt, pckBuilder).walk(ctxt.fetchResource(CapabilityStatement.class, args[2])); new ResourceDependencyWalker(ctxt, pckBuilder).walk(ctxt.fetchResource(CapabilityStatement.class, args[2]));
pckBuilder.npm.save(new FileOutputStream(args[4])); pckBuilder.npm.save(ManagedFileAccess.outStream(args[4]));
} }
private static NpmPackage makeNpm(String vid, String version) throws JsonException, IOException { private static NpmPackage makeNpm(String vid, String version) throws JsonException, IOException {

View File

@ -13,6 +13,7 @@ import org.hl7.fhir.r4.terminologies.CodeSystemUtilities;
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -27,7 +28,7 @@ public class SPDXImporter {
public void generate(String[] args) throws Exception { public void generate(String[] args) throws Exception {
JsonObject json = JsonParser.parseObjectFromUrl("https://raw.githubusercontent.com/spdx/license-list-data/main/json/licenses.json"); JsonObject json = JsonParser.parseObjectFromUrl("https://raw.githubusercontent.com/spdx/license-list-data/main/json/licenses.json");
CodeSystem cs = (CodeSystem) new org.hl7.fhir.r4.formats.JsonParser().parse(new FileInputStream(args[0])); CodeSystem cs = (CodeSystem) new org.hl7.fhir.r4.formats.JsonParser().parse(ManagedFileAccess.inStream(args[0]));
cs.getConcept().clear(); cs.getConcept().clear();
cs.getProperty().clear(); cs.getProperty().clear();
cs.addProperty().setCode("reference").setType(PropertyType.STRING); cs.addProperty().setCode("reference").setType(PropertyType.STRING);
@ -58,7 +59,7 @@ public class SPDXImporter {
} }
} }
CodeSystemUtilities.sortAllCodes(cs); CodeSystemUtilities.sortAllCodes(cs);
new org.hl7.fhir.r4.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(args[1]), cs); new org.hl7.fhir.r4.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(args[1]), cs);
b = new StringBuilder(); b = new StringBuilder();
generateEnum("SPDXLicense", cs); generateEnum("SPDXLicense", cs);
TextFile.stringToFile(b.toString(), Utilities.changeFileExt(args[1], ".java")); TextFile.stringToFile(b.toString(), Utilities.changeFileExt(args[1], ".java"));

View File

@ -45,6 +45,7 @@ import org.hl7.fhir.dstu3.formats.JsonParser;
import org.hl7.fhir.dstu3.formats.XmlParser; import org.hl7.fhir.dstu3.formats.XmlParser;
import org.hl7.fhir.dstu3.model.Bundle; import org.hl7.fhir.dstu3.model.Bundle;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class Test { public class Test {
public final static String DEF_TS_SERVER = "http://fhir-dev.healthintersections.com.au/open"; public final static String DEF_TS_SERVER = "http://fhir-dev.healthintersections.com.au/open";
@ -58,13 +59,13 @@ public class Test {
public static void main(String[] args) { public static void main(String[] args) {
try { try {
CCDAConverter c = new CCDAConverter(new UcumEssenceService(UCUM_PATH), SimpleWorkerContext.fromPack(Utilities.path(SRC_PATH, "validation.zip"))); CCDAConverter c = new CCDAConverter(new UcumEssenceService(UCUM_PATH), SimpleWorkerContext.fromPack(Utilities.path(SRC_PATH, "validation.zip")));
Bundle a = c.convert(new FileInputStream(DEF_PATH + "ccda.xml")); Bundle a = c.convert(ManagedFileAccess.inStream(DEF_PATH + "ccda.xml"));
String fx = DEF_PATH + "output.xml"; String fx = DEF_PATH + "output.xml";
IParser x = new XmlParser().setOutputStyle(OutputStyle.PRETTY); IParser x = new XmlParser().setOutputStyle(OutputStyle.PRETTY);
x.compose(new FileOutputStream(fx), a); x.compose(ManagedFileAccess.outStream(fx), a);
String fj = DEF_PATH + "output.json"; String fj = DEF_PATH + "output.json";
IParser j = new JsonParser().setOutputStyle(OutputStyle.PRETTY); IParser j = new JsonParser().setOutputStyle(OutputStyle.PRETTY);
j.compose(new FileOutputStream(fj), a); j.compose(ManagedFileAccess.outStream(fj), a);
System.out.println("done. save as " + fx + " and " + fj); System.out.println("done. save as " + fx + " and " + fj);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -30,6 +30,7 @@ import org.hl7.fhir.r4.utils.client.FHIRToolingClient;
import org.hl7.fhir.r4.terminologies.JurisdictionUtilities; import org.hl7.fhir.r4.terminologies.JurisdictionUtilities;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonArray; import org.hl7.fhir.utilities.json.model.JsonArray;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.model.JsonProperty; import org.hl7.fhir.utilities.json.model.JsonProperty;
@ -47,7 +48,7 @@ public class VSACImporter extends OIDBasedValueSetImporter {
} }
private void process(String source, String dest, String apiKey, boolean onlyNew) throws FHIRException, IOException, URISyntaxException { private void process(String source, String dest, String apiKey, boolean onlyNew) throws FHIRException, IOException, URISyntaxException {
CSVReader csv = new CSVReader(new FileInputStream(source)); CSVReader csv = new CSVReader(ManagedFileAccess.inStream(source));
csv.readHeaders(); csv.readHeaders();
Map<String, String> errs = new HashMap<>(); Map<String, String> errs = new HashMap<>();
@ -59,13 +60,13 @@ public class VSACImporter extends OIDBasedValueSetImporter {
CapabilityStatement cs = fhirToolingClient.getCapabilitiesStatement(); CapabilityStatement cs = fhirToolingClient.getCapabilitiesStatement();
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
json.setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "vsac-capability-statmenet.json")), cs); json.setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "vsac-capability-statmenet.json")), cs);
System.out.println("Loading"); System.out.println("Loading");
List<String> oids = new ArrayList<>(); List<String> oids = new ArrayList<>();
while (csv.line()) { while (csv.line()) {
String oid = csv.cell("OID"); String oid = csv.cell("OID");
if (!onlyNew || !(new File(Utilities.path(dest, "ValueSet-" + oid + ".json")).exists())) { if (!onlyNew || !(ManagedFileAccess.file(Utilities.path(dest, "ValueSet-" + oid + ".json")).exists())) {
oids.add(oid); oids.add(oid);
} }
} }
@ -99,7 +100,7 @@ public class VSACImporter extends OIDBasedValueSetImporter {
for (String oid : errs.keySet()) { for (String oid : errs.keySet()) {
oo.addIssue().setSeverity(IssueSeverity.ERROR).setCode(IssueType.EXCEPTION).setDiagnostics(errs.get(oid)).addLocation(oid); oo.addIssue().setSeverity(IssueSeverity.ERROR).setCode(IssueType.EXCEPTION).setDiagnostics(errs.get(oid)).addLocation(oid);
} }
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "other", "OperationOutcome-vsac-errors.json")), oo); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "other", "OperationOutcome-vsac-errors.json")), oo);
System.out.println("Done. " + i + " ValueSets in "+Utilities.describeDuration(System.currentTimeMillis() - tt)); System.out.println("Done. " + i + " ValueSets in "+Utilities.describeDuration(System.currentTimeMillis() - tt));
} }
@ -164,7 +165,7 @@ public class VSACImporter extends OIDBasedValueSetImporter {
} }
vs.setName(makeValidName(vs.getName())); vs.setName(makeValidName(vs.getName()));
JurisdictionUtilities.setJurisdictionCountry(vs.getJurisdiction(), "US"); JurisdictionUtilities.setJurisdictionCountry(vs.getJurisdiction(), "US");
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dest, "ValueSet-" + oid + ".json")), vs); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(dest, "ValueSet-" + oid + ".json")), vs);
return true; return true;
} }

View File

@ -4,6 +4,7 @@ import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.model.JsonProperty; import org.hl7.fhir.utilities.json.model.JsonProperty;
import org.hl7.fhir.utilities.npm.NpmPackage; import org.hl7.fhir.utilities.npm.NpmPackage;
@ -11,7 +12,7 @@ import org.hl7.fhir.utilities.npm.NpmPackage;
public class XMLPackageConvertor { public class XMLPackageConvertor {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
new XMLPackageConvertor().process(new File("C:\\web\\hl7.org\\fhir")); new XMLPackageConvertor().process(ManagedFileAccess.file("C:\\web\\hl7.org\\fhir"));
} }
private void process(File folder) throws IOException { private void process(File folder) throws IOException {
@ -21,7 +22,7 @@ public class XMLPackageConvertor {
} else { } else {
if (f.getName().endsWith(".tgz")) { if (f.getName().endsWith(".tgz")) {
System.out.println("Package " + f.getAbsolutePath()); System.out.println("Package " + f.getAbsolutePath());
NpmPackage p = NpmPackage.fromPackage(new FileInputStream(f)); NpmPackage p = NpmPackage.fromPackage(ManagedFileAccess.inStream(f));
if (p.getNpm().has("dependencies")) { if (p.getNpm().has("dependencies")) {
JsonObject dep = p.getNpm().getJsonObject("dependencies"); JsonObject dep = p.getNpm().getJsonObject("dependencies");
if (dep.getProperties().isEmpty()) { if (dep.getProperties().isEmpty()) {

View File

@ -19,6 +19,7 @@ import org.hl7.fhir.dstu2.model.StructureDefinition;
import org.hl7.fhir.dstu2.model.StructureDefinition.StructureDefinitionSnapshotComponent; import org.hl7.fhir.dstu2.model.StructureDefinition.StructureDefinitionSnapshotComponent;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.JsonTrackingParser; import org.hl7.fhir.utilities.json.JsonTrackingParser;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
@ -66,7 +67,7 @@ public class XVerPackegeFixer {
public static void main(String[] args) throws FileNotFoundException, ParserConfigurationException, SAXException, IOException { public static void main(String[] args) throws FileNotFoundException, ParserConfigurationException, SAXException, IOException {
modCount = 0; modCount = 0;
for (File f : new File(args[0]).listFiles()) { for (File f : ManagedFileAccess.file(args[0]).listFiles()) {
if (f.getName().startsWith("xver-") && f.getName().contains("1.0")) { if (f.getName().startsWith("xver-") && f.getName().contains("1.0")) {
JsonObject j = JsonTrackingParser.parseJson(f); JsonObject j = JsonTrackingParser.parseJson(f);
fixUp(j, f.getName()); fixUp(j, f.getName());
@ -164,7 +165,7 @@ public class XVerPackegeFixer {
if (map5.containsKey(tn)) { if (map5.containsKey(tn)) {
sd = map5.get(tn); sd = map5.get(tn);
} else { } else {
sd = (org.hl7.fhir.r5.model.StructureDefinition) new org.hl7.fhir.r5.formats.JsonParser().parse(new FileInputStream(Utilities.path(R5_FOLDER, "StructureDefinition-"+tn+".json"))); sd = (org.hl7.fhir.r5.model.StructureDefinition) new org.hl7.fhir.r5.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path(R5_FOLDER, "StructureDefinition-"+tn+".json")));
map5.put(tn, sd); map5.put(tn, sd);
} }
for (org.hl7.fhir.r5.model.ElementDefinition ed : sd.getSnapshot().getElement()) { for (org.hl7.fhir.r5.model.ElementDefinition ed : sd.getSnapshot().getElement()) {
@ -220,7 +221,7 @@ public class XVerPackegeFixer {
if (map4.containsKey(tn)) { if (map4.containsKey(tn)) {
sd = map4.get(tn); sd = map4.get(tn);
} else { } else {
sd = (org.hl7.fhir.r4.model.StructureDefinition) new org.hl7.fhir.r4.formats.JsonParser().parse(new FileInputStream(Utilities.path(R4_FOLDER, "StructureDefinition-"+tn+".json"))); sd = (org.hl7.fhir.r4.model.StructureDefinition) new org.hl7.fhir.r4.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path(R4_FOLDER, "StructureDefinition-"+tn+".json")));
map4.put(tn, sd); map4.put(tn, sd);
} }
for (org.hl7.fhir.r4.model.ElementDefinition ed : sd.getSnapshot().getElement()) { for (org.hl7.fhir.r4.model.ElementDefinition ed : sd.getSnapshot().getElement()) {
@ -277,7 +278,7 @@ public class XVerPackegeFixer {
if (map3.containsKey(tn)) { if (map3.containsKey(tn)) {
sd = map3.get(tn); sd = map3.get(tn);
} else { } else {
sd = (org.hl7.fhir.dstu3.model.StructureDefinition) new org.hl7.fhir.dstu3.formats.JsonParser().parse(new FileInputStream(Utilities.path(R3_FOLDER, "StructureDefinition-"+tn+".json"))); sd = (org.hl7.fhir.dstu3.model.StructureDefinition) new org.hl7.fhir.dstu3.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path(R3_FOLDER, "StructureDefinition-"+tn+".json")));
map3.put(tn, sd); map3.put(tn, sd);
} }
for (org.hl7.fhir.dstu3.model.ElementDefinition ed : sd.getSnapshot().getElement()) { for (org.hl7.fhir.dstu3.model.ElementDefinition ed : sd.getSnapshot().getElement()) {
@ -383,7 +384,7 @@ public class XVerPackegeFixer {
if (map2.containsKey(tn)) { if (map2.containsKey(tn)) {
sd = map2.get(tn); sd = map2.get(tn);
} else { } else {
sd = (org.hl7.fhir.dstu2.model.StructureDefinition) new org.hl7.fhir.dstu2.formats.JsonParser().parse(new FileInputStream(Utilities.path(R2_FOLDER, "StructureDefinition-"+tn+".json"))); sd = (org.hl7.fhir.dstu2.model.StructureDefinition) new org.hl7.fhir.dstu2.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path(R2_FOLDER, "StructureDefinition-"+tn+".json")));
map2.put(tn, sd); map2.put(tn, sd);
} }
return sd; return sd;
@ -431,7 +432,7 @@ public class XVerPackegeFixer {
if (map2b.containsKey(tn)) { if (map2b.containsKey(tn)) {
sd = map2b.get(tn); sd = map2b.get(tn);
} else { } else {
sd = (org.hl7.fhir.dstu2016may.model.StructureDefinition) new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(new FileInputStream(Utilities.path(R2B_FOLDER, "StructureDefinition-"+tn+".json"))); sd = (org.hl7.fhir.dstu2016may.model.StructureDefinition) new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path(R2B_FOLDER, "StructureDefinition-"+tn+".json")));
map2b.put(tn, sd); map2b.put(tn, sd);
} }
for (org.hl7.fhir.dstu2016may.model.ElementDefinition ed : sd.getSnapshot().getElement()) { for (org.hl7.fhir.dstu2016may.model.ElementDefinition ed : sd.getSnapshot().getElement()) {

View File

@ -46,6 +46,7 @@ import org.hl7.fhir.dstu3.formats.XmlParser;
import org.hl7.fhir.dstu3.model.ElementDefinition; import org.hl7.fhir.dstu3.model.ElementDefinition;
import org.hl7.fhir.dstu3.model.Enumerations.PublicationStatus; import org.hl7.fhir.dstu3.model.Enumerations.PublicationStatus;
import org.hl7.fhir.dstu3.model.StructureDefinition; import org.hl7.fhir.dstu3.model.StructureDefinition;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -91,11 +92,11 @@ public class ADLImporter {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
adlConfig = builder.parse(new FileInputStream(config)).getDocumentElement(); adlConfig = builder.parse(ManagedFileAccess.inStream(config)).getDocumentElement();
// load ADL // load ADL
builder = factory.newDocumentBuilder(); builder = factory.newDocumentBuilder();
adl = builder.parse(new FileInputStream(source)).getDocumentElement(); adl = builder.parse(ManagedFileAccess.inStream(source)).getDocumentElement();
check("root", adl.getNamespaceURI(), "http://schemas.openehr.org/v1", "Wrong namespace for ADL XML"); check("root", adl.getNamespaceURI(), "http://schemas.openehr.org/v1", "Wrong namespace for ADL XML");
check("root", adl.getNodeName(), "archetype", "Wrong XML for ADL XML"); check("root", adl.getNodeName(), "archetype", "Wrong XML for ADL XML");
@ -150,7 +151,7 @@ public class ADLImporter {
genElements(sd, root.getName(), root); genElements(sd, root.getName(), root);
// save // save
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(dest), sd); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(dest), sd);
System.out.println("done. saved as " + dest); System.out.println("done. saved as " + dest);
} }

View File

@ -110,6 +110,7 @@ import org.hl7.fhir.dstu3.utils.NarrativeGenerator;
import org.hl7.fhir.dstu3.utils.ResourceUtilities; import org.hl7.fhir.dstu3.utils.ResourceUtilities;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.ZipGenerator; import org.hl7.fhir.utilities.ZipGenerator;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
import org.hl7.fhir.utilities.xhtml.NodeType; import org.hl7.fhir.utilities.xhtml.NodeType;
@ -178,7 +179,7 @@ public class ArgonautConverter extends ConverterBase {
} }
public void convert(String sourceFolder, Coding clss) throws Exception { public void convert(String sourceFolder, Coding clss) throws Exception {
File source = new File(sourceFolder); File source = ManagedFileAccess.file(sourceFolder);
for (String f : source.list()) { for (String f : source.list()) {
convert(sourceFolder, f, clss); convert(sourceFolder, f, clss);
} }
@ -221,13 +222,13 @@ public class ArgonautConverter extends ConverterBase {
} }
private void convert(String sourceFolder, String filename, Coding clss) throws IOException { private void convert(String sourceFolder, String filename, Coding clss) throws IOException {
if (new File(Utilities.path(sourceFolder, filename)).length() == 0) if (ManagedFileAccess.file(Utilities.path(sourceFolder, filename)).length() == 0)
return; return;
CDAUtilities cda; CDAUtilities cda;
try { try {
System.out.println("Process " + Utilities.path(sourceFolder, filename)); System.out.println("Process " + Utilities.path(sourceFolder, filename));
cda = new CDAUtilities(new FileInputStream(Utilities.path(sourceFolder, filename))); cda = new CDAUtilities(ManagedFileAccess.inStream(Utilities.path(sourceFolder, filename)));
zipJ = new ZipGenerator(Utilities.path(destFolder, "json/doc", Utilities.changeFileExt(filename, ".json.zip"))); zipJ = new ZipGenerator(Utilities.path(destFolder, "json/doc", Utilities.changeFileExt(filename, ".json.zip")));
zipX = new ZipGenerator(Utilities.path(destFolder, "xml/doc", Utilities.changeFileExt(filename, ".xml.zip"))); zipX = new ZipGenerator(Utilities.path(destFolder, "xml/doc", Utilities.changeFileExt(filename, ".xml.zip")));
Element doc = cda.getElement(); Element doc = cda.getElement();
@ -1320,7 +1321,7 @@ public class ArgonautConverter extends ConverterBase {
Binary binary = new Binary(); Binary binary = new Binary();
binary.setId(context.getBaseId() + "-binary"); binary.setId(context.getBaseId() + "-binary");
binary.setContentType("application/hl7-v3+xml"); binary.setContentType("application/hl7-v3+xml");
binary.setContent(IOUtils.toByteArray(new FileInputStream(Utilities.path(sourceFolder, filename)))); binary.setContent(IOUtils.toByteArray(ManagedFileAccess.inStream(Utilities.path(sourceFolder, filename))));
saveResource(binary); saveResource(binary);
} }

View File

@ -59,6 +59,7 @@ import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent;
import org.hl7.fhir.dstu3.utils.ToolingExtensions; import org.hl7.fhir.dstu3.utils.ToolingExtensions;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -125,7 +126,7 @@ public class ISO21090Importer {
addParentProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getParent(), false, true); addParentProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getParent(), false, true);
produceProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getProperties(), false, true); produceProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getProperties(), false, true);
ed.getBase().setPath(ed.getPath()).setMin(ed.getMin()).setMax(ed.getMax()); ed.getBase().setPath(ed.getPath()).setMin(ed.getMin()).setMax(ed.getMax());
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "iso21090\\StructureDefinition-" + dt.getName() + ".xml")), sd); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "iso21090\\StructureDefinition-" + dt.getName() + ".xml")), sd);
} }
private void addParentProperties(List<ElementDefinition> elements, String name, String parent, boolean attrMode, boolean snapshot) throws FHIRFormatError { private void addParentProperties(List<ElementDefinition> elements, String name, String parent, boolean attrMode, boolean snapshot) throws FHIRFormatError {
@ -176,7 +177,7 @@ public class ISO21090Importer {
for (String code : evs.getCodes()) { for (String code : evs.getCodes()) {
inc.addConcept().setCode(code); inc.addConcept().setCode(code);
} }
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "iso21090\\ValueSet-" + evs.getName() + ".xml")), vs); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "iso21090\\ValueSet-" + evs.getName() + ".xml")), vs);
} }
private void processDataTypes() { private void processDataTypes() {
@ -319,7 +320,7 @@ public class ISO21090Importer {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false); factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new FileInputStream("C:\\work\\projects\\org.hl7.v3.dt\\iso\\iso-21090-datatypes.xsd")); Document doc = builder.parse(ManagedFileAccess.inStream("C:\\work\\projects\\org.hl7.v3.dt\\iso\\iso-21090-datatypes.xsd"));
schema = doc.getDocumentElement(); schema = doc.getDocumentElement();
} }

View File

@ -49,6 +49,7 @@ import org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship;
import org.hl7.fhir.r5.model.Enumerations.PublicationStatus; import org.hl7.fhir.r5.model.Enumerations.PublicationStatus;
import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CSVReader;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class SearchParameterProcessor { public class SearchParameterProcessor {
@ -120,7 +121,7 @@ public class SearchParameterProcessor {
e.addTarget().setCode(d).setRelationship(ConceptMapRelationship.RELATEDTO); e.addTarget().setCode(d).setRelationship(ConceptMapRelationship.RELATEDTO);
} }
} }
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(ROOT, "ConceptMap-" + map.getId() + ".json")), map); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(ROOT, "ConceptMap-" + map.getId() + ".json")), map);
} }
private SourceElementComponent makeElement(String code, ConceptMapGroupComponent group) { private SourceElementComponent makeElement(String code, ConceptMapGroupComponent group) {
@ -208,7 +209,7 @@ public class SearchParameterProcessor {
} }
private void load4() throws FHIRFormatError, IOException { private void load4() throws FHIRFormatError, IOException {
org.hl7.fhir.r4.model.Bundle bundle = (org.hl7.fhir.r4.model.Bundle) new org.hl7.fhir.r4.formats.JsonParser().parse(new FileInputStream(Utilities.path("[tmp]", "sp4.json"))); org.hl7.fhir.r4.model.Bundle bundle = (org.hl7.fhir.r4.model.Bundle) new org.hl7.fhir.r4.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path("[tmp]", "sp4.json")));
for (org.hl7.fhir.r4.model.Bundle.BundleEntryComponent be : bundle.getEntry()) { for (org.hl7.fhir.r4.model.Bundle.BundleEntryComponent be : bundle.getEntry()) {
org.hl7.fhir.r4.model.SearchParameter sp = (org.hl7.fhir.r4.model.SearchParameter) be.getResource(); org.hl7.fhir.r4.model.SearchParameter sp = (org.hl7.fhir.r4.model.SearchParameter) be.getResource();
for (org.hl7.fhir.r4.model.CodeType br : sp.getBase()) { for (org.hl7.fhir.r4.model.CodeType br : sp.getBase()) {
@ -221,7 +222,7 @@ public class SearchParameterProcessor {
} }
private void load3() throws FHIRFormatError, IOException { private void load3() throws FHIRFormatError, IOException {
org.hl7.fhir.dstu3.model.Bundle bundle = (org.hl7.fhir.dstu3.model.Bundle) new org.hl7.fhir.dstu3.formats.JsonParser().parse(new FileInputStream(Utilities.path("[tmp]", "sp3.json"))); org.hl7.fhir.dstu3.model.Bundle bundle = (org.hl7.fhir.dstu3.model.Bundle) new org.hl7.fhir.dstu3.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path("[tmp]", "sp3.json")));
for (org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent be : bundle.getEntry()) { for (org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent be : bundle.getEntry()) {
org.hl7.fhir.dstu3.model.SearchParameter sp = (org.hl7.fhir.dstu3.model.SearchParameter) be.getResource(); org.hl7.fhir.dstu3.model.SearchParameter sp = (org.hl7.fhir.dstu3.model.SearchParameter) be.getResource();
for (org.hl7.fhir.dstu3.model.CodeType br : sp.getBase()) { for (org.hl7.fhir.dstu3.model.CodeType br : sp.getBase()) {
@ -234,7 +235,7 @@ public class SearchParameterProcessor {
} }
private void load2() throws FHIRFormatError, IOException { private void load2() throws FHIRFormatError, IOException {
org.hl7.fhir.dstu2.model.Bundle bundle = (org.hl7.fhir.dstu2.model.Bundle) new org.hl7.fhir.dstu2.formats.JsonParser().parse(new FileInputStream(Utilities.path("[tmp]", "sp2.json"))); org.hl7.fhir.dstu2.model.Bundle bundle = (org.hl7.fhir.dstu2.model.Bundle) new org.hl7.fhir.dstu2.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path("[tmp]", "sp2.json")));
for (org.hl7.fhir.dstu2.model.Bundle.BundleEntryComponent be : bundle.getEntry()) { for (org.hl7.fhir.dstu2.model.Bundle.BundleEntryComponent be : bundle.getEntry()) {
org.hl7.fhir.dstu2.model.SearchParameter sp = (org.hl7.fhir.dstu2.model.SearchParameter) be.getResource(); org.hl7.fhir.dstu2.model.SearchParameter sp = (org.hl7.fhir.dstu2.model.SearchParameter) be.getResource();
String br = sp.getBase(); String br = sp.getBase();
@ -246,7 +247,7 @@ public class SearchParameterProcessor {
} }
private void load2b() throws FHIRFormatError, IOException { private void load2b() throws FHIRFormatError, IOException {
org.hl7.fhir.dstu2016may.model.Bundle bundle = (org.hl7.fhir.dstu2016may.model.Bundle) new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(new FileInputStream(Utilities.path("[tmp]", "sp2b.json"))); org.hl7.fhir.dstu2016may.model.Bundle bundle = (org.hl7.fhir.dstu2016may.model.Bundle) new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(ManagedFileAccess.inStream(Utilities.path("[tmp]", "sp2b.json")));
for (org.hl7.fhir.dstu2016may.model.Bundle.BundleEntryComponent be : bundle.getEntry()) { for (org.hl7.fhir.dstu2016may.model.Bundle.BundleEntryComponent be : bundle.getEntry()) {
org.hl7.fhir.dstu2016may.model.SearchParameter sp = (org.hl7.fhir.dstu2016may.model.SearchParameter) be.getResource(); org.hl7.fhir.dstu2016may.model.SearchParameter sp = (org.hl7.fhir.dstu2016may.model.SearchParameter) be.getResource();
String br = sp.getBase(); String br = sp.getBase();
@ -258,7 +259,7 @@ public class SearchParameterProcessor {
} }
private void loadCsv() throws IOException, FHIRException { private void loadCsv() throws IOException, FHIRException {
CSVReader csv = new CSVReader(new FileInputStream("C:\\work\\org.hl7.fhir\\org.fhir.interversion\\work\\search-params.csv")); CSVReader csv = new CSVReader(ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\org.fhir.interversion\\work\\search-params.csv"));
csv.readHeaders(); csv.readHeaders();
while (csv.line()) { while (csv.line()) {
String r4 = csv.cell("R4"); String r4 = csv.cell("R4");

View File

@ -21,11 +21,12 @@ import org.hl7.fhir.r4.model.Provenance;
import org.hl7.fhir.r4.model.Provenance.ProvenanceAgentComponent; import org.hl7.fhir.r4.model.Provenance.ProvenanceAgentComponent;
import org.hl7.fhir.r4.model.Resource; import org.hl7.fhir.r4.model.Resource;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class UTGCaseSensitivePopulator { public class UTGCaseSensitivePopulator {
public static void main(String[] args) throws FileNotFoundException, IOException { public static void main(String[] args) throws FileNotFoundException, IOException {
new UTGCaseSensitivePopulator().process(new File(args[0])); new UTGCaseSensitivePopulator().process(ManagedFileAccess.file(args[0]));
} }
@ -35,7 +36,7 @@ public class UTGCaseSensitivePopulator {
bundle.setId("hxutg1-1-0-12"); bundle.setId("hxutg1-1-0-12");
scanFolders(root, bundle); scanFolders(root, bundle);
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(root.getAbsolutePath(), "input", "sourceOfTruth", "history", "utgrel1hx-1-0-12.json")), bundle); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(root.getAbsolutePath(), "input", "sourceOfTruth", "history", "utgrel1hx-1-0-12.json")), bundle);
System.out.println("Done"); System.out.println("Done");
} }
@ -60,10 +61,10 @@ public class UTGCaseSensitivePopulator {
private void processFile(File f, Bundle bundle, IParser parser, Date d, Date dt) { private void processFile(File f, Bundle bundle, IParser parser, Date d, Date dt) {
try { try {
Resource r = parser.parse(new FileInputStream(f)); Resource r = parser.parse(ManagedFileAccess.inStream(f));
if (r instanceof CodeSystem) { if (r instanceof CodeSystem) {
if (processCodeSystem((CodeSystem) r, bundle, d, dt)) { if (processCodeSystem((CodeSystem) r, bundle, d, dt)) {
parser.setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), r); parser.setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} }
} catch (Exception e) { } catch (Exception e) {

View File

@ -29,6 +29,7 @@ import org.hl7.fhir.r5.model.Resource;
import org.hl7.fhir.r5.model.ValueSet; import org.hl7.fhir.r5.model.ValueSet;
import org.hl7.fhir.r5.utils.ToolingExtensions; import org.hl7.fhir.r5.utils.ToolingExtensions;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager; import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
import org.hl7.fhir.utilities.npm.NpmPackage; import org.hl7.fhir.utilities.npm.NpmPackage;
import org.hl7.fhir.utilities.npm.NpmPackage.PackageResourceInformation; import org.hl7.fhir.utilities.npm.NpmPackage.PackageResourceInformation;
@ -47,7 +48,7 @@ public class UTGVersionSorter {
private void execute(String source) throws IOException { private void execute(String source) throws IOException {
List<CanonicalResourceAnalysis> list = new ArrayList<>(); List<CanonicalResourceAnalysis> list = new ArrayList<>();
System.out.println("Loading UTG"); System.out.println("Loading UTG");
loadFromSource(list, new File(source)); loadFromSource(list, ManagedFileAccess.file(source));
Map<String, CanonicalResource> r2 = loadPackageR2("hl7.fhir.r2.core"); Map<String, CanonicalResource> r2 = loadPackageR2("hl7.fhir.r2.core");
Map<String, CanonicalResource> r3 = loadPackageR3("hl7.fhir.r3.core"); Map<String, CanonicalResource> r3 = loadPackageR3("hl7.fhir.r3.core");
@ -58,7 +59,7 @@ public class UTGVersionSorter {
cr.analyse(r2, r3, r4); cr.analyse(r2, r3, r4);
} }
Bundle b = (Bundle) new JsonParser().parse(new FileInputStream("C:\\work\\org.hl7.fhir.igs\\UTG\\input\\sourceOfTruth\\history\\utgrel1hx-1-0-6.json")); Bundle b = (Bundle) new JsonParser().parse(ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir.igs\\UTG\\input\\sourceOfTruth\\history\\utgrel1hx-1-0-6.json"));
System.out.println("Summary"); System.out.println("Summary");
for (CanonicalResourceAnalysis cr : list) { for (CanonicalResourceAnalysis cr : list) {
@ -79,10 +80,10 @@ public class UTGVersionSorter {
pa.getWho().setDisplay("Vocabulary WG"); pa.getWho().setDisplay("Vocabulary WG");
CanonicalResource res = cr.resource; CanonicalResource res = cr.resource;
res.setVersion(cr.recommendation); res.setVersion(cr.recommendation);
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(cr.filename), res); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(cr.filename), res);
} }
System.out.println(); System.out.println();
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream("C:\\work\\org.hl7.fhir.igs\\UTG\\input\\sourceOfTruth\\history\\utgrel1hx-1-0-6.json"), b); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir.igs\\UTG\\input\\sourceOfTruth\\history\\utgrel1hx-1-0-6.json"), b);
System.out.println("Done"); System.out.println("Done");
} }
@ -134,7 +135,7 @@ public class UTGVersionSorter {
loadFromSource(list, f); loadFromSource(list, f);
} else if (f.getName().endsWith(".xml")) { } else if (f.getName().endsWith(".xml")) {
try { try {
Resource r = new XmlParser().parse(new FileInputStream(f)); Resource r = new XmlParser().parse(ManagedFileAccess.inStream(f));
if (r instanceof CanonicalResource) { if (r instanceof CanonicalResource) {
CanonicalResource cr = (CanonicalResource) r; CanonicalResource cr = (CanonicalResource) r;
cr.setWebPath(f.getAbsolutePath()); cr.setWebPath(f.getAbsolutePath());

View File

@ -15,6 +15,7 @@ import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_50;
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_40_50; import org.hl7.fhir.convertors.factory.VersionConvertorFactory_40_50;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.VersionUtilities; import org.hl7.fhir.utilities.VersionUtilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.json.model.JsonArray; import org.hl7.fhir.utilities.json.model.JsonArray;
import org.hl7.fhir.utilities.json.model.JsonObject; import org.hl7.fhir.utilities.json.model.JsonObject;
import org.hl7.fhir.utilities.json.parser.JsonParser; import org.hl7.fhir.utilities.json.parser.JsonParser;
@ -479,7 +480,7 @@ public class CorePackageVersionConvertor {
// build a new package // build a new package
System.out.println("Convert "+packageSource+" to "+versionTarget); System.out.println("Convert "+packageSource+" to "+versionTarget);
NpmPackage src = NpmPackage.fromPackage(new FileInputStream(packageSource)); NpmPackage src = NpmPackage.fromPackage(ManagedFileAccess.inStream(packageSource));
IContentConvertor conv = contentConvertorFactory(src.fhirVersion(), versionTarget); IContentConvertor conv = contentConvertorFactory(src.fhirVersion(), versionTarget);
NpmPackage dst = NpmPackage.empty(); NpmPackage dst = NpmPackage.empty();
@ -510,7 +511,7 @@ public class CorePackageVersionConvertor {
} }
} }
} }
dst.save(new FileOutputStream(Utilities.changeFileExt(packageSource, ".as."+VersionUtilities.getNameForVersion(versionTarget).toLowerCase()+".tgz"))); dst.save(ManagedFileAccess.outStream(Utilities.changeFileExt(packageSource, ".as."+VersionUtilities.getNameForVersion(versionTarget).toLowerCase()+".tgz")));
} }
private IContentConvertor contentConvertorFactory(String fhirVersion, String versionTarget) throws Exception { private IContentConvertor contentConvertorFactory(String fhirVersion, String versionTarget) throws Exception {

View File

@ -33,7 +33,7 @@ public class RoundTripTests {
@Parameters(name = "{index}: file {0}") @Parameters(name = "{index}: file {0}")
public static Iterable<Object[]> data() throws ParserConfigurationException, SAXException, IOException { public static Iterable<Object[]> data() throws ParserConfigurationException, SAXException, IOException {
File dir = new File(EXAMPLES_DIR); File dir = ManagedFileAccess.file(EXAMPLES_DIR);
String[] list = dir.list(); String[] list = dir.list();
List<Object[]> objects = new ArrayList<Object[]>(list.length); List<Object[]> objects = new ArrayList<Object[]>(list.length);
@ -77,7 +77,7 @@ public class RoundTripTests {
} }
private void save(byte[] src, String path) throws IOException { private void save(byte[] src, String path) throws IOException {
File f = new File(path); File f = ManagedFileAccess.file(path);
if (f.exists()) { if (f.exists()) {
f.delete(); f.delete();
} }

View File

@ -23,7 +23,7 @@ public class Configuration {
public Configuration(String path) throws FileNotFoundException, IOException { public Configuration(String path) throws FileNotFoundException, IOException {
license = TextFile.fileToString(Utilities.path(path, "license.txt")); license = TextFile.fileToString(Utilities.path(path, "license.txt"));
ini = new IniFile(Utilities.path(path, "configuration.ini")); ini = new IniFile(Utilities.path(path, "configuration.ini"));
for (File jfn : new File(path).listFiles()) { for (File jfn : ManagedFileAccess.file(path).listFiles()) {
if (jfn.getName().endsWith(".java")) { if (jfn.getName().endsWith(".java")) {
adornments.put(Utilities.changeFileExt(jfn.getName(), ""), TextFile.fileToString(jfn)); adornments.put(Utilities.changeFileExt(jfn.getName(), ""), TextFile.fileToString(jfn));
} }

View File

@ -483,7 +483,7 @@ public class JavaResourceGenerator extends JavaBaseGenerator {
//// write(" }\r\n"); //// write(" }\r\n");
//// ////
//// // now, generate the implementation //// // now, generate the implementation
//// JavaPatternImplGenerator jrg = new JavaPatternImplGenerator(new FileOutputStream(javaPatternDir+jn+namenn+"Impl.java"), definitions, adornments, enumInfo); //// JavaPatternImplGenerator jrg = new JavaPatternImplGenerator(ManagedFileAccess.outStream(javaPatternDir+jn+namenn+"Impl.java"), definitions, adornments, enumInfo);
//// jrg.generate(resourceDefn.getRoot(), jn, JavaGenClass.Resource, null, genDate, version, false, null, null, namenn, root); //// jrg.generate(resourceDefn.getRoot(), jn, JavaGenClass.Resource, null, genDate, version, false, null, null, namenn, root);
//// jrg.close(); //// jrg.close();
//// ////

View File

@ -58,9 +58,9 @@ public class JavaExtensionsGenerator {
} }
} }
JavaExtensionsFactoryGenerator gen = new JavaExtensionsFactoryGenerator(new FileOutputStream(Utilities.path(path, "Extensions.java")), master, config, version, date, jid, elementInfo, genClassList); JavaExtensionsFactoryGenerator gen = new JavaExtensionsFactoryGenerator(ManagedFileAccess.outStream(Utilities.path(path, "Extensions.java")), master, config, version, date, jid, elementInfo, genClassList);
gen.start(); gen.start();
JavaConstantsGenerator cgen = new JavaConstantsGenerator(new FileOutputStream(Utilities.path(path, "ExtensionConstants.java")), master, config, version, date, jid); JavaConstantsGenerator cgen = new JavaConstantsGenerator(ManagedFileAccess.outStream(Utilities.path(path, "ExtensionConstants.java")), master, config, version, date, jid);
cgen.start(); cgen.start();
for (String url : urls) { for (String url : urls) {
StructureDefinition sd = extensions.get(url); StructureDefinition sd = extensions.get(url);

View File

@ -89,19 +89,19 @@ public class JavaCoreGenerator {
System.out.println("Generate Model in "+dest); System.out.println("Generate Model in "+dest);
System.out.println(" .. Constants"); System.out.println(" .. Constants");
JavaConstantsGenerator cgen = new JavaConstantsGenerator(new FileOutputStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "Constants.java")), master, config, date, npm.version(), jid); JavaConstantsGenerator cgen = new JavaConstantsGenerator(ManagedFileAccess.outStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "Constants.java")), master, config, date, npm.version(), jid);
cgen.generate(); cgen.generate();
cgen.close(); cgen.close();
System.out.println(" .. Enumerations"); System.out.println(" .. Enumerations");
JavaEnumerationsGenerator egen = new JavaEnumerationsGenerator(new FileOutputStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "Enumerations.java")), master, config, date, npm.version(), jid); JavaEnumerationsGenerator egen = new JavaEnumerationsGenerator(ManagedFileAccess.outStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "Enumerations.java")), master, config, date, npm.version(), jid);
egen.generate(); egen.generate();
egen.close(); egen.close();
JavaFactoryGenerator fgen = new JavaFactoryGenerator(new FileOutputStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "ResourceFactory.java")), master, config, date, npm.version(), jid); JavaFactoryGenerator fgen = new JavaFactoryGenerator(ManagedFileAccess.outStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "ResourceFactory.java")), master, config, date, npm.version(), jid);
JavaTypeGenerator tgen = new JavaTypeGenerator(new FileOutputStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "ResourceType.java")), master, config, date, npm.version(), jid); JavaTypeGenerator tgen = new JavaTypeGenerator(ManagedFileAccess.outStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", "ResourceType.java")), master, config, date, npm.version(), jid);
JavaParserJsonGenerator jgen = new JavaParserJsonGenerator(new FileOutputStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "formats", "JsonParser.java")), master, config, date, npm.version(), jid); JavaParserJsonGenerator jgen = new JavaParserJsonGenerator(ManagedFileAccess.outStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "formats", "JsonParser.java")), master, config, date, npm.version(), jid);
JavaParserXmlGenerator xgen = new JavaParserXmlGenerator(new FileOutputStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "formats", "XmlParser.java")), master, config, date, npm.version(), jid); JavaParserXmlGenerator xgen = new JavaParserXmlGenerator(ManagedFileAccess.outStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "formats", "XmlParser.java")), master, config, date, npm.version(), jid);
JavaParserRdfGenerator rgen = new JavaParserRdfGenerator(new FileOutputStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "formats", "RdfParser.java")), master, config, date, npm.version(), jid); JavaParserRdfGenerator rgen = new JavaParserRdfGenerator(ManagedFileAccess.outStream(Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "formats", "RdfParser.java")), master, config, date, npm.version(), jid);
if (VersionUtilities.isR4BVer(version)) { if (VersionUtilities.isR4BVer(version)) {
StructureDefinition sd = master.getStructures().get("http://hl7.org/fhir/StructureDefinition/Element"); StructureDefinition sd = master.getStructures().get("http://hl7.org/fhir/StructureDefinition/Element");
@ -206,7 +206,7 @@ public class JavaCoreGenerator {
Analysis analysis = jca.analyse(sd, elementInfo); Analysis analysis = jca.analyse(sd, elementInfo);
String fn = Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", name+".java"); String fn = Utilities.path(dest, "src", "main", "java", "org", "hl7", "fhir", jid, "model", name+".java");
JavaResourceGenerator gen = new JavaResourceGenerator(new FileOutputStream(fn), master, config, date, npm.version(), jid); JavaResourceGenerator gen = new JavaResourceGenerator(ManagedFileAccess.outStream(fn), master, config, date, npm.version(), jid);
gen.generate(analysis); gen.generate(analysis);
gen.close(); gen.close();
jgen.seeClass(analysis); jgen.seeClass(analysis);

View File

@ -54,6 +54,7 @@ import org.hl7.fhir.dstu2.model.Meta;
import org.hl7.fhir.dstu2.utils.ToolingExtensions; import org.hl7.fhir.dstu2.utils.ToolingExtensions;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -165,12 +166,12 @@ public class LoincToDEConvertor {
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
xml = builder.parse(new FileInputStream(definitions)); xml = builder.parse(ManagedFileAccess.inStream(definitions));
} }
private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException {
XmlParser xml = new XmlParser(); XmlParser xml = new XmlParser();
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
xml.compose(s, bundle, true); xml.compose(s, bundle, true);
s.close(); s.close();
} }

View File

@ -75,6 +75,7 @@ import org.hl7.fhir.dstu2.utils.IWorkerContext;
import org.hl7.fhir.dstu2.utils.ToolingExtensions; import org.hl7.fhir.dstu2.utils.ToolingExtensions;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xhtml.XhtmlComposer; import org.hl7.fhir.utilities.xhtml.XhtmlComposer;
public class ValueSetExpansionCache implements ValueSetExpanderFactory { public class ValueSetExpansionCache implements ValueSetExpanderFactory {
@ -91,7 +92,7 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory {
// well, we'll see if the designated server can expand it, and if it can, we'll // well, we'll see if the designated server can expand it, and if it can, we'll
// cache it locally // cache it locally
vso = context.expandVS(source, false); vso = context.expandVS(source, false);
FileOutputStream s = new FileOutputStream(Utilities.path(cacheFolder, makeFile(source.getUrl()))); FileOutputStream s = ManagedFileAccess.outStream(Utilities.path(cacheFolder, makeFile(source.getUrl())));
context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).compose(s, vso.getValueset()); context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).compose(s, vso.getValueset());
s.close(); s.close();
} }
@ -125,10 +126,10 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory {
} }
private void loadCache() throws FHIRFormatError, IOException { private void loadCache() throws FHIRFormatError, IOException {
File[] files = new File(cacheFolder).listFiles(); File[] files = ManagedFileAccess.file(cacheFolder).listFiles();
for (File f : files) { for (File f : files) {
if (f.getName().endsWith(".xml")) { if (f.getName().endsWith(".xml")) {
final FileInputStream is = new FileInputStream(f); final FileInputStream is = ManagedFileAccess.inStream(f);
try { try {
Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is); Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is);
if (r instanceof OperationOutcome) { if (r instanceof OperationOutcome) {

View File

@ -47,6 +47,7 @@ import org.hl7.fhir.dstu2.model.Resource;
import org.hl7.fhir.dstu2.utils.client.FHIRToolingClient; import org.hl7.fhir.dstu2.utils.client.FHIRToolingClient;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class BatchLoader { public class BatchLoader {
@ -66,7 +67,7 @@ public class BatchLoader {
throw new FHIRException("Unimplemented file type " + file); throw new FHIRException("Unimplemented file type " + file);
} else if (file.endsWith(".zip")) { } else if (file.endsWith(".zip")) {
LoadZipFile(server, file, p, size, 0, -1); LoadZipFile(server, file, p, size, 0, -1);
} else if (new File(file).isDirectory()) { } else if (ManagedFileAccess.file(file).isDirectory()) {
LoadDirectory(server, file, p, size); LoadDirectory(server, file, p, size);
} else } else
throw new FHIRException("Unknown file type " + file); throw new FHIRException("Unknown file type " + file);
@ -99,7 +100,7 @@ public class BatchLoader {
Bundle b = new Bundle(); Bundle b = new Bundle();
b.setType(BundleType.COLLECTION); b.setType(BundleType.COLLECTION);
b.setId(UUID.randomUUID().toString().toLowerCase()); b.setId(UUID.randomUUID().toString().toLowerCase());
ZipInputStream zip = new ZipInputStream(new FileInputStream(file)); ZipInputStream zip = new ZipInputStream(ManagedFileAccess.inStream(file));
ZipEntry entry; ZipEntry entry;
while ((entry = zip.getNextEntry()) != null) { while ((entry = zip.getNextEntry()) != null) {
try { try {

View File

@ -60,8 +60,8 @@ import org.hl7.fhir.dstu2.utils.client.FHIRToolingClient;
import org.hl7.fhir.dstu2.utils.validation.IResourceValidator; import org.hl7.fhir.dstu2.utils.validation.IResourceValidator;
import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.CSFileInputStream;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;

View File

@ -38,7 +38,7 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import org.hl7.fhir.utilities.CSFileInputStream; import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;

View File

@ -42,6 +42,7 @@ import org.hl7.fhir.dstu2.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.dstu2.model.Resource; import org.hl7.fhir.dstu2.model.Resource;
import org.hl7.fhir.dstu2.model.ValueSet; import org.hl7.fhir.dstu2.model.ValueSet;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class Unbundler { public class Unbundler {
@ -51,7 +52,7 @@ public class Unbundler {
private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException { private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException {
String folder = Utilities.getDirectoryForFile(src); String folder = Utilities.getDirectoryForFile(src);
Bundle bnd = (Bundle) new JsonParser().parse(new FileInputStream(src)); Bundle bnd = (Bundle) new JsonParser().parse(ManagedFileAccess.inStream(src));
for (BundleEntryComponent be : bnd.getEntry()) { for (BundleEntryComponent be : bnd.getEntry()) {
Resource r = be.getResource(); Resource r = be.getResource();
if (r != null) { if (r != null) {
@ -61,7 +62,7 @@ public class Unbundler {
} }
if (!StringUtils.isBlank(r.getId())) { if (!StringUtils.isBlank(r.getId())) {
String tgt = Utilities.path(folder, r.fhirType() + "-" + r.getId() + ".json"); String tgt = Utilities.path(folder, r.fhirType() + "-" + r.getId() + ".json");
new JsonParser().compose(new FileOutputStream(tgt), r); new JsonParser().compose(ManagedFileAccess.outStream(tgt), r);
} }
} }
} }

View File

@ -7,6 +7,7 @@ import org.hl7.fhir.dstu2.utils.FHIRPathEngine;
import org.hl7.fhir.dstu2.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2.utils.SimpleWorkerContext;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
@ -55,7 +56,7 @@ public class FluentPathTests {
fp.check(null, null, null, node); fp.check(null, null, null, node);
else { else {
res = new XmlParser() res = new XmlParser()
.parse(new FileInputStream(Utilities.path("C:\\work\\org.hl7.fhir.dstu2\\build\\publish", input))); .parse(ManagedFileAccess.inStream(Utilities.path("C:\\work\\org.hl7.fhir.dstu2\\build\\publish", input)));
fp.check(res, res.getResourceType().toString(), res.getResourceType().toString(), node); fp.check(res, res.getResourceType().toString(), res.getResourceType().toString(), node);
} }
outcome = fp.evaluate(res, node); outcome = fp.evaluate(res, node);

View File

@ -11,6 +11,7 @@ import org.hl7.fhir.dstu2.utils.NarrativeGenerator;
import org.hl7.fhir.dstu2.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2.utils.SimpleWorkerContext;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
@ -40,9 +41,9 @@ public class NarrativeGeneratorTests {
private void process(String path) throws IOException, EOperationOutcome, FHIRException { private void process(String path) throws IOException, EOperationOutcome, FHIRException {
XmlParser p = new XmlParser(); XmlParser p = new XmlParser();
DomainResource r = (DomainResource) p.parse(new FileInputStream(path)); DomainResource r = (DomainResource) p.parse(ManagedFileAccess.inStream(path));
gen.generate(r); gen.generate(r);
FileOutputStream s = new FileOutputStream(Utilities.path("[tmp]", "gen.xml")); FileOutputStream s = ManagedFileAccess.outStream(Utilities.path("[tmp]", "gen.xml"));
new XmlParser().compose(s, r, true); new XmlParser().compose(s, r, true);
s.close(); s.close();
} }

View File

@ -24,8 +24,9 @@ import org.hl7.fhir.dstu2.utils.SimpleWorkerContext;
import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.CSFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFile;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
@ -85,11 +86,11 @@ public class ProfileUtilitiesTests {
for (ProfileComparison outcome : comp.getComparisons()) { for (ProfileComparison outcome : comp.getComparisons()) {
if (outcome.getSubset() != null) if (outcome.getSubset() != null)
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose( new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(
new FileOutputStream(Utilities.path("[tmp]", "intersection-" + outcome.getId() + ".xml")), ManagedFileAccess.outStream(Utilities.path("[tmp]", "intersection-" + outcome.getId() + ".xml")),
outcome.getSubset()); outcome.getSubset());
if (outcome.getSuperset() != null) if (outcome.getSuperset() != null)
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose( new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(
new FileOutputStream(Utilities.path("[tmp]", "union-" + outcome.getId() + ".xml")), outcome.getSuperset()); ManagedFileAccess.outStream(Utilities.path("[tmp]", "union-" + outcome.getId() + ".xml")), outcome.getSuperset());
System.out.println("\r\n" + outcome.getId() + ": Comparison of " + outcome.getLeft().getUrl() + " and " System.out.println("\r\n" + outcome.getId() + ": Comparison of " + outcome.getLeft().getUrl() + " and "
+ outcome.getRight().getUrl()); + outcome.getRight().getUrl());
@ -115,9 +116,9 @@ public class ProfileUtilitiesTests {
System.out.println("Compare " + fn1 + " to " + fn2); System.out.println("Compare " + fn1 + " to " + fn2);
System.out.println(" .. load"); System.out.println(" .. load");
StructureDefinition left = (StructureDefinition) new XmlParser() StructureDefinition left = (StructureDefinition) new XmlParser()
.parse(new FileInputStream(Utilities.path(root, fn1))); .parse(ManagedFileAccess.inStream(Utilities.path(root, fn1)));
StructureDefinition right = (StructureDefinition) new XmlParser() StructureDefinition right = (StructureDefinition) new XmlParser()
.parse(new FileInputStream(Utilities.path(root, fn2))); .parse(ManagedFileAccess.inStream(Utilities.path(root, fn2)));
System.out.println(" .. compare"); System.out.println(" .. compare");
comp.compareProfiles(left, right); comp.compareProfiles(left, right);
@ -918,16 +919,16 @@ public class ProfileUtilitiesTests {
// focus.setDifferential(null); // focus.setDifferential(null);
String f1 = Utilities.path("c:", "temp", "base.xml"); String f1 = Utilities.path("c:", "temp", "base.xml");
String f2 = Utilities.path("c:", "temp", "derived.xml"); String f2 = Utilities.path("c:", "temp", "derived.xml");
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f1), base); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f1), base);
; ;
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f2), focus); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f2), focus);
; ;
String diff = Utilities.path(System.getenv("ProgramFiles(X86)"), "WinMerge", "WinMergeU.exe"); String diff = Utilities.path(System.getenv("ProgramFiles(X86)"), "WinMerge", "WinMergeU.exe");
List<String> command = new ArrayList<String>(); List<String> command = new ArrayList<String>();
command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\"");
ProcessBuilder builder = new ProcessBuilder(command); ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new CSFile(Utilities.path("[tmp]"))); builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]")));
builder.start(); builder.start();
} }

View File

@ -2,27 +2,29 @@ package org.hl7.fhir.dstu2.test;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException;
import org.hl7.fhir.dstu2.formats.XmlParser; import org.hl7.fhir.dstu2.formats.XmlParser;
import org.hl7.fhir.dstu2.model.StructureDefinition; import org.hl7.fhir.dstu2.model.StructureDefinition;
import org.hl7.fhir.dstu2.utils.QuestionnaireBuilder; import org.hl7.fhir.dstu2.utils.QuestionnaireBuilder;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class QuestionnaireBuilderTester { public class QuestionnaireBuilderTester {
private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish"; private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish";
// private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\"); // private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\");
public static void main(String[] args) { public static void main(String[] args) throws IOException {
QuestionnaireBuilder b = new QuestionnaireBuilder(null); QuestionnaireBuilder b = new QuestionnaireBuilder(null);
for (String f : new File(TEST_PROFILE_DIR).list()) { for (String f : ManagedFileAccess.file(TEST_PROFILE_DIR).list()) {
if (f.endsWith(".profile.xml") && !f.contains("type-")) { if (f.endsWith(".profile.xml") && !f.contains("type-")) {
System.out.println("process " + f); System.out.println("process " + f);
try { try {
StructureDefinition p = (StructureDefinition) new XmlParser() StructureDefinition p = (StructureDefinition) new XmlParser()
.parse(new FileInputStream(TEST_PROFILE_DIR + "\\" + f)); .parse(ManagedFileAccess.inStream(TEST_PROFILE_DIR + "\\" + f));
// Questionnaire q = b.buildQuestionnaire(p); // Questionnaire q = b.buildQuestionnaire(p);
// new XmlComposer().compose(new FileOutputStream(TEST_DEST+f), q, true); // new XmlComposer().compose(ManagedFileAccess.outStream(TEST_DEST+f), q, true);
throw new FHIRException("test"); throw new FHIRException("test");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -40,6 +40,7 @@ import org.hl7.fhir.dstu2.formats.JsonParser;
import org.hl7.fhir.dstu2.formats.XmlParser; import org.hl7.fhir.dstu2.formats.XmlParser;
import org.hl7.fhir.dstu2.model.Resource; import org.hl7.fhir.dstu2.model.Resource;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class ResourceTest { public class ResourceTest {
@ -61,18 +62,18 @@ public class ResourceTest {
p = new JsonParser(); p = new JsonParser();
else else
p = new XmlParser(false); p = new XmlParser(false);
Resource rf = p.parse(new FileInputStream(source)); Resource rf = p.parse(ManagedFileAccess.inStream(source));
FileOutputStream out = new FileOutputStream(source.getAbsoluteFile() + ".out.json"); FileOutputStream out = ManagedFileAccess.outStream(source.getAbsoluteFile() + ".out.json");
JsonParser json1 = new JsonParser(); JsonParser json1 = new JsonParser();
json1.setOutputStyle(OutputStyle.PRETTY); json1.setOutputStyle(OutputStyle.PRETTY);
json1.compose(out, rf); json1.compose(out, rf);
out.close(); out.close();
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
rf = json.parse(new FileInputStream(source.getAbsoluteFile() + ".out.json")); rf = json.parse(ManagedFileAccess.inStream(source.getAbsoluteFile() + ".out.json"));
out = new FileOutputStream(source.getAbsoluteFile() + ".out.xml"); out = ManagedFileAccess.outStream(source.getAbsoluteFile() + ".out.xml");
XmlParser atom = new XmlParser(); XmlParser atom = new XmlParser();
atom.setOutputStyle(OutputStyle.PRETTY); atom.setOutputStyle(OutputStyle.PRETTY);
atom.compose(out, rf, true); atom.compose(out, rf, true);

View File

@ -30,6 +30,8 @@ package org.hl7.fhir.dstu2.test;
import java.io.File; import java.io.File;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class SingleTest { public class SingleTest {
/** /**
@ -38,7 +40,7 @@ public class SingleTest {
public static void main(String[] args) { public static void main(String[] args) {
try { try {
ResourceTest r = new ResourceTest(); ResourceTest r = new ResourceTest();
r.setSource(new File("C:\\work\\org.hl7.fhir\\build\\publish\\patient-example.xml")); r.setSource(ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish\\patient-example.xml"));
r.test(); r.test();
System.out.println("Completed OK"); System.out.println("Completed OK");
} catch (Exception e) { } catch (Exception e) {

View File

@ -13,9 +13,10 @@ import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.hl7.fhir.dstu2.utils.IWorkerContext; import org.hl7.fhir.dstu2.utils.IWorkerContext;
import org.hl7.fhir.utilities.CSFile;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFile;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@ -41,7 +42,7 @@ public class TestingUtilities {
command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\"");
ProcessBuilder builder = new ProcessBuilder(command); ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new CSFile(Utilities.path("[tmp]"))); builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]")));
builder.start(); builder.start();
} }
@ -154,7 +155,7 @@ public class TestingUtilities {
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new FileInputStream(fn)); return builder.parse(ManagedFileAccess.inStream(fn));
} }
public static String checkJsonIsSame(String f1, String f2) public static String checkJsonIsSame(String f1, String f2)
@ -166,7 +167,7 @@ public class TestingUtilities {
command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\"");
ProcessBuilder builder = new ProcessBuilder(command); ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new CSFile(Utilities.path("[tmp]"))); builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]")));
builder.start(); builder.start();
} }

View File

@ -55,10 +55,11 @@ import org.hl7.fhir.dstu2.model.Resource;
import org.hl7.fhir.dstu2.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2.utils.SimpleWorkerContext;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.CSFile;
import org.hl7.fhir.utilities.CSFileInputStream;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFile;
import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlPullParserFactory;
@ -103,7 +104,7 @@ public class ToolsHelper {
private void executeExamples(String[] args) throws IOException { private void executeExamples(String[] args) throws IOException {
try { try {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<String> lines = FileUtils.readLines(new File(args[1]), "UTF-8"); List<String> lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8");
String srcDir = lines.get(0); String srcDir = lines.get(0);
lines.remove(0); lines.remove(0);
processExamples(srcDir, lines); processExamples(srcDir, lines);
@ -179,7 +180,7 @@ public class ToolsHelper {
// } else // } else
if (definitions.startsWith("https:") || definitions.startsWith("http:")) { if (definitions.startsWith("https:") || definitions.startsWith("http:")) {
defn = loadFromUrl(definitions); defn = loadFromUrl(definitions);
} else if (new File(definitions).exists()) { } else if (ManagedFileAccess.file(definitions).exists()) {
defn = loadFromFile(definitions); defn = loadFromFile(definitions);
} else } else
throw new FHIRException("Unable to find FHIR validation Pack (source = " + definitions + ")"); throw new FHIRException("Unable to find FHIR validation Pack (source = " + definitions + ")");
@ -193,7 +194,7 @@ public class ToolsHelper {
} }
private byte[] loadFromFile(String src) throws IOException { private byte[] loadFromFile(String src) throws IOException {
FileInputStream in = new FileInputStream(src); FileInputStream in = ManagedFileAccess.inStream(src);
byte[] b = new byte[in.available()]; byte[] b = new byte[in.available()];
in.read(b); in.read(b);
in.close(); in.close();
@ -220,10 +221,10 @@ public class ToolsHelper {
public void executeFragments(String[] args) throws IOException { public void executeFragments(String[] args) throws IOException {
try { try {
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
if (!source.exists()) if (!source.exists())
throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found");
XmlPullParser xpp = loadXml(new FileInputStream(source)); XmlPullParser xpp = loadXml(ManagedFileAccess.inStream(source));
nextNoWhitespace(xpp); nextNoWhitespace(xpp);
if (!xpp.getName().equals("tests")) if (!xpp.getName().equals("tests"))
throw new FHIRFormatError("Unable to parse file - starts with " + xpp.getName()); throw new FHIRFormatError("Unable to parse file - starts with " + xpp.getName());
@ -269,8 +270,8 @@ public class ToolsHelper {
public void executeRoundTrip(String[] args) throws IOException, FHIRException { public void executeRoundTrip(String[] args) throws IOException, FHIRException {
FileInputStream in; FileInputStream in;
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
File dest = new CSFile(args[2]); File dest = ManagedFileAccess.csfile(args[2]);
if (args.length >= 4) { if (args.length >= 4) {
Utilities.copyFile(args[1], args[3]); Utilities.copyFile(args[1], args[3]);
} }
@ -288,17 +289,17 @@ public class ToolsHelper {
json.close(); json.close();
TextFile.stringToFile(new String(json.toByteArray()), Utilities.changeFileExt(dest.getAbsolutePath(), ".json")); TextFile.stringToFile(new String(json.toByteArray()), Utilities.changeFileExt(dest.getAbsolutePath(), ".json"));
rf = pj.parse(new ByteArrayInputStream(json.toByteArray())); rf = pj.parse(new ByteArrayInputStream(json.toByteArray()));
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
new XmlParser().compose(s, rf, true); new XmlParser().compose(s, rf, true);
s.close(); s.close();
} }
public String executeJson(String[] args) throws IOException, FHIRException { public String executeJson(String[] args) throws IOException, FHIRException {
FileInputStream in; FileInputStream in;
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
File dest = new CSFile(args[2]); File dest = ManagedFileAccess.csfile(args[2]);
File destc = new CSFile(Utilities.changeFileExt(args[2], ".canonical.json")); File destc = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".canonical.json"));
File destt = new CSFile(args[2] + ".tmp"); File destt = ManagedFileAccess.csfile(args[2] + ".tmp");
if (!source.exists()) if (!source.exists())
throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found");
@ -307,16 +308,16 @@ public class ToolsHelper {
Resource rf = p.parse(in); Resource rf = p.parse(in);
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
json.setOutputStyle(OutputStyle.PRETTY); json.setOutputStyle(OutputStyle.PRETTY);
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
json.compose(s, rf); json.compose(s, rf);
s.close(); s.close();
json.setOutputStyle(OutputStyle.CANONICAL); json.setOutputStyle(OutputStyle.CANONICAL);
s = new FileOutputStream(destc); s = ManagedFileAccess.outStream(destc);
json.compose(s, rf); json.compose(s, rf);
s.close(); s.close();
json.setSuppressXhtml("Snipped for Brevity"); json.setSuppressXhtml("Snipped for Brevity");
json.setOutputStyle(OutputStyle.PRETTY); json.setOutputStyle(OutputStyle.PRETTY);
s = new FileOutputStream(destt); s = ManagedFileAccess.outStream(destt);
json.compose(s, rf); json.compose(s, rf);
s.close(); s.close();
return TextFile.fileToString(destt.getAbsolutePath()); return TextFile.fileToString(destt.getAbsolutePath());
@ -324,8 +325,8 @@ public class ToolsHelper {
public void executeCanonicalXml(String[] args) throws FHIRException, IOException { public void executeCanonicalXml(String[] args) throws FHIRException, IOException {
FileInputStream in; FileInputStream in;
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
File dest = new CSFile(args[2]); File dest = ManagedFileAccess.csfile(args[2]);
if (!source.exists()) if (!source.exists())
throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found");
@ -334,7 +335,7 @@ public class ToolsHelper {
Resource rf = p.parse(in); Resource rf = p.parse(in);
XmlParser cxml = new XmlParser(); XmlParser cxml = new XmlParser();
cxml.setOutputStyle(OutputStyle.NORMAL); cxml.setOutputStyle(OutputStyle.NORMAL);
cxml.compose(new FileOutputStream(dest), rf); cxml.compose(ManagedFileAccess.outStream(dest), rf);
} }
private void executeVersion(String[] args) throws IOException { private void executeVersion(String[] args) throws IOException {
@ -347,7 +348,7 @@ public class ToolsHelper {
String filename = rootDir + n + ".xml"; String filename = rootDir + n + ".xml";
// 1. produce canonical XML // 1. produce canonical XML
CSFileInputStream source = new CSFileInputStream(filename); CSFileInputStream source = new CSFileInputStream(filename);
FileOutputStream dest = new FileOutputStream(Utilities.changeFileExt(filename, ".canonical.xml")); FileOutputStream dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".canonical.xml"));
XmlParser p = new XmlParser(); XmlParser p = new XmlParser();
Resource r = p.parse(source); Resource r = p.parse(source);
XmlParser cxml = new XmlParser(); XmlParser cxml = new XmlParser();
@ -356,14 +357,14 @@ public class ToolsHelper {
// 2. produce JSON // 2. produce JSON
source = new CSFileInputStream(filename); source = new CSFileInputStream(filename);
dest = new FileOutputStream(Utilities.changeFileExt(filename, ".json")); dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".json"));
r = p.parse(source); r = p.parse(source);
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
json.setOutputStyle(OutputStyle.PRETTY); json.setOutputStyle(OutputStyle.PRETTY);
json.compose(dest, r); json.compose(dest, r);
json = new JsonParser(); json = new JsonParser();
json.setOutputStyle(OutputStyle.CANONICAL); json.setOutputStyle(OutputStyle.CANONICAL);
dest = new FileOutputStream(Utilities.changeFileExt(filename, ".canonical.json")); dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".canonical.json"));
json.compose(dest, r); json.compose(dest, r);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -383,23 +384,23 @@ public class ToolsHelper {
String tmp = tmpDir + n.replace(File.separator, "-") + ".tmp"; String tmp = tmpDir + n.replace(File.separator, "-") + ".tmp";
String dest = tmpDir + n.replace(File.separator, "-") + ".java.xml"; String dest = tmpDir + n.replace(File.separator, "-") + ".java.xml";
FileInputStream in = new FileInputStream(source); FileInputStream in = ManagedFileAccess.inStream(source);
XmlParser xp = new XmlParser(); XmlParser xp = new XmlParser();
Resource r = xp.parse(in); Resource r = xp.parse(in);
System.err.print("."); System.err.print(".");
JsonParser jp = new JsonParser(); JsonParser jp = new JsonParser();
FileOutputStream out = new FileOutputStream(tmp); FileOutputStream out = ManagedFileAccess.outStream(tmp);
jp.setOutputStyle(OutputStyle.PRETTY); jp.setOutputStyle(OutputStyle.PRETTY);
jp.compose(out, r); jp.compose(out, r);
out.close(); out.close();
r = null; r = null;
System.err.print("."); System.err.print(".");
in = new FileInputStream(tmp); in = ManagedFileAccess.inStream(tmp);
System.err.print(","); System.err.print(",");
r = jp.parse(in); r = jp.parse(in);
System.err.print("."); System.err.print(".");
out = new FileOutputStream(dest); out = ManagedFileAccess.outStream(dest);
new XmlParser().compose(out, r, true); new XmlParser().compose(out, r, true);
System.err.println("!"); System.err.println("!");
out.close(); out.close();
@ -415,7 +416,7 @@ public class ToolsHelper {
private void executeTest(String[] args) throws Throwable { private void executeTest(String[] args) throws Throwable {
try { try {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<String> lines = FileUtils.readLines(new File(args[1]), "UTF-8"); List<String> lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8");
String srcDir = lines.get(0); String srcDir = lines.get(0);
lines.remove(0); lines.remove(0);
String dstDir = lines.get(0).trim(); String dstDir = lines.get(0).trim();

View File

@ -40,6 +40,7 @@ import org.hl7.fhir.dstu2016may.utils.IWorkerContext;
import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
@ -52,21 +53,21 @@ public class Tester {
.fromPack(Utilities.path("C:\\work\\org.hl7.fhir\\build\\publish", "validation-min.xml.zip")); .fromPack(Utilities.path("C:\\work\\org.hl7.fhir\\build\\publish", "validation-min.xml.zip"));
int t = 0; int t = 0;
int ok = 0; int ok = 0;
for (String f : new File("C:\\work\\org.hl7.fhir\\build\\publish").list()) { for (String f : ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish").list()) {
if (f.endsWith(".xml") && !f.endsWith(".canonical.xml") && !f.contains("profile") && !f.contains("questionnaire") if (f.endsWith(".xml") && !f.endsWith(".canonical.xml") && !f.contains("profile") && !f.contains("questionnaire")
&& new File("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".ttl")).exists()) { && ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".ttl")).exists()) {
// if (f.equals("account-questionnaire.xml")) { // if (f.equals("account-questionnaire.xml")) {
System.out.print("convert " + f); System.out.print("convert " + f);
// Manager.convert(context, new FileInputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML, // Manager.convert(context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML,
// new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json")), FhirFormat.JSON, OutputStyle.PRETTY); // ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json")), FhirFormat.JSON, OutputStyle.PRETTY);
// String src = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json"))); // String src = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json")));
// String tgt = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".json"))); // String tgt = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".json")));
Element e = Manager.parse(context, new FileInputStream("C:\\work\\org.hl7.fhir\\build\\publish\\" + f), Element e = Manager.parse(context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\" + f),
FhirFormat.XML); FhirFormat.XML);
Manager.compose(context, e, Manager.compose(context, e,
new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".mm.ttl")), ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".mm.ttl")),
FhirFormat.TURTLE, OutputStyle.PRETTY, null); FhirFormat.TURTLE, OutputStyle.PRETTY, null);
Manager.compose(context, e, new FileOutputStream(Utilities.path("[tmp]", "resource.xml")), FhirFormat.XML, Manager.compose(context, e, ManagedFileAccess.outStream(Utilities.path("[tmp]", "resource.xml")), FhirFormat.XML,
OutputStyle.PRETTY, null); OutputStyle.PRETTY, null);
String src = TextFile String src = TextFile
.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".mm.ttl")); .fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".mm.ttl"));

View File

@ -49,6 +49,7 @@ import org.hl7.fhir.dstu2016may.model.Enumerations.ConformanceResourceStatus;
import org.hl7.fhir.dstu2016may.model.Identifier; import org.hl7.fhir.dstu2016may.model.Identifier;
import org.hl7.fhir.dstu2016may.model.ValueSet; import org.hl7.fhir.dstu2016may.model.ValueSet;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -118,7 +119,7 @@ public class ICPC2Importer {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false); factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new FileInputStream(sourceFileName)); Document doc = builder.parse(ManagedFileAccess.inStream(sourceFileName));
ValueSet vs = new ValueSet(); ValueSet vs = new ValueSet();
vs.setUrl("http://hl7.org/fhir/sid/icpc2/vs"); vs.setUrl("http://hl7.org/fhir/sid/icpc2/vs");
@ -167,8 +168,8 @@ public class ICPC2Importer {
XmlParser xml = new XmlParser(); XmlParser xml = new XmlParser();
xml.setOutputStyle(OutputStyle.PRETTY); xml.setOutputStyle(OutputStyle.PRETTY);
xml.compose(new FileOutputStream(targetFileNameVS), vs); xml.compose(ManagedFileAccess.outStream(targetFileNameVS), vs);
xml.compose(new FileOutputStream(targetFileNameCS), cs); xml.compose(ManagedFileAccess.outStream(targetFileNameCS), cs);
} }
private void processClass(Element cls, Map<String, ConceptDefinitionComponent> concepts, CodeSystem define) { private void processClass(Element cls, Map<String, ConceptDefinitionComponent> concepts, CodeSystem define) {

View File

@ -54,6 +54,7 @@ import org.hl7.fhir.dstu2016may.model.Meta;
import org.hl7.fhir.dstu2016may.utils.ToolingExtensions; import org.hl7.fhir.dstu2016may.utils.ToolingExtensions;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -165,12 +166,12 @@ public class LoincToDEConvertor {
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
xml = builder.parse(new FileInputStream(definitions)); xml = builder.parse(ManagedFileAccess.inStream(definitions));
} }
private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException {
XmlParser xml = new XmlParser(); XmlParser xml = new XmlParser();
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
xml.compose(s, bundle, true); xml.compose(s, bundle, true);
s.close(); s.close();
} }

View File

@ -75,6 +75,7 @@ import org.hl7.fhir.dstu2016may.utils.IWorkerContext;
import org.hl7.fhir.dstu2016may.utils.ToolingExtensions; import org.hl7.fhir.dstu2016may.utils.ToolingExtensions;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xhtml.XhtmlComposer; import org.hl7.fhir.utilities.xhtml.XhtmlComposer;
public class ValueSetExpansionCache implements ValueSetExpanderFactory { public class ValueSetExpansionCache implements ValueSetExpanderFactory {
@ -91,7 +92,7 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory {
// well, we'll see if the designated server can expand it, and if it can, we'll // well, we'll see if the designated server can expand it, and if it can, we'll
// cache it locally // cache it locally
vso = context.expandVS(source, false); vso = context.expandVS(source, false);
FileOutputStream s = new FileOutputStream(Utilities.path(cacheFolder, makeFile(source.getUrl()))); FileOutputStream s = ManagedFileAccess.outStream(Utilities.path(cacheFolder, makeFile(source.getUrl())));
context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).compose(s, vso.getValueset()); context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).compose(s, vso.getValueset());
s.close(); s.close();
} }
@ -125,10 +126,10 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory {
} }
private void loadCache() throws FHIRFormatError, IOException { private void loadCache() throws FHIRFormatError, IOException {
File[] files = new File(cacheFolder).listFiles(); File[] files = ManagedFileAccess.file(cacheFolder).listFiles();
for (File f : files) { for (File f : files) {
if (f.getName().endsWith(".xml")) { if (f.getName().endsWith(".xml")) {
final FileInputStream is = new FileInputStream(f); final FileInputStream is = ManagedFileAccess.inStream(f);
try { try {
Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is); Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is);
if (r instanceof OperationOutcome) { if (r instanceof OperationOutcome) {

View File

@ -47,6 +47,7 @@ import org.hl7.fhir.dstu2016may.model.Resource;
import org.hl7.fhir.dstu2016may.utils.client.FHIRToolingClient; import org.hl7.fhir.dstu2016may.utils.client.FHIRToolingClient;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class BatchLoader { public class BatchLoader {
@ -66,7 +67,7 @@ public class BatchLoader {
throw new FHIRException("Unimplemented file type " + file); throw new FHIRException("Unimplemented file type " + file);
} else if (file.endsWith(".zip")) { } else if (file.endsWith(".zip")) {
LoadZipFile(server, file, p, size, 0, -1); LoadZipFile(server, file, p, size, 0, -1);
} else if (new File(file).isDirectory()) { } else if (ManagedFileAccess.file(file).isDirectory()) {
LoadDirectory(server, file, p, size); LoadDirectory(server, file, p, size);
} else } else
throw new FHIRException("Unknown file type " + file); throw new FHIRException("Unknown file type " + file);
@ -99,7 +100,7 @@ public class BatchLoader {
Bundle b = new Bundle(); Bundle b = new Bundle();
b.setType(BundleType.COLLECTION); b.setType(BundleType.COLLECTION);
b.setId(UUID.randomUUID().toString().toLowerCase()); b.setId(UUID.randomUUID().toString().toLowerCase());
ZipInputStream zip = new ZipInputStream(new FileInputStream(file)); ZipInputStream zip = new ZipInputStream(ManagedFileAccess.inStream(file));
ZipEntry entry; ZipEntry entry;
while ((entry = zip.getNextEntry()) != null) { while ((entry = zip.getNextEntry()) != null) {
try { try {

View File

@ -71,9 +71,10 @@ import org.hl7.fhir.dstu2016may.utils.client.FHIRToolingClient;
import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.CSFileInputStream;
import org.hl7.fhir.utilities.OIDUtils; import org.hl7.fhir.utilities.OIDUtils;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
@ -425,7 +426,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
} }
public void loadFromFolder(String folder) throws FileNotFoundException, Exception { public void loadFromFolder(String folder) throws FileNotFoundException, Exception {
for (String n : new File(folder).list()) { for (String n : ManagedFileAccess.file(folder).list()) {
if (n.endsWith(".json")) if (n.endsWith(".json"))
loadFromFile(Utilities.path(folder, n), new JsonParser()); loadFromFile(Utilities.path(folder, n), new JsonParser());
else if (n.endsWith(".xml")) else if (n.endsWith(".xml"))
@ -436,11 +437,11 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
private void loadFromFile(String filename, IParser p) throws FileNotFoundException, Exception { private void loadFromFile(String filename, IParser p) throws FileNotFoundException, Exception {
Resource r; Resource r;
try { try {
r = p.parse(new FileInputStream(filename)); r = p.parse(ManagedFileAccess.inStream(filename));
if (r.getResourceType() == ResourceType.Bundle) { if (r.getResourceType() == ResourceType.Bundle) {
for (BundleEntryComponent e : ((Bundle) r).getEntry()) { for (BundleEntryComponent e : ((Bundle) r).getEntry()) {
seeResource(null, e.getResource()); seeResource(null, e.getResource());
} }
} else { } else {
seeResource(null, r); seeResource(null, r);
} }

View File

@ -32,6 +32,7 @@ package org.hl7.fhir.dstu2016may.utils;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -45,6 +46,7 @@ import org.hl7.fhir.dstu2016may.model.Bundle;
import org.hl7.fhir.dstu2016may.model.StructureMap; import org.hl7.fhir.dstu2016may.model.StructureMap;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class Transformer { public class Transformer {
@ -117,7 +119,7 @@ public class Transformer {
loadMaps(folder); loadMaps(folder);
} }
System.out.println(" .. load source from " + source); System.out.println(" .. load source from " + source);
Element e = Manager.parse(context, new FileInputStream(source), FhirFormat.XML); Element e = Manager.parse(context, ManagedFileAccess.inStream(source), FhirFormat.XML);
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
StructureMap map = scu.getLibrary().get(mapUri); StructureMap map = scu.getLibrary().get(mapUri);
@ -125,7 +127,7 @@ public class Transformer {
throw new Error("Unable to find map " + mapUri + " (Known Maps = " throw new Error("Unable to find map " + mapUri + " (Known Maps = "
+ Utilities.listCanonicalUrls(scu.getLibrary().keySet()) + ")"); + Utilities.listCanonicalUrls(scu.getLibrary().keySet()) + ")");
scu.transform(null, e, map, bundle); scu.transform(null, e, map, bundle);
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(output), bundle); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(output), bundle);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -134,8 +136,8 @@ public class Transformer {
} }
} }
private void loadMaps(String folder) { private void loadMaps(String folder) throws IOException {
for (String f : new File(folder).list()) { for (String f : ManagedFileAccess.file(folder).list()) {
try { try {
StructureMap map = scu.parse(TextFile.fileToString(Utilities.path(folder, f))); StructureMap map = scu.parse(TextFile.fileToString(Utilities.path(folder, f)));
scu.getLibrary().put(map.getUrl(), map); scu.getLibrary().put(map.getUrl(), map);

View File

@ -38,7 +38,7 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import org.hl7.fhir.utilities.CSFileInputStream; import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;

View File

@ -42,6 +42,7 @@ import org.hl7.fhir.dstu2016may.model.Bundle;
import org.hl7.fhir.dstu2016may.model.Bundle.BundleEntryComponent; import org.hl7.fhir.dstu2016may.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.model.Resource;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class Unbundler { public class Unbundler {
@ -51,7 +52,7 @@ public class Unbundler {
private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException { private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException {
String folder = Utilities.getDirectoryForFile(src); String folder = Utilities.getDirectoryForFile(src);
Bundle bnd = (Bundle) new JsonParser().parse(new FileInputStream(src)); Bundle bnd = (Bundle) new JsonParser().parse(ManagedFileAccess.inStream(src));
for (BundleEntryComponent be : bnd.getEntry()) { for (BundleEntryComponent be : bnd.getEntry()) {
Resource r = be.getResource(); Resource r = be.getResource();
if (r != null) { if (r != null) {
@ -61,7 +62,7 @@ public class Unbundler {
} }
if (!StringUtils.isBlank(r.getId())) { if (!StringUtils.isBlank(r.getId())) {
String tgt = Utilities.path(folder, r.fhirType() + "-" + r.getId() + ".json"); String tgt = Utilities.path(folder, r.fhirType() + "-" + r.getId() + ".json");
new JsonParser().compose(new FileOutputStream(tgt), r); new JsonParser().compose(ManagedFileAccess.outStream(tgt), r);
} }
} }
} }

View File

@ -25,6 +25,7 @@ import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.exceptions.PathEngineException; import org.hl7.fhir.exceptions.PathEngineException;
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -46,35 +47,35 @@ public class FluentPathTests {
private Patient patient() throws FHIRFormatError, FileNotFoundException, IOException { private Patient patient() throws FHIRFormatError, FileNotFoundException, IOException {
if (patient == null) if (patient == null)
patient = (Patient) new JsonParser() patient = (Patient) new JsonParser()
.parse(new FileInputStream("C:/work/org.hl7.fhir.2016May/build/publish/patient-example.json")); .parse(ManagedFileAccess.inStream("C:/work/org.hl7.fhir.2016May/build/publish/patient-example.json"));
return patient; return patient;
} }
private Appointment appointment() throws FHIRFormatError, FileNotFoundException, IOException { private Appointment appointment() throws FHIRFormatError, FileNotFoundException, IOException {
if (appointment == null) if (appointment == null)
appointment = (Appointment) new JsonParser() appointment = (Appointment) new JsonParser()
.parse(new FileInputStream("C:/work/org.hl7.fhir.2016May/build/publish/appointment-example-request.json")); .parse(ManagedFileAccess.inStream("C:/work/org.hl7.fhir.2016May/build/publish/appointment-example-request.json"));
return appointment; return appointment;
} }
private Questionnaire questionnaire() throws FHIRFormatError, FileNotFoundException, IOException { private Questionnaire questionnaire() throws FHIRFormatError, FileNotFoundException, IOException {
if (questionnaire == null) if (questionnaire == null)
questionnaire = (Questionnaire) new JsonParser() questionnaire = (Questionnaire) new JsonParser()
.parse(new FileInputStream("C:/work/org.hl7.fhir.2016May/build/publish/questionnaire-example.json")); .parse(ManagedFileAccess.inStream("C:/work/org.hl7.fhir.2016May/build/publish/questionnaire-example.json"));
return questionnaire; return questionnaire;
} }
private ValueSet valueset() throws FHIRFormatError, FileNotFoundException, IOException { private ValueSet valueset() throws FHIRFormatError, FileNotFoundException, IOException {
if (valueset == null) if (valueset == null)
valueset = (ValueSet) new JsonParser() valueset = (ValueSet) new JsonParser()
.parse(new FileInputStream("C:/work/org.hl7.fhir.2016May/build/publish/valueset-example-expansion.json")); .parse(ManagedFileAccess.inStream("C:/work/org.hl7.fhir.2016May/build/publish/valueset-example-expansion.json"));
return valueset; return valueset;
} }
private Observation observation() throws FHIRFormatError, FileNotFoundException, IOException { private Observation observation() throws FHIRFormatError, FileNotFoundException, IOException {
if (observation == null) if (observation == null)
observation = (Observation) new JsonParser() observation = (Observation) new JsonParser()
.parse(new FileInputStream("C:/work/org.hl7.fhir.2016May/build/publish/observation-example.json")); .parse(ManagedFileAccess.inStream("C:/work/org.hl7.fhir.2016May/build/publish/observation-example.json"));
return observation; return observation;
} }
@ -929,7 +930,7 @@ public class FluentPathTests {
@Test @Test
public void testQuestionnaire() throws FileNotFoundException, IOException, FHIRException { public void testQuestionnaire() throws FileNotFoundException, IOException, FHIRException {
Questionnaire q = (Questionnaire) new JsonParser() Questionnaire q = (Questionnaire) new JsonParser()
.parse(new FileInputStream("C:/work/org.hl7.fhir.2016May/build/publish/questionnaire-example-gcs.json")); .parse(ManagedFileAccess.inStream("C:/work/org.hl7.fhir.2016May/build/publish/questionnaire-example-gcs.json"));
for (QuestionnaireItemComponent qi : q.getItem()) { for (QuestionnaireItemComponent qi : q.getItem()) {
testQItem(qi); testQItem(qi);
} }
@ -943,7 +944,7 @@ public class FluentPathTests {
@Test @Test
public void testExtensionDefinitions() throws FileNotFoundException, IOException, FHIRException { public void testExtensionDefinitions() throws FileNotFoundException, IOException, FHIRException {
Bundle b = (Bundle) new JsonParser() Bundle b = (Bundle) new JsonParser()
.parse(new FileInputStream("C:/work/org.hl7.fhir.2016May/build/publish/extension-definitions.json")); .parse(ManagedFileAccess.inStream("C:/work/org.hl7.fhir.2016May/build/publish/extension-definitions.json"));
for (BundleEntryComponent be : b.getEntry()) { for (BundleEntryComponent be : b.getEntry()) {
testStructureDefinition((StructureDefinition) be.getResource()); testStructureDefinition((StructureDefinition) be.getResource());
} }

View File

@ -7,6 +7,7 @@ import org.hl7.fhir.dstu2016may.utils.NarrativeGenerator;
import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -41,9 +42,9 @@ public class NarrativeGeneratorTests {
private void process(String path) private void process(String path)
throws FileNotFoundException, IOException, XmlPullParserException, EOperationOutcome, FHIRException { throws FileNotFoundException, IOException, XmlPullParserException, EOperationOutcome, FHIRException {
XmlParser p = new XmlParser(); XmlParser p = new XmlParser();
DomainResource r = (DomainResource) p.parse(new FileInputStream(path)); DomainResource r = (DomainResource) p.parse(ManagedFileAccess.inStream(path));
gen.generate(r); gen.generate(r);
FileOutputStream s = new FileOutputStream(Utilities.path("[tmp]", "gen.xml")); FileOutputStream s = ManagedFileAccess.outStream(Utilities.path("[tmp]", "gen.xml"));
new XmlParser().compose(s, r, true); new XmlParser().compose(s, r, true);
s.close(); s.close();
} }

View File

@ -12,7 +12,7 @@ import org.hl7.fhir.dstu2016may.metamodel.Manager.FhirFormat;
import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.model.Resource;
import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -32,7 +32,7 @@ public class ParserTests {
@Test @Test
public void testAll() throws Exception { public void testAll() throws Exception {
String examples = Utilities.path(root, "examples"); String examples = Utilities.path(root, "examples");
for (String fn : new File(examples).list()) { for (String fn : ManagedFileAccess.file(examples).list()) {
if (fn.endsWith(".xml")) { if (fn.endsWith(".xml")) {
testRoundTrip(Utilities.path(examples, fn), fn); testRoundTrip(Utilities.path(examples, fn), fn);
} }
@ -41,50 +41,50 @@ public class ParserTests {
private void testRoundTrip(String filename, String name) throws Exception { private void testRoundTrip(String filename, String name) throws Exception {
System.out.println(name); System.out.println(name);
Resource r = new org.hl7.fhir.dstu2016may.formats.XmlParser().parse(new FileInputStream(filename)); Resource r = new org.hl7.fhir.dstu2016may.formats.XmlParser().parse(ManagedFileAccess.inStream(filename));
String fn = makeTempFilename(); String fn = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(fn), r); .compose(ManagedFileAccess.outStream(fn), r);
String msg = TestingUtilities.checkXMLIsSame(filename, fn); String msg = TestingUtilities.checkXMLIsSame(filename, fn);
Assertions.assertNull(msg, name + ": " + msg); Assertions.assertNull(msg, name + ": " + msg);
String j1 = makeTempFilename(); String j1 = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(j1), r); .compose(ManagedFileAccess.outStream(j1), r);
if (TestingUtilities.context == null) { if (TestingUtilities.context == null) {
TestingUtilities.context = SimpleWorkerContext.fromPack(Utilities.path(root, "validation-min.xml.zip")); TestingUtilities.context = SimpleWorkerContext.fromPack(Utilities.path(root, "validation-min.xml.zip"));
} }
Element re = Manager.parse(TestingUtilities.context, new FileInputStream(filename), FhirFormat.XML); Element re = Manager.parse(TestingUtilities.context, ManagedFileAccess.inStream(filename), FhirFormat.XML);
fn = makeTempFilename(); fn = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(fn), FhirFormat.XML, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(fn), FhirFormat.XML, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkXMLIsSame(filename, fn); msg = TestingUtilities.checkXMLIsSame(filename, fn);
Assertions.assertNull(msg, name + ": " + msg); Assertions.assertNull(msg, name + ": " + msg);
String j2 = makeTempFilename(); String j2 = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(j2), FhirFormat.JSON, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(j2), FhirFormat.JSON, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkJsonIsSame(j1, j2); msg = TestingUtilities.checkJsonIsSame(j1, j2);
Assertions.assertNull(msg, name + ": " + msg); Assertions.assertNull(msg, name + ": " + msg);
// ok, we've produced equivalent JSON by both methods. // ok, we've produced equivalent JSON by both methods.
// now, we're going to reverse the process // now, we're going to reverse the process
r = new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(new FileInputStream(j2)); // crossover too r = new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(ManagedFileAccess.inStream(j2)); // crossover too
fn = makeTempFilename(); fn = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(fn), r); .compose(ManagedFileAccess.outStream(fn), r);
msg = TestingUtilities.checkJsonIsSame(j2, fn); msg = TestingUtilities.checkJsonIsSame(j2, fn);
Assertions.assertNull(msg, name + ": " + msg); Assertions.assertNull(msg, name + ": " + msg);
String x1 = makeTempFilename(); String x1 = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(x1), r); .compose(ManagedFileAccess.outStream(x1), r);
re = Manager.parse(TestingUtilities.context, new FileInputStream(j1), FhirFormat.JSON); re = Manager.parse(TestingUtilities.context, ManagedFileAccess.inStream(j1), FhirFormat.JSON);
fn = makeTempFilename(); fn = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(fn), FhirFormat.JSON, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(fn), FhirFormat.JSON, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkJsonIsSame(j1, fn); msg = TestingUtilities.checkJsonIsSame(j1, fn);
Assertions.assertNull(msg, name + ": " + msg); Assertions.assertNull(msg, name + ": " + msg);
String x2 = makeTempFilename(); String x2 = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(x2), FhirFormat.XML, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(x2), FhirFormat.XML, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkXMLIsSame(x1, x2); msg = TestingUtilities.checkXMLIsSame(x1, x2);
Assertions.assertNull(msg, name + ": " + msg); Assertions.assertNull(msg, name + ": " + msg);

View File

@ -2,27 +2,29 @@ package org.hl7.fhir.dstu2016may.test;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException;
import org.hl7.fhir.dstu2016may.formats.XmlParser; import org.hl7.fhir.dstu2016may.formats.XmlParser;
import org.hl7.fhir.dstu2016may.model.StructureDefinition; import org.hl7.fhir.dstu2016may.model.StructureDefinition;
import org.hl7.fhir.dstu2016may.utils.QuestionnaireBuilder; import org.hl7.fhir.dstu2016may.utils.QuestionnaireBuilder;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class QuestionnaireBuilderTester { public class QuestionnaireBuilderTester {
private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish"; private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish";
// private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\"); // private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\");
public static void main(String[] args) { public static void main(String[] args) throws IOException {
QuestionnaireBuilder b = new QuestionnaireBuilder(null); QuestionnaireBuilder b = new QuestionnaireBuilder(null);
for (String f : new File(TEST_PROFILE_DIR).list()) { for (String f : ManagedFileAccess.file(TEST_PROFILE_DIR).list()) {
if (f.endsWith(".profile.xml") && !f.contains("type-")) { if (f.endsWith(".profile.xml") && !f.contains("type-")) {
System.out.println("process " + f); System.out.println("process " + f);
try { try {
StructureDefinition p = (StructureDefinition) new XmlParser() StructureDefinition p = (StructureDefinition) new XmlParser()
.parse(new FileInputStream(TEST_PROFILE_DIR + "\\" + f)); .parse(ManagedFileAccess.inStream(TEST_PROFILE_DIR + "\\" + f));
// Questionnaire q = b.buildQuestionnaire(p); // Questionnaire q = b.buildQuestionnaire(p);
// new XmlComposer().compose(new FileOutputStream(TEST_DEST+f), q, true); // new XmlComposer().compose(ManagedFileAccess.outStream(TEST_DEST+f), q, true);
throw new FHIRException("test"); throw new FHIRException("test");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -40,6 +40,7 @@ import org.hl7.fhir.dstu2016may.formats.JsonParser;
import org.hl7.fhir.dstu2016may.formats.XmlParser; import org.hl7.fhir.dstu2016may.formats.XmlParser;
import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.model.Resource;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class ResourceTest { public class ResourceTest {
@ -61,18 +62,18 @@ public class ResourceTest {
p = new JsonParser(); p = new JsonParser();
else else
p = new XmlParser(false); p = new XmlParser(false);
Resource rf = p.parse(new FileInputStream(source)); Resource rf = p.parse(ManagedFileAccess.inStream(source));
FileOutputStream out = new FileOutputStream(source.getAbsoluteFile() + ".out.json"); FileOutputStream out = ManagedFileAccess.outStream(source.getAbsoluteFile() + ".out.json");
JsonParser json1 = new JsonParser(); JsonParser json1 = new JsonParser();
json1.setOutputStyle(OutputStyle.PRETTY); json1.setOutputStyle(OutputStyle.PRETTY);
json1.compose(out, rf); json1.compose(out, rf);
out.close(); out.close();
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
rf = json.parse(new FileInputStream(source.getAbsoluteFile() + ".out.json")); rf = json.parse(ManagedFileAccess.inStream(source.getAbsoluteFile() + ".out.json"));
out = new FileOutputStream(source.getAbsoluteFile() + ".out.xml"); out = ManagedFileAccess.outStream(source.getAbsoluteFile() + ".out.xml");
XmlParser atom = new XmlParser(); XmlParser atom = new XmlParser();
atom.setOutputStyle(OutputStyle.PRETTY); atom.setOutputStyle(OutputStyle.PRETTY);
atom.compose(out, rf, true); atom.compose(out, rf, true);

View File

@ -16,6 +16,7 @@ import org.hl7.fhir.dstu2016may.metamodel.Manager.FhirFormat;
import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.model.Resource;
import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
@ -29,7 +30,7 @@ public class RoundTripTest {
public static Stream<Arguments> getFiles() throws IOException { public static Stream<Arguments> getFiles() throws IOException {
List<Arguments> params = new ArrayList(); List<Arguments> params = new ArrayList();
String examples = Utilities.path(root, "examples"); String examples = Utilities.path(root, "examples");
for (File f : new File(examples).listFiles()) { for (File f : ManagedFileAccess.file(examples).listFiles()) {
if (f.getName().endsWith(".xml")) { if (f.getName().endsWith(".xml")) {
params.add(Arguments.of(f)); params.add(Arguments.of(f));
} }
@ -48,50 +49,50 @@ public class RoundTripTest {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void test(File file) throws Exception { public void test(File file) throws Exception {
System.out.println(file.getName()); System.out.println(file.getName());
Resource r = new org.hl7.fhir.dstu2016may.formats.XmlParser().parse(new FileInputStream(file)); Resource r = new org.hl7.fhir.dstu2016may.formats.XmlParser().parse(ManagedFileAccess.inStream(file));
String fn = makeTempFilename(); String fn = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(fn), r); .compose(ManagedFileAccess.outStream(fn), r);
String msg = TestingUtilities.checkXMLIsSame(file.getAbsolutePath(), fn); String msg = TestingUtilities.checkXMLIsSame(file.getAbsolutePath(), fn);
Assertions.assertTrue(msg == null, file.getName() + ": " + msg); Assertions.assertTrue(msg == null, file.getName() + ": " + msg);
String j1 = makeTempFilename(); String j1 = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(j1), r); .compose(ManagedFileAccess.outStream(j1), r);
if (TestingUtilities.context == null) { if (TestingUtilities.context == null) {
TestingUtilities.context = SimpleWorkerContext.fromPack(Utilities.path(root, "validation-min.xml.zip")); TestingUtilities.context = SimpleWorkerContext.fromPack(Utilities.path(root, "validation-min.xml.zip"));
} }
Element re = Manager.parse(TestingUtilities.context, new FileInputStream(file), FhirFormat.XML); Element re = Manager.parse(TestingUtilities.context, ManagedFileAccess.inStream(file), FhirFormat.XML);
fn = makeTempFilename(); fn = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(fn), FhirFormat.XML, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(fn), FhirFormat.XML, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkXMLIsSame(file.getAbsolutePath(), fn); msg = TestingUtilities.checkXMLIsSame(file.getAbsolutePath(), fn);
Assertions.assertTrue(msg == null, file.getName() + ": " + msg); Assertions.assertTrue(msg == null, file.getName() + ": " + msg);
String j2 = makeTempFilename(); String j2 = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(j2), FhirFormat.JSON, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(j2), FhirFormat.JSON, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkJsonIsSame(j1, j2); msg = TestingUtilities.checkJsonIsSame(j1, j2);
Assertions.assertTrue(msg == null, file.getName() + ": " + msg); Assertions.assertTrue(msg == null, file.getName() + ": " + msg);
// ok, we've produced equivalent JSON by both methods. // ok, we've produced equivalent JSON by both methods.
// now, we're going to reverse the process // now, we're going to reverse the process
r = new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(new FileInputStream(j2)); // crossover too r = new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(ManagedFileAccess.inStream(j2)); // crossover too
fn = makeTempFilename(); fn = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(fn), r); .compose(ManagedFileAccess.outStream(fn), r);
msg = TestingUtilities.checkJsonIsSame(j2, fn); msg = TestingUtilities.checkJsonIsSame(j2, fn);
Assertions.assertTrue(msg == null, file.getName() + ": " + msg); Assertions.assertTrue(msg == null, file.getName() + ": " + msg);
String x1 = makeTempFilename(); String x1 = makeTempFilename();
new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY) new org.hl7.fhir.dstu2016may.formats.XmlParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(x1), r); .compose(ManagedFileAccess.outStream(x1), r);
re = Manager.parse(TestingUtilities.context, new FileInputStream(j1), FhirFormat.JSON); re = Manager.parse(TestingUtilities.context, ManagedFileAccess.inStream(j1), FhirFormat.JSON);
fn = makeTempFilename(); fn = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(fn), FhirFormat.JSON, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(fn), FhirFormat.JSON, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkJsonIsSame(j1, fn); msg = TestingUtilities.checkJsonIsSame(j1, fn);
Assertions.assertTrue(msg == null, file.getName() + ": " + msg); Assertions.assertTrue(msg == null, file.getName() + ": " + msg);
String x2 = makeTempFilename(); String x2 = makeTempFilename();
Manager.compose(TestingUtilities.context, re, new FileOutputStream(x2), FhirFormat.XML, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, re, ManagedFileAccess.outStream(x2), FhirFormat.XML, OutputStyle.PRETTY, null);
msg = TestingUtilities.checkXMLIsSame(x1, x2); msg = TestingUtilities.checkXMLIsSame(x1, x2);
Assertions.assertTrue(msg == null, file.getName() + ": " + msg); Assertions.assertTrue(msg == null, file.getName() + ": " + msg);

View File

@ -30,6 +30,8 @@ package org.hl7.fhir.dstu2016may.test;
import java.io.File; import java.io.File;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class SingleTest { public class SingleTest {
/** /**
@ -38,7 +40,7 @@ public class SingleTest {
public static void main(String[] args) { public static void main(String[] args) {
try { try {
ResourceTest r = new ResourceTest(); ResourceTest r = new ResourceTest();
r.setSource(new File("C:\\work\\org.hl7.fhir\\build\\publish\\patient-example.xml")); r.setSource(ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish\\patient-example.xml"));
r.test(); r.test();
System.out.println("Completed OK"); System.out.println("Completed OK");
} catch (Exception e) { } catch (Exception e) {

View File

@ -21,6 +21,7 @@ import org.hl7.fhir.dstu2016may.utils.StructureMapUtilities;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -86,16 +87,16 @@ public class StructureMapTests {
StructureMapUtilities scu = new StructureMapUtilities(TestingUtilities.context, maps, null); StructureMapUtilities scu = new StructureMapUtilities(TestingUtilities.context, maps, null);
for (String f : new File("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\CDA").list()) { for (String f : ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\CDA").list()) {
try { try {
StructureDefinition sd = (StructureDefinition) new XmlParser() StructureDefinition sd = (StructureDefinition) new XmlParser()
.parse(new FileInputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\CDA\\" + f)); .parse(ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\CDA\\" + f));
((SimpleWorkerContext) TestingUtilities.context).seeResource(sd.getUrl(), sd); ((SimpleWorkerContext) TestingUtilities.context).seeResource(sd.getUrl(), sd);
} catch (Exception e) { } catch (Exception e) {
} }
} }
for (String f : new File("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\maps").list()) { for (String f : ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\maps").list()) {
try { try {
StructureMap map = scu.parse(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\maps\\" + f)); StructureMap map = scu.parse(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\maps\\" + f));
maps.put(map.getUrl(), map); maps.put(map.getUrl(), map);
@ -104,17 +105,17 @@ public class StructureMapTests {
} }
Element cda = Manager.parse(TestingUtilities.context, Element cda = Manager.parse(TestingUtilities.context,
new FileInputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\Example\\ccd.xml"), FhirFormat.XML); ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\Example\\ccd.xml"), FhirFormat.XML);
Manager.compose(TestingUtilities.context, cda, Manager.compose(TestingUtilities.context, cda,
new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\Example\\ccd.out.json"), FhirFormat.JSON, ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\Example\\ccd.out.json"), FhirFormat.JSON,
OutputStyle.PRETTY, null); OutputStyle.PRETTY, null);
Manager.compose(TestingUtilities.context, cda, Manager.compose(TestingUtilities.context, cda,
new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\Example\\ccd.out.xml"), FhirFormat.XML, ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\Example\\ccd.out.xml"), FhirFormat.XML,
OutputStyle.PRETTY, null); OutputStyle.PRETTY, null);
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
scu.transform(null, cda, maps.get("http://hl7.org/fhir/StructureMap/cda"), bundle); scu.transform(null, cda, maps.get("http://hl7.org/fhir/StructureMap/cda"), bundle);
new XmlParser().setOutputStyle(OutputStyle.PRETTY) new XmlParser().setOutputStyle(OutputStyle.PRETTY)
.compose(new FileOutputStream(Utilities.path("[tmp]", "bundle.xml")), bundle); .compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "bundle.xml")), bundle);
} }
} }

View File

@ -13,9 +13,10 @@ import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext;
import org.hl7.fhir.utilities.CSFile;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFile;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@ -41,7 +42,7 @@ public class TestingUtilities {
command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\"");
ProcessBuilder builder = new ProcessBuilder(command); ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new CSFile(Utilities.path("[tmp]"))); builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]")));
builder.start(); builder.start();
} }
@ -154,7 +155,7 @@ public class TestingUtilities {
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new FileInputStream(fn)); return builder.parse(ManagedFileAccess.inStream(fn));
} }
public static String checkJsonIsSame(String f1, String f2) public static String checkJsonIsSame(String f1, String f2)
@ -166,7 +167,7 @@ public class TestingUtilities {
command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\"");
ProcessBuilder builder = new ProcessBuilder(command); ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new CSFile(Utilities.path("[tmp]"))); builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]")));
builder.start(); builder.start();
} }

View File

@ -57,10 +57,11 @@ import org.hl7.fhir.dstu2016may.model.Resource;
import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.CSFile;
import org.hl7.fhir.utilities.CSFileInputStream;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFile;
import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlPullParserFactory;
@ -105,7 +106,7 @@ public class ToolsHelper {
private void executeExamples(String[] args) throws IOException { private void executeExamples(String[] args) throws IOException {
try { try {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<String> lines = FileUtils.readLines(new File(args[1]), "UTF-8"); List<String> lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8");
String srcDir = lines.get(0); String srcDir = lines.get(0);
lines.remove(0); lines.remove(0);
processExamples(srcDir, lines); processExamples(srcDir, lines);
@ -183,7 +184,7 @@ public class ToolsHelper {
// } else // } else
if (definitions.startsWith("https:") || definitions.startsWith("http:")) { if (definitions.startsWith("https:") || definitions.startsWith("http:")) {
defn = loadFromUrl(definitions); defn = loadFromUrl(definitions);
} else if (new File(definitions).exists()) { } else if (ManagedFileAccess.file(definitions).exists()) {
defn = loadFromFile(definitions); defn = loadFromFile(definitions);
} else } else
throw new FHIRException("Unable to find FHIR validation Pack (source = " + definitions + ")"); throw new FHIRException("Unable to find FHIR validation Pack (source = " + definitions + ")");
@ -197,7 +198,7 @@ public class ToolsHelper {
} }
private byte[] loadFromFile(String src) throws IOException { private byte[] loadFromFile(String src) throws IOException {
FileInputStream in = new FileInputStream(src); FileInputStream in = ManagedFileAccess.inStream(src);
byte[] b = new byte[in.available()]; byte[] b = new byte[in.available()];
in.read(b); in.read(b);
in.close(); in.close();
@ -224,10 +225,10 @@ public class ToolsHelper {
public void executeFragments(String[] args) throws IOException { public void executeFragments(String[] args) throws IOException {
try { try {
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
if (!source.exists()) if (!source.exists())
throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found");
XmlPullParser xpp = loadXml(new FileInputStream(source)); XmlPullParser xpp = loadXml(ManagedFileAccess.inStream(source));
nextNoWhitespace(xpp); nextNoWhitespace(xpp);
if (!xpp.getName().equals("tests")) if (!xpp.getName().equals("tests"))
throw new FHIRFormatError("Unable to parse file - starts with " + xpp.getName()); throw new FHIRFormatError("Unable to parse file - starts with " + xpp.getName());
@ -273,8 +274,8 @@ public class ToolsHelper {
public void executeRoundTrip(String[] args) throws IOException, FHIRException { public void executeRoundTrip(String[] args) throws IOException, FHIRException {
FileInputStream in; FileInputStream in;
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
File dest = new CSFile(args[2]); File dest = ManagedFileAccess.csfile(args[2]);
if (args.length >= 4) { if (args.length >= 4) {
Utilities.copyFile(args[1], args[3]); Utilities.copyFile(args[1], args[3]);
} }
@ -292,18 +293,18 @@ public class ToolsHelper {
json.close(); json.close();
TextFile.stringToFile(new String(json.toByteArray()), Utilities.changeFileExt(dest.getAbsolutePath(), ".json")); TextFile.stringToFile(new String(json.toByteArray()), Utilities.changeFileExt(dest.getAbsolutePath(), ".json"));
rf = pj.parse(new ByteArrayInputStream(json.toByteArray())); rf = pj.parse(new ByteArrayInputStream(json.toByteArray()));
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
new XmlParser().compose(s, rf, true); new XmlParser().compose(s, rf, true);
s.close(); s.close();
} }
public String executeJson(String[] args) throws IOException, FHIRException { public String executeJson(String[] args) throws IOException, FHIRException {
FileInputStream in; FileInputStream in;
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
File dest = new CSFile(args[2]); File dest = ManagedFileAccess.csfile(args[2]);
File destc = new CSFile(Utilities.changeFileExt(args[2], ".canonical.json")); File destc = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".canonical.json"));
File destt = new CSFile(args[2] + ".tmp"); File destt = ManagedFileAccess.csfile(args[2] + ".tmp");
File destr = new CSFile(Utilities.changeFileExt(args[2], ".ttl")); File destr = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".ttl"));
if (!source.exists()) if (!source.exists())
throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found");
@ -312,21 +313,21 @@ public class ToolsHelper {
Resource rf = p.parse(in); Resource rf = p.parse(in);
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
json.setOutputStyle(OutputStyle.PRETTY); json.setOutputStyle(OutputStyle.PRETTY);
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
json.compose(s, rf); json.compose(s, rf);
s.close(); s.close();
json.setOutputStyle(OutputStyle.CANONICAL); json.setOutputStyle(OutputStyle.CANONICAL);
s = new FileOutputStream(destc); s = ManagedFileAccess.outStream(destc);
json.compose(s, rf); json.compose(s, rf);
s.close(); s.close();
json.setSuppressXhtml("Snipped for Brevity"); json.setSuppressXhtml("Snipped for Brevity");
json.setOutputStyle(OutputStyle.PRETTY); json.setOutputStyle(OutputStyle.PRETTY);
s = new FileOutputStream(destt); s = ManagedFileAccess.outStream(destt);
json.compose(s, rf); json.compose(s, rf);
s.close(); s.close();
RdfParserBase rdf = new RdfParser(); RdfParserBase rdf = new RdfParser();
s = new FileOutputStream(destr); s = ManagedFileAccess.outStream(destr);
rdf.compose(s, rf); rdf.compose(s, rf);
s.close(); s.close();
@ -335,8 +336,8 @@ public class ToolsHelper {
public void executeCanonicalXml(String[] args) throws FHIRException, IOException { public void executeCanonicalXml(String[] args) throws FHIRException, IOException {
FileInputStream in; FileInputStream in;
File source = new CSFile(args[1]); File source = ManagedFileAccess.csfile(args[1]);
File dest = new CSFile(args[2]); File dest = ManagedFileAccess.csfile(args[2]);
if (!source.exists()) if (!source.exists())
throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found");
@ -345,7 +346,7 @@ public class ToolsHelper {
Resource rf = p.parse(in); Resource rf = p.parse(in);
XmlParser cxml = new XmlParser(); XmlParser cxml = new XmlParser();
cxml.setOutputStyle(OutputStyle.NORMAL); cxml.setOutputStyle(OutputStyle.NORMAL);
cxml.compose(new FileOutputStream(dest), rf); cxml.compose(ManagedFileAccess.outStream(dest), rf);
} }
private void executeVersion(String[] args) throws IOException { private void executeVersion(String[] args) throws IOException {
@ -358,7 +359,7 @@ public class ToolsHelper {
String filename = rootDir + n + ".xml"; String filename = rootDir + n + ".xml";
// 1. produce canonical XML // 1. produce canonical XML
CSFileInputStream source = new CSFileInputStream(filename); CSFileInputStream source = new CSFileInputStream(filename);
FileOutputStream dest = new FileOutputStream(Utilities.changeFileExt(filename, ".canonical.xml")); FileOutputStream dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".canonical.xml"));
XmlParser p = new XmlParser(); XmlParser p = new XmlParser();
Resource r = p.parse(source); Resource r = p.parse(source);
XmlParser cxml = new XmlParser(); XmlParser cxml = new XmlParser();
@ -367,18 +368,18 @@ public class ToolsHelper {
// 2. produce JSON // 2. produce JSON
source = new CSFileInputStream(filename); source = new CSFileInputStream(filename);
dest = new FileOutputStream(Utilities.changeFileExt(filename, ".json")); dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".json"));
r = p.parse(source); r = p.parse(source);
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
json.setOutputStyle(OutputStyle.PRETTY); json.setOutputStyle(OutputStyle.PRETTY);
json.compose(dest, r); json.compose(dest, r);
json = new JsonParser(); json = new JsonParser();
json.setOutputStyle(OutputStyle.CANONICAL); json.setOutputStyle(OutputStyle.CANONICAL);
dest = new FileOutputStream(Utilities.changeFileExt(filename, ".canonical.json")); dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".canonical.json"));
json.compose(dest, r); json.compose(dest, r);
// 2. produce JSON // 2. produce JSON
dest = new FileOutputStream(Utilities.changeFileExt(filename, ".ttl")); dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".ttl"));
RdfParserBase rdf = new RdfParser(); RdfParserBase rdf = new RdfParser();
rdf.compose(dest, r); rdf.compose(dest, r);
} catch (Exception e) { } catch (Exception e) {
@ -399,23 +400,23 @@ public class ToolsHelper {
String tmp = tmpDir + n.replace(File.separator, "-") + ".tmp"; String tmp = tmpDir + n.replace(File.separator, "-") + ".tmp";
String dest = tmpDir + n.replace(File.separator, "-") + ".java.xml"; String dest = tmpDir + n.replace(File.separator, "-") + ".java.xml";
FileInputStream in = new FileInputStream(source); FileInputStream in = ManagedFileAccess.inStream(source);
XmlParser xp = new XmlParser(); XmlParser xp = new XmlParser();
Resource r = xp.parse(in); Resource r = xp.parse(in);
System.err.print("."); System.err.print(".");
JsonParser jp = new JsonParser(); JsonParser jp = new JsonParser();
FileOutputStream out = new FileOutputStream(tmp); FileOutputStream out = ManagedFileAccess.outStream(tmp);
jp.setOutputStyle(OutputStyle.PRETTY); jp.setOutputStyle(OutputStyle.PRETTY);
jp.compose(out, r); jp.compose(out, r);
out.close(); out.close();
r = null; r = null;
System.err.print("."); System.err.print(".");
in = new FileInputStream(tmp); in = ManagedFileAccess.inStream(tmp);
System.err.print(","); System.err.print(",");
r = jp.parse(in); r = jp.parse(in);
System.err.print("."); System.err.print(".");
out = new FileOutputStream(dest); out = ManagedFileAccess.outStream(dest);
new XmlParser().compose(out, r, true); new XmlParser().compose(out, r, true);
System.err.println("!"); System.err.println("!");
out.close(); out.close();
@ -431,7 +432,7 @@ public class ToolsHelper {
private void executeTest(String[] args) throws Throwable { private void executeTest(String[] args) throws Throwable {
try { try {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<String> lines = FileUtils.readLines(new File(args[1]), "UTF-8"); List<String> lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8");
String srcDir = lines.get(0); String srcDir = lines.get(0);
lines.remove(0); lines.remove(0);
String dstDir = lines.get(0).trim(); String dstDir = lines.get(0).trim();

View File

@ -94,6 +94,7 @@ import org.hl7.fhir.exceptions.TerminologyServiceException;
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.TextFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.i18n.I18nBase; import org.hl7.fhir.utilities.i18n.I18nBase;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType;
@ -323,7 +324,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
String cacheFn = null; String cacheFn = null;
if (cache != null) { if (cache != null) {
cacheFn = Utilities.path(cache, determineCacheId(vs, heirarchical) + ".json"); cacheFn = Utilities.path(cache, determineCacheId(vs, heirarchical) + ".json");
if (new File(cacheFn).exists()) { if (ManagedFileAccess.file(cacheFn).exists()) {
return loadFromCache(vs.copy(), cacheFn); return loadFromCache(vs.copy(), cacheFn);
} }
} }
@ -335,8 +336,8 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
.expand(vs, expProfile.setExcludeNested(!heirarchical)); .expand(vs, expProfile.setExcludeNested(!heirarchical));
if (vse.getValueset() != null) { if (vse.getValueset() != null) {
if (cache != null) { if (cache != null) {
FileOutputStream s = new FileOutputStream(cacheFn); FileOutputStream s = ManagedFileAccess.outStream(cacheFn);
newJsonParser().compose(new FileOutputStream(cacheFn), vse.getValueset()); newJsonParser().compose(ManagedFileAccess.outStream(cacheFn), vse.getValueset());
s.close(); s.close();
} }
} }
@ -368,7 +369,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
private ValueSetExpansionOutcome loadFromCache(ValueSet vs, String cacheFn) private ValueSetExpansionOutcome loadFromCache(ValueSet vs, String cacheFn)
throws FileNotFoundException, Exception { throws FileNotFoundException, Exception {
JsonParser parser = new JsonParser(); JsonParser parser = new JsonParser();
Resource r = parser.parse(new FileInputStream(cacheFn)); Resource r = parser.parse(ManagedFileAccess.inStream(cacheFn));
if (r instanceof OperationOutcome) { if (r instanceof OperationOutcome) {
return new ValueSetExpansionOutcome( return new ValueSetExpansionOutcome(
((OperationOutcome) r).getIssue().get(0).getDetails().getText(), ((OperationOutcome) r).getIssue().get(0).getDetails().getText(),
@ -382,7 +383,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
private void saveToCache(Resource res, String cacheFn) throws FileNotFoundException, Exception { private void saveToCache(Resource res, String cacheFn) throws FileNotFoundException, Exception {
JsonParser parser = new JsonParser(); JsonParser parser = new JsonParser();
parser.compose(new FileOutputStream(cacheFn), res); parser.compose(ManagedFileAccess.outStream(cacheFn), res);
} }
private String determineCacheId(ValueSet vs, boolean heirarchical) throws Exception { private String determineCacheId(ValueSet vs, boolean heirarchical) throws Exception {
@ -715,7 +716,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
if (fn == null) { if (fn == null) {
return null; return null;
} }
if (!(new File(fn).exists())) { if (!(ManagedFileAccess.file(fn).exists())) {
return null; return null;
} }
String cnt = TextFile.fileToString(fn); String cnt = TextFile.fileToString(fn);

View File

@ -86,9 +86,10 @@ import org.hl7.fhir.dstu3.utils.validation.IResourceValidator;
import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.CSFileInputStream;
import org.hl7.fhir.utilities.OIDUtils; import org.hl7.fhir.utilities.OIDUtils;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.npm.NpmPackage; import org.hl7.fhir.utilities.npm.NpmPackage;
import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType;
@ -676,7 +677,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
public void loadFromFolder(String folder) throws FileNotFoundException, Exception { public void loadFromFolder(String folder) throws FileNotFoundException, Exception {
for (String n : new File(folder).list()) { for (String n : ManagedFileAccess.file(folder).list()) {
if (n.endsWith(".json")) if (n.endsWith(".json"))
loadFromFile(Utilities.path(folder, n), new JsonParser()); loadFromFile(Utilities.path(folder, n), new JsonParser());
else if (n.endsWith(".xml")) else if (n.endsWith(".xml"))
@ -687,7 +688,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon
private void loadFromFile(String filename, IParser p) throws FileNotFoundException, Exception { private void loadFromFile(String filename, IParser p) throws FileNotFoundException, Exception {
Resource r; Resource r;
try { try {
r = p.parse(new FileInputStream(filename)); r = p.parse(ManagedFileAccess.inStream(filename));
if (r.getResourceType() == ResourceType.Bundle) { if (r.getResourceType() == ResourceType.Bundle) {
for (BundleEntryComponent e : ((Bundle) r).getEntry()) { for (BundleEntryComponent e : ((Bundle) r).getEntry()) {
seeResource(null, e.getResource()); seeResource(null, e.getResource());

View File

@ -1,37 +1,38 @@
package org.hl7.fhir.dstu3.elementmodel; package org.hl7.fhir.dstu3.elementmodel;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer. list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, * Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. and/or other materials provided with the distribution.
* Neither the name of HL7 nor the names of its contributors may be used to * Neither the name of HL7 nor the names of its contributors may be used to
endorse or promote products derived from this software without specific endorse or promote products derived from this software without specific
prior written permission. prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
*/ */
import java.io.File; import java.io.File;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.util.Map.Entry; import java.util.Map.Entry;
@ -53,17 +54,17 @@ public class Tester {
IWorkerContext context = SimpleWorkerContext.fromPack(Utilities.path("C:\\work\\org.hl7.fhir\\build\\publish", "validation-min.xml.zip")); IWorkerContext context = SimpleWorkerContext.fromPack(Utilities.path("C:\\work\\org.hl7.fhir\\build\\publish", "validation-min.xml.zip"));
int t = 0; int t = 0;
int ok = 0; int ok = 0;
for (String f : new File("C:\\work\\org.hl7.fhir\\build\\publish").list()) { for (String f : ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish").list()) {
if (f.endsWith(".xml") && !f.endsWith(".canonical.xml") && !f.contains("profile") && !f.contains("questionnaire") && new File("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".ttl")).exists()) { if (f.endsWith(".xml") && !f.endsWith(".canonical.xml") && !f.contains("profile") && !f.contains("questionnaire") && ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".ttl")).exists()) {
// if (f.equals("account-questionnaire.xml")) { // if (f.equals("account-questionnaire.xml")) {
System.out.print("convert "+f); System.out.print("convert "+f);
// Manager.convert(context, new FileInputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML, // Manager.convert(context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML,
// new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json")), FhirFormat.JSON, OutputStyle.PRETTY); // ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json")), FhirFormat.JSON, OutputStyle.PRETTY);
// String src = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json"))); // String src = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json")));
// String tgt = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".json"))); // String tgt = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".json")));
Element e = Manager.parse(context, new FileInputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML); Element e = Manager.parse(context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML);
Manager.compose(context, e, new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.ttl")), FhirFormat.TURTLE, OutputStyle.PRETTY, null); Manager.compose(context, e, ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.ttl")), FhirFormat.TURTLE, OutputStyle.PRETTY, null);
Manager.compose(context, e, new FileOutputStream(Utilities.path("[tmp]", "resource.xml")), FhirFormat.XML, OutputStyle.PRETTY, null); Manager.compose(context, e, ManagedFileAccess.outStream(Utilities.path("[tmp]", "resource.xml")), FhirFormat.XML, OutputStyle.PRETTY, null);
String src = TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.ttl")); String src = TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.ttl"));
String tgt = TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".ttl")); String tgt = TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".ttl"));
t++; t++;

View File

@ -1,33 +1,33 @@
package org.hl7.fhir.dstu3.terminologies; package org.hl7.fhir.dstu3.terminologies;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer. list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, * Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. and/or other materials provided with the distribution.
* Neither the name of HL7 nor the names of its contributors may be used to * Neither the name of HL7 nor the names of its contributors may be used to
endorse or promote products derived from this software without specific endorse or promote products derived from this software without specific
prior written permission. prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
*/ */
@ -56,6 +56,7 @@ import org.hl7.fhir.dstu3.model.Meta;
import org.hl7.fhir.dstu3.utils.ToolingExtensions; import org.hl7.fhir.dstu3.utils.ToolingExtensions;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
@ -157,12 +158,12 @@ public class LoincToDEConvertor {
factory.setNamespaceAware(true); factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder(); DocumentBuilder builder = factory.newDocumentBuilder();
xml = builder.parse(new FileInputStream(definitions)); xml = builder.parse(ManagedFileAccess.inStream(definitions));
} }
private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException {
XmlParser xml = new XmlParser(); XmlParser xml = new XmlParser();
FileOutputStream s = new FileOutputStream(dest); FileOutputStream s = ManagedFileAccess.outStream(dest);
xml.compose(s, bundle, true); xml.compose(s, bundle, true);
s.close(); s.close();
} }

View File

@ -1,33 +1,33 @@
package org.hl7.fhir.dstu3.terminologies; package org.hl7.fhir.dstu3.terminologies;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer. list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, * Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. and/or other materials provided with the distribution.
* Neither the name of HL7 nor the names of its contributors may be used to * Neither the name of HL7 nor the names of its contributors may be used to
endorse or promote products derived from this software without specific endorse or promote products derived from this software without specific
prior written permission. prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
*/ */
@ -79,6 +79,7 @@ import org.hl7.fhir.dstu3.terminologies.ValueSetExpander.ValueSetExpansionOutcom
import org.hl7.fhir.dstu3.utils.ToolingExtensions; import org.hl7.fhir.dstu3.utils.ToolingExtensions;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xhtml.XhtmlComposer; import org.hl7.fhir.utilities.xhtml.XhtmlComposer;
public class ValueSetExpansionCache implements ValueSetExpanderFactory { public class ValueSetExpansionCache implements ValueSetExpanderFactory {
@ -96,7 +97,7 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory {
// well, we'll see if the designated server can expand it, and if it can, we'll cache it locally // well, we'll see if the designated server can expand it, and if it can, we'll cache it locally
vso = context.expandVS(source, false, profile == null || !profile.getExcludeNested()); vso = context.expandVS(source, false, profile == null || !profile.getExcludeNested());
if (cacheFolder != null) { if (cacheFolder != null) {
FileOutputStream s = new FileOutputStream(Utilities.path(cacheFolder, makeFile(source.getUrl()))); FileOutputStream s = ManagedFileAccess.outStream(Utilities.path(cacheFolder, makeFile(source.getUrl())));
context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).compose(s, vso.getValueset()); context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).compose(s, vso.getValueset());
s.close(); s.close();
} }
@ -136,10 +137,10 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory {
} }
private void loadCache() throws FHIRFormatError, IOException { private void loadCache() throws FHIRFormatError, IOException {
File[] files = new File(cacheFolder).listFiles(); File[] files = ManagedFileAccess.file(cacheFolder).listFiles();
for (File f : files) { for (File f : files) {
if (f.getName().endsWith(".xml")) { if (f.getName().endsWith(".xml")) {
final FileInputStream is = new FileInputStream(f); final FileInputStream is = ManagedFileAccess.inStream(f);
try { try {
Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is); Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is);
if (r instanceof OperationOutcome) { if (r instanceof OperationOutcome) {

View File

@ -1,33 +1,33 @@
package org.hl7.fhir.dstu3.utils; package org.hl7.fhir.dstu3.utils;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer. list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, * Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. and/or other materials provided with the distribution.
* Neither the name of HL7 nor the names of its contributors may be used to * Neither the name of HL7 nor the names of its contributors may be used to
endorse or promote products derived from this software without specific endorse or promote products derived from this software without specific
prior written permission. prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
*/ */
@ -52,6 +52,7 @@ import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.IniFile; import org.hl7.fhir.utilities.IniFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class BatchLoader { public class BatchLoader {
@ -68,7 +69,7 @@ public class BatchLoader {
throw new FHIRException("Unimplemented file type "+file); throw new FHIRException("Unimplemented file type "+file);
// } else if (file.endsWith(".zip")) { // } else if (file.endsWith(".zip")) {
// LoadZipFile(server, file, p, size, 0, -1); // LoadZipFile(server, file, p, size, 0, -1);
} else if (new File(file).isDirectory()) { } else if (ManagedFileAccess.file(file).isDirectory()) {
LoadDirectory(server, file, size); LoadDirectory(server, file, size);
} else } else
throw new FHIRException("Unknown file type "+file); throw new FHIRException("Unknown file type "+file);
@ -81,7 +82,7 @@ public class BatchLoader {
System.out.println("Done"); System.out.println("Done");
IniFile ini = new IniFile(Utilities.path(folder, "batch-load-progress.ini")); IniFile ini = new IniFile(Utilities.path(folder, "batch-load-progress.ini"));
for (File f : new File(folder).listFiles()) { for (File f : ManagedFileAccess.file(folder).listFiles()) {
if (f.getName().endsWith(".json") || f.getName().endsWith(".xml")) { if (f.getName().endsWith(".json") || f.getName().endsWith(".xml")) {
if (!ini.getBooleanProperty("finished", f.getName())) { if (!ini.getBooleanProperty("finished", f.getName())) {
sendFile(client, f, size, ini); sendFile(client, f, size, ini);
@ -145,7 +146,7 @@ public class BatchLoader {
// Bundle b = new Bundle(); // Bundle b = new Bundle();
// b.setType(BundleType.COLLECTION); // b.setType(BundleType.COLLECTION);
// b.setId(UUID.randomUUID().toString().toLowerCase()); // b.setId(UUID.randomUUID().toString().toLowerCase());
// ZipInputStream zip = new ZipInputStream(new FileInputStream(file)); // ZipInputStream zip = new ZipInputStream(ManagedFileAccess.inStream(file));
// ZipEntry entry; // ZipEntry entry;
// while((entry = zip.getNextEntry())!=null) // while((entry = zip.getNextEntry())!=null)
// { // {

View File

@ -19,6 +19,7 @@ import org.hl7.fhir.dstu3.model.DomainResource;
import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class R3TEchnicalCorrectionProcessor { public class R3TEchnicalCorrectionProcessor {
@ -31,10 +32,10 @@ public class R3TEchnicalCorrectionProcessor {
System.out.println("Loading resources from "+src); System.out.println("Loading resources from "+src);
List<Resource> resources = new ArrayList<>(); List<Resource> resources = new ArrayList<>();
Map<String, Resource> definitions = new HashMap<>(); Map<String, Resource> definitions = new HashMap<>();
for (File f : new File(src).listFiles()) { for (File f : ManagedFileAccess.file(src).listFiles()) {
if (f.getName().endsWith(".xml") && !(f.getName().endsWith("warnings.xml") || f.getName().endsWith(".diff.xml"))) { if (f.getName().endsWith(".xml") && !(f.getName().endsWith("warnings.xml") || f.getName().endsWith(".diff.xml"))) {
try { try {
Resource r = new XmlParser().parse(new FileInputStream(f)); Resource r = new XmlParser().parse(ManagedFileAccess.inStream(f));
if (f.getName().contains("canonical")) { if (f.getName().contains("canonical")) {
resources.add(r); resources.add(r);
} }
@ -43,17 +44,17 @@ public class R3TEchnicalCorrectionProcessor {
definitions.put(f.getName(), r); definitions.put(f.getName(), r);
} }
r.setUserData("path", f.getName().substring(0, f.getName().indexOf("."))); r.setUserData("path", f.getName().substring(0, f.getName().indexOf(".")));
// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"1")); // FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"1"));
// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"2")); // FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"2"));
} catch (Exception e) { } catch (Exception e) {
System.out.println("Unable to load "+f.getName()+": "+e.getMessage()); System.out.println("Unable to load "+f.getName()+": "+e.getMessage());
} }
} }
if (f.getName().endsWith(".json") && !(f.getName().endsWith("schema.json") || f.getName().endsWith(".diff.json"))) { if (f.getName().endsWith(".json") && !(f.getName().endsWith("schema.json") || f.getName().endsWith(".diff.json"))) {
try { try {
// new JsonParser().parse(new FileInputStream(f)); // new JsonParser().parse(ManagedFileAccess.inStream(f));
// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"1")); // FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"1"));
// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"2")); // FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"2"));
} catch (Exception e) { } catch (Exception e) {
System.out.println("Unable to load "+f.getName()+": "+e.getMessage()); System.out.println("Unable to load "+f.getName()+": "+e.getMessage());
} }
@ -79,15 +80,15 @@ public class R3TEchnicalCorrectionProcessor {
private void produceDefinitionsXml(Map<String, Resource> definitions, String dest) throws IOException { private void produceDefinitionsXml(Map<String, Resource> definitions, String dest) throws IOException {
for (String n : definitions.keySet()) { for (String n : definitions.keySet()) {
File f = new File(Utilities.path(dest, "definitions.xml", n)); File f = ManagedFileAccess.file(Utilities.path(dest, "definitions.xml", n));
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), definitions.get(n)); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), definitions.get(n));
} }
} }
private void produceDefinitionsJson(Map<String, Resource> definitions, String dest) throws IOException { private void produceDefinitionsJson(Map<String, Resource> definitions, String dest) throws IOException {
for (String n : definitions.keySet()) { for (String n : definitions.keySet()) {
File f = new File(Utilities.path(dest, "definitions.json", Utilities.changeFileExt(n, ".json"))); File f = ManagedFileAccess.file(Utilities.path(dest, "definitions.json", Utilities.changeFileExt(n, ".json")));
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), definitions.get(n)); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), definitions.get(n));
} }
} }
@ -97,8 +98,8 @@ public class R3TEchnicalCorrectionProcessor {
if (!r.getId().equals(r.getUserString("path"))) { if (!r.getId().equals(r.getUserString("path"))) {
n = n+"("+r.getId()+")"; n = n+"("+r.getId()+")";
} }
File f = new File(Utilities.path(dest, "examples-json", n+".json")); File f = ManagedFileAccess.file(Utilities.path(dest, "examples-json", n+".json"));
new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), r); new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} }
@ -109,8 +110,8 @@ public class R3TEchnicalCorrectionProcessor {
if (!r.getId().equals(r.getUserString("path"))) { if (!r.getId().equals(r.getUserString("path"))) {
n = n+"("+r.getId()+")"; n = n+"("+r.getId()+")";
} }
File f = new File(Utilities.path(dest, "examples", n+".xml")); File f = ManagedFileAccess.file(Utilities.path(dest, "examples", n+".xml"));
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), r); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r);
} }
} }
@ -119,9 +120,9 @@ public class R3TEchnicalCorrectionProcessor {
String corePath = Utilities.path(root, "hl7.fhir.r3.core", "package"); String corePath = Utilities.path(root, "hl7.fhir.r3.core", "package");
String examplesPath = Utilities.path(root, "hl7.fhir.r3.examples", "package"); String examplesPath = Utilities.path(root, "hl7.fhir.r3.examples", "package");
String elementsPath = Utilities.path(root, "hl7.fhir.r3.elements", "package"); String elementsPath = Utilities.path(root, "hl7.fhir.r3.elements", "package");
int coreTotal = new File(corePath).list().length-1; int coreTotal = ManagedFileAccess.file(corePath).list().length-1;
int examplesTotal = new File(examplesPath).list().length-1; int examplesTotal = ManagedFileAccess.file(examplesPath).list().length-1;
int elementsTotal = new File(elementsPath).list().length-1; int elementsTotal = ManagedFileAccess.file(elementsPath).list().length-1;
int coreCount = 0; int coreCount = 0;
int examplesCount = 0; int examplesCount = 0;
@ -131,17 +132,17 @@ public class R3TEchnicalCorrectionProcessor {
FileOutputStream dst = null; FileOutputStream dst = null;
if (n.startsWith("DataElement-")) { if (n.startsWith("DataElement-")) {
elementsCount++; elementsCount++;
dst = new FileOutputStream(Utilities.path(elementsPath, n)); dst = ManagedFileAccess.outStream(Utilities.path(elementsPath, n));
new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(dst, r); new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(dst, r);
} else { } else {
dst = new FileOutputStream(Utilities.path(examplesPath, n)); dst = ManagedFileAccess.outStream(Utilities.path(examplesPath, n));
new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(dst, r); new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(dst, r);
examplesCount++; examplesCount++;
if (isCoreResource(r.fhirType())) { if (isCoreResource(r.fhirType())) {
coreCount++; coreCount++;
DomainResource dr = (DomainResource) r; DomainResource dr = (DomainResource) r;
dr.setText(null); dr.setText(null);
new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(new FileOutputStream(Utilities.path(corePath, n)), r); new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(ManagedFileAccess.outStream(Utilities.path(corePath, n)), r);
} }
} }
} }

View File

@ -40,7 +40,7 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import org.hl7.fhir.utilities.CSFileInputStream; import org.hl7.fhir.utilities.filesystem.CSFileInputStream;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;

View File

@ -1,33 +1,33 @@
package org.hl7.fhir.dstu3.utils; package org.hl7.fhir.dstu3.utils;
/* /*
Copyright (c) 2011+, HL7, Inc. Copyright (c) 2011+, HL7, Inc.
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer. list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, * Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. and/or other materials provided with the distribution.
* Neither the name of HL7 nor the names of its contributors may be used to * Neither the name of HL7 nor the names of its contributors may be used to
endorse or promote products derived from this software without specific endorse or promote products derived from this software without specific
prior written permission. prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
*/ */
@ -42,6 +42,7 @@ import org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent;
import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class Unbundler { public class Unbundler {
@ -51,12 +52,12 @@ public class Unbundler {
private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException { private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException {
String folder = Utilities.getDirectoryForFile(src); String folder = Utilities.getDirectoryForFile(src);
Bundle bnd = (Bundle) new JsonParser().parse(new FileInputStream(src)); Bundle bnd = (Bundle) new JsonParser().parse(ManagedFileAccess.inStream(src));
for (BundleEntryComponent be : bnd.getEntry()) { for (BundleEntryComponent be : bnd.getEntry()) {
Resource r = be.getResource(); Resource r = be.getResource();
if (r != null) { if (r != null) {
String tgt = Utilities.path(folder, r.fhirType()+"-"+r.getId()+".json"); String tgt = Utilities.path(folder, r.fhirType()+"-"+r.getId()+".json");
new JsonParser().compose(new FileOutputStream(tgt), r); new JsonParser().compose(ManagedFileAccess.outStream(tgt), r);
} }
} }
} }

View File

@ -19,6 +19,7 @@ import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.test.support.TestingUtilities; import org.hl7.fhir.dstu3.test.support.TestingUtilities;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.xml.XMLUtil; import org.hl7.fhir.utilities.xml.XMLUtil;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
@ -59,7 +60,7 @@ public class FluentPathTests {
if (Utilities.noString(input)) if (Utilities.noString(input))
fp.check(null, null, node); fp.check(null, null, node);
else { else {
res = new XmlParser().parse(new FileInputStream(Utilities.path("C:\\work\\org.hl7.fhir\\build\\publish", input))); res = new XmlParser().parse(ManagedFileAccess.inStream(Utilities.path("C:\\work\\org.hl7.fhir\\build\\publish", input)));
fp.check(res, res.getResourceType().toString(), res.getResourceType().toString(), node); fp.check(res, res.getResourceType().toString(), res.getResourceType().toString(), node);
} }
outcome = fp.evaluate(res, node); outcome = fp.evaluate(res, node);

View File

@ -12,6 +12,7 @@ import org.hl7.fhir.dstu3.utils.EOperationOutcome;
import org.hl7.fhir.dstu3.utils.NarrativeGenerator; import org.hl7.fhir.dstu3.utils.NarrativeGenerator;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
@ -41,9 +42,9 @@ public class NarrativeGeneratorTests {
private void process(String path) throws FileNotFoundException, IOException, XmlPullParserException, EOperationOutcome, FHIRException { private void process(String path) throws FileNotFoundException, IOException, XmlPullParserException, EOperationOutcome, FHIRException {
XmlParser p = new XmlParser(); XmlParser p = new XmlParser();
DomainResource r = (DomainResource) p.parse(new FileInputStream(path)); DomainResource r = (DomainResource) p.parse(ManagedFileAccess.inStream(path));
gen.generate(r); gen.generate(r);
FileOutputStream s = new FileOutputStream(Utilities.path("[tmp]", "gen.xml")); FileOutputStream s = ManagedFileAccess.outStream(Utilities.path("[tmp]", "gen.xml"));
new XmlParser().compose(s, r, true); new XmlParser().compose(s, r, true);
s.close(); s.close();

View File

@ -26,8 +26,9 @@ import org.hl7.fhir.dstu3.utils.EOperationOutcome;
import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.CSFile;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.CSFile;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage;
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
@ -45,8 +46,8 @@ public class ProfileUtilitiesTests {
public static void main(String[] args) throws EOperationOutcome, Exception { public static void main(String[] args) throws EOperationOutcome, Exception {
// new ProfileUtilitiesTests().execute(args); // new ProfileUtilitiesTests().execute(args);
new ProfileUtilitiesTests("C:\\work\\org.hl7.fhir\\build\\publish").testSnapshotGeneration(); new ProfileUtilitiesTests("C:\\work\\org.hl7.fhir\\build\\publish").testSnapshotGeneration();
// StructureDefinition p = (StructureDefinition) new XmlParser().parse(new FileInputStream("C:\\work\\org.hl7.fhir\\build\\publish\\lipid-report-cholesterol.profile.xml")); // StructureDefinition p = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\lipid-report-cholesterol.profile.xml"));
// new ProfileUtilities(context, messages, null).generateSchematrons(new FileOutputStream(Utilities.path("[tmp]", "test.sch"), p); // new ProfileUtilities(context, messages, null).generateSchematrons(ManagedFileAccess.outStream(Utilities.path("[tmp]", "test.sch"), p);
} }
public void execute(String[] args) throws FileNotFoundException, IOException, FHIRException { public void execute(String[] args) throws FileNotFoundException, IOException, FHIRException {
@ -76,9 +77,9 @@ public class ProfileUtilitiesTests {
System.out.println("processing output"); System.out.println("processing output");
for (ProfileComparison outcome : comp.getComparisons()) { for (ProfileComparison outcome : comp.getComparisons()) {
if (outcome.getSubset() != null) if (outcome.getSubset() != null)
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "intersection-"+outcome.getId()+".xml")), outcome.getSubset()); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "intersection-"+outcome.getId()+".xml")), outcome.getSubset());
if (outcome.getSuperset() != null) if (outcome.getSuperset() != null)
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "union-"+outcome.getId()+".xml")), outcome.getSuperset()); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "union-"+outcome.getId()+".xml")), outcome.getSuperset());
System.out.println("\r\n"+outcome.getId()+": Comparison of "+outcome.getLeft().getUrl()+" and "+outcome.getRight().getUrl()); System.out.println("\r\n"+outcome.getId()+": Comparison of "+outcome.getLeft().getUrl()+" and "+outcome.getRight().getUrl());
for (ValidationMessage vm : outcome.getMessages()) for (ValidationMessage vm : outcome.getMessages())
@ -101,8 +102,8 @@ public class ProfileUtilitiesTests {
private void compare(String fn1, String fn2) throws FHIRFormatError, FileNotFoundException, IOException, DefinitionException { private void compare(String fn1, String fn2) throws FHIRFormatError, FileNotFoundException, IOException, DefinitionException {
System.out.println("Compare "+fn1+" to "+fn2); System.out.println("Compare "+fn1+" to "+fn2);
System.out.println(" .. load"); System.out.println(" .. load");
StructureDefinition left = (StructureDefinition) new XmlParser().parse(new FileInputStream(Utilities.path(root, fn1))); StructureDefinition left = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream(Utilities.path(root, fn1)));
StructureDefinition right = (StructureDefinition) new XmlParser().parse(new FileInputStream(Utilities.path(root, fn2))); StructureDefinition right = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream(Utilities.path(root, fn2)));
System.out.println(" .. compare"); System.out.println(" .. compare");
comp.compareProfiles(left, right); comp.compareProfiles(left, right);
@ -893,14 +894,14 @@ public class ProfileUtilitiesTests {
// focus.setDifferential(null); // focus.setDifferential(null);
String f1 = Utilities.path("c:", "temp", "base.xml"); String f1 = Utilities.path("c:", "temp", "base.xml");
String f2 = Utilities.path("c:", "temp", "derived.xml"); String f2 = Utilities.path("c:", "temp", "derived.xml");
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f1), base);; new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f1), base);;
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f2), focus);; new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f2), focus);;
String diff = Utilities.path(System.getenv("ProgramFiles(X86)"), "WinMerge", "WinMergeU.exe"); String diff = Utilities.path(System.getenv("ProgramFiles(X86)"), "WinMerge", "WinMergeU.exe");
List<String> command = new ArrayList<String>(); List<String> command = new ArrayList<String>();
command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\"");
ProcessBuilder builder = new ProcessBuilder(command); ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new CSFile(Utilities.path("[tmp]"))); builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]")));
builder.start(); builder.start();
} }

View File

@ -1,7 +1,9 @@
package org.hl7.fhir.dstu3.test; package org.hl7.fhir.dstu3.test;
import java.io.File; import java.io.File;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException;
import org.hl7.fhir.dstu3.formats.XmlParser; import org.hl7.fhir.dstu3.formats.XmlParser;
import org.hl7.fhir.dstu3.model.StructureDefinition; import org.hl7.fhir.dstu3.model.StructureDefinition;
@ -13,15 +15,15 @@ public class QuestionnaireBuilderTester {
private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish"; private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish";
// private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\"); // private static final String TEST_DEST = Utilities.path("[tmp]", "questionnaires\\");
public static void main(String[] args) { public static void main(String[] args) throws IOException {
QuestionnaireBuilder b = new QuestionnaireBuilder(null); QuestionnaireBuilder b = new QuestionnaireBuilder(null);
for (String f : new File(TEST_PROFILE_DIR).list()) { for (String f : ManagedFileAccess.file(TEST_PROFILE_DIR).list()) {
if (f.endsWith(".profile.xml") && !f.contains("type-")) { if (f.endsWith(".profile.xml") && !f.contains("type-")) {
System.out.println("process "+f); System.out.println("process "+f);
try { try {
StructureDefinition p = (StructureDefinition) new XmlParser().parse(new FileInputStream(TEST_PROFILE_DIR+"\\"+f)); StructureDefinition p = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream(TEST_PROFILE_DIR+"\\"+f));
// Questionnaire q = b.buildQuestionnaire(p); // Questionnaire q = b.buildQuestionnaire(p);
// new XmlComposer().compose(new FileOutputStream(TEST_DEST+f), q, true); // new XmlComposer().compose(ManagedFileAccess.outStream(TEST_DEST+f), q, true);
throw new FHIRException("test"); throw new FHIRException("test");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -14,6 +14,7 @@ import org.hl7.fhir.dstu3.test.support.TestingUtilities;
import org.hl7.fhir.dstu3.utils.EOperationOutcome; import org.hl7.fhir.dstu3.utils.EOperationOutcome;
import org.hl7.fhir.dstu3.utils.NarrativeGenerator; import org.hl7.fhir.dstu3.utils.NarrativeGenerator;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -24,9 +25,9 @@ public class ResourceRoundTripTests {
public void test() throws FileNotFoundException, IOException, FHIRException, EOperationOutcome { public void test() throws FileNotFoundException, IOException, FHIRException, EOperationOutcome {
if (TestingUtilities.context == null) if (TestingUtilities.context == null)
TestingUtilities.context = SimpleWorkerContext.fromPack("C:\\work\\org.hl7.fhir\\build\\publish\\definitions.xml.zip"); TestingUtilities.context = SimpleWorkerContext.fromPack("C:\\work\\org.hl7.fhir\\build\\publish\\definitions.xml.zip");
Resource res = new XmlParser().parse(new FileInputStream("C:\\work\\org.hl7.fhir\\build\\tests\\resources\\unicode.xml")); Resource res = new XmlParser().parse(ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\tests\\resources\\unicode.xml"));
new NarrativeGenerator("", "", TestingUtilities.context).generate((DomainResource) res); new NarrativeGenerator("", "", TestingUtilities.context).generate((DomainResource) res);
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\tests\\resources\\unicode.out.xml"), res); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\tests\\resources\\unicode.out.xml"), res);
} }
} }

View File

@ -45,6 +45,7 @@ import org.hl7.fhir.dstu3.formats.XmlParser;
import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.dstu3.model.Resource;
import org.hl7.fhir.dstu3.test.support.TestingUtilities; import org.hl7.fhir.dstu3.test.support.TestingUtilities;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
public class ResourceTest { public class ResourceTest {
@ -66,18 +67,18 @@ public class ResourceTest {
p = new JsonParser(); p = new JsonParser();
else else
p = new XmlParser(false); p = new XmlParser(false);
Resource rf = p.parse(new FileInputStream(source)); Resource rf = p.parse(ManagedFileAccess.inStream(source));
FileOutputStream out = new FileOutputStream(source.getAbsoluteFile()+".out.json"); FileOutputStream out = ManagedFileAccess.outStream(source.getAbsoluteFile()+".out.json");
JsonParser json1 = new JsonParser(); JsonParser json1 = new JsonParser();
json1.setOutputStyle(OutputStyle.PRETTY); json1.setOutputStyle(OutputStyle.PRETTY);
json1.compose(out, rf); json1.compose(out, rf);
out.close(); out.close();
JsonParser json = new JsonParser(); JsonParser json = new JsonParser();
rf = json.parse(new FileInputStream(source.getAbsoluteFile()+".out.json")); rf = json.parse(ManagedFileAccess.inStream(source.getAbsoluteFile()+".out.json"));
out = new FileOutputStream(source.getAbsoluteFile()+".out.xml"); out = ManagedFileAccess.outStream(source.getAbsoluteFile()+".out.xml");
XmlParser atom = new XmlParser(); XmlParser atom = new XmlParser();
atom.setOutputStyle(OutputStyle.PRETTY); atom.setOutputStyle(OutputStyle.PRETTY);
atom.compose(out, rf, true); atom.compose(out, rf, true);
@ -89,9 +90,9 @@ public class ResourceTest {
public Element testEM() throws Exception { public Element testEM() throws Exception {
if (TestingUtilities.context == null) if (TestingUtilities.context == null)
TestingUtilities.context = SimpleWorkerContext.fromPack("C:\\work\\org.hl7.fhir\\build\\publish\\definitions.xml.zip"); TestingUtilities.context = SimpleWorkerContext.fromPack("C:\\work\\org.hl7.fhir\\build\\publish\\definitions.xml.zip");
Element resource = Manager.parse(TestingUtilities.context, new FileInputStream(source), isJson() ? FhirFormat.JSON : FhirFormat.XML); Element resource = Manager.parse(TestingUtilities.context, ManagedFileAccess.inStream(source), isJson() ? FhirFormat.JSON : FhirFormat.XML);
Manager.compose(TestingUtilities.context, resource, new FileOutputStream(source.getAbsoluteFile()+".out.json"), FhirFormat.JSON, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, resource, ManagedFileAccess.outStream(source.getAbsoluteFile()+".out.json"), FhirFormat.JSON, OutputStyle.PRETTY, null);
Manager.compose(TestingUtilities.context, resource, new FileOutputStream(source.getAbsoluteFile()+".out.json"), FhirFormat.XML, OutputStyle.PRETTY, null); Manager.compose(TestingUtilities.context, resource, ManagedFileAccess.outStream(source.getAbsoluteFile()+".out.json"), FhirFormat.XML, OutputStyle.PRETTY, null);
return resource; return resource;
} }

View File

@ -30,6 +30,7 @@ package org.hl7.fhir.dstu3.test;
import java.io.File; import java.io.File;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
@Disabled @Disabled
@ -41,7 +42,7 @@ public class SingleTest {
public static void main(String[] args) { public static void main(String[] args) {
try { try {
ResourceTest r = new ResourceTest(); ResourceTest r = new ResourceTest();
r.setSource(new File("C:\\work\\org.hl7.fhir\\fhir-test-cases\\r3\\ActivityDefinition-referralPrimaryCareMentalHealth.json")); r.setSource(ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\fhir-test-cases\\r3\\ActivityDefinition-referralPrimaryCareMentalHealth.json"));
r.test(); r.test();
System.out.println("Completed OK"); System.out.println("Completed OK");
} catch (Exception e) { } catch (Exception e) {

View File

@ -37,6 +37,7 @@ import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
import org.hl7.fhir.exceptions.PathEngineException; import org.hl7.fhir.exceptions.PathEngineException;
import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
@ -89,7 +90,7 @@ public class SnapShotGenerationTests {
context.fixtures.put(op.getResponseId(), output); context.fixtures.put(op.getResponseId(), output);
context.snapshots.put(output.getUrl(), output); context.snapshots.put(output.getUrl(), output);
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(Utilities.path("[tmp]"), op.getResponseId() + ".xml")), output); new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path(Utilities.path("[tmp]"), op.getResponseId() + ".xml")), output);
//ok, now the asserts: //ok, now the asserts:
for (int i = 1; i < test.getAction().size(); i++) { for (int i = 1; i < test.getAction().size(); i++) {
SetupActionAssertComponent a = test.getAction().get(i).getAssert(); SetupActionAssertComponent a = test.getAction().get(i).getAssert();

Some files were not shown because too many files have changed in this diff Show More