diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java index fa4f7b499..f9918a66c 100755 --- a/.mvn/wrapper/MavenWrapperDownloader.java +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -50,17 +50,17 @@ public class MavenWrapperDownloader { public static void main(String args[]) { 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()); // If the maven-wrapper.properties exists, read it and check if it contains a custom // 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; if(mavenWrapperPropertyFile.exists()) { FileInputStream mavenWrapperPropertyFileInputStream = null; try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + mavenWrapperPropertyFileInputStream = ManagedFileAccess.inStream(mavenWrapperPropertyFile); Properties mavenWrapperProperties = new Properties(); mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); @@ -78,7 +78,7 @@ public class MavenWrapperDownloader { } 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().mkdirs()) { System.out.println( @@ -101,7 +101,7 @@ public class MavenWrapperDownloader { URL website = new URL(urlString); ReadableByteChannel rbc; rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); + FileOutputStream fos = ManagedFileAccess.outStream(destination); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); fos.close(); rbc.close(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/R2R3ConversionManager.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/R2R3ConversionManager.java index 01da45d4b..874229aa3 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/R2R3ConversionManager.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/R2R3ConversionManager.java @@ -67,6 +67,7 @@ import org.hl7.fhir.dstu3.utils.StructureMapUtilities; import org.hl7.fhir.dstu3.utils.StructureMapUtilities.ITransformerServices; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.TextFile; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; /** * 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.setMappingLibrary(getNamedParam(args, "-maps")); FhirFormat fmt = hasParam(args, "-fmt") ? getNamedParam(args, "-fmt").equalsIgnoreCase("json") ? FhirFormat.JSON : FhirFormat.XML : FhirFormat.XML; - InputStream src = new FileInputStream(getNamedParam(args, "-src")); - OutputStream dst = new FileOutputStream(getNamedParam(args, "-dest")); + InputStream src = ManagedFileAccess.inStream(getNamedParam(args, "-src")); + OutputStream dst = ManagedFileAccess.outStream(getNamedParam(args, "-dest")); 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 { - File f = new File(source); + File f = ManagedFileAccess.file(source); if (f.exists()) - setR2Definitions(new FileInputStream(f)); + setR2Definitions(ManagedFileAccess.inStream(f)); else setR2Definitions(fetch(source)); } @@ -184,9 +185,9 @@ public class R2R3ConversionManager implements ITransformerServices { } public void setR3Definitions(String source) throws IOException, FHIRException { - File f = new File(source); + File f = ManagedFileAccess.file(source); if (f.exists()) - setR3Definitions(new FileInputStream(f)); + setR3Definitions(ManagedFileAccess.inStream(f)); else setR3Definitions(fetch(source)); } @@ -201,9 +202,9 @@ public class R2R3ConversionManager implements ITransformerServices { } public void setMappingLibrary(String source) throws IOException, FHIRException { - File f = new File(source); + File f = ManagedFileAccess.file(source); if (f.exists()) - setMappingLibrary(new FileInputStream(f)); + setMappingLibrary(ManagedFileAccess.inStream(f)); else setMappingLibrary(fetch(source)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/SpecDifferenceEvaluator.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/SpecDifferenceEvaluator.java index 4bcef2662..a5808856e 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/SpecDifferenceEvaluator.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/SpecDifferenceEvaluator.java @@ -42,6 +42,7 @@ import org.hl7.fhir.utilities.IniFile; import org.hl7.fhir.utilities.Utilities; import org.hl7.fhir.utilities.VersionUtilities; 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.XhtmlComposer; import org.hl7.fhir.utilities.xhtml.XhtmlNode; @@ -132,7 +133,7 @@ public class SpecDifferenceEvaluator { } private static void loadSD4(Map 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()) { 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(); @@ -143,7 +144,7 @@ public class SpecDifferenceEvaluator { } private static void loadSD(Map 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()) { if (be.getResource() instanceof StructureDefinition) { StructureDefinition sd = (StructureDefinition) be.getResource(); @@ -153,7 +154,7 @@ public class SpecDifferenceEvaluator { } private static void loadVS4(Map 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()) { 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(); @@ -163,7 +164,7 @@ public class SpecDifferenceEvaluator { } private static void loadVS(Map 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()) { if (be.getResource() instanceof ValueSet) { ValueSet sd = (ValueSet) be.getResource(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/analytics/PackageVisitor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/analytics/PackageVisitor.java index b75248811..2116caa6d 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/analytics/PackageVisitor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/analytics/PackageVisitor.java @@ -18,6 +18,7 @@ import org.hl7.fhir.utilities.SimpleHTTPClient; import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult; import org.hl7.fhir.utilities.TextFile; 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.JsonObject; import org.hl7.fhir.utilities.json.parser.JsonParser; @@ -230,14 +231,14 @@ public class PackageVisitor { String[] p = url.split("\\/"); String repo = "https://build.fhir.org/ig/"+p[0]+"/"+p[1]; 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()) { SimpleHTTPClient fetcher = new SimpleHTTPClient(); HTTPResult res = fetcher.get(repo+"/package.tgz?nocache=" + System.currentTimeMillis()); res.checkThrowException(); TextFile.bytesToFile(res.getContent(), co); } - NpmPackage npm = NpmPackage.fromPackage(new FileInputStream(co)); + NpmPackage npm = NpmPackage.fromPackage(ManagedFileAccess.inStream(co)); String fv = npm.fhirVersion(); long ms2 = System.currentTimeMillis(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BOMRemover.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BOMRemover.java index e76f0d271..349d1de33 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BOMRemover.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BOMRemover.java @@ -9,11 +9,12 @@ import java.io.InputStreamReader; import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class BOMRemover { public static void main(String[] args) throws FileNotFoundException, IOException { - new BOMRemover().execute(new File(args[0])); + new BOMRemover().execute(ManagedFileAccess.file(args[0])); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BigCodeSystemGenerator.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BigCodeSystemGenerator.java index a2fbc2933..f936dc6fc 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BigCodeSystemGenerator.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/BigCodeSystemGenerator.java @@ -9,20 +9,21 @@ import java.io.IOException; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.r5.formats.JsonParser; import org.hl7.fhir.r5.model.CodeSystem; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class BigCodeSystemGenerator { 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 { - CodeSystem cs = (CodeSystem) new JsonParser().parse(new FileInputStream(file)); + CodeSystem cs = (CodeSystem) new JsonParser().parse(ManagedFileAccess.inStream(file)); cs.getConcept().clear(); for (int i = 1; i <= 2000; 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); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CKMImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CKMImporter.java index 99147ab1a..03b39aab9 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CKMImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CKMImporter.java @@ -44,6 +44,7 @@ import org.hl7.fhir.utilities.SimpleHTTPClient; import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult; import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -115,9 +116,9 @@ public class CKMImporter { String src = Utilities.path(Utilities.path("[tmp]"), id + ".xml"); String dst = Utilities.path(dest, id + ".xml"); - if (!new File(src).exists()) + if (!ManagedFileAccess.file(src).exists()) 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}); else ADLImporter.main(new String[]{"-source", src, "-dest", dst, "-config", config}); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CPTImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CPTImporter.java index a8a90c372..350840e8a 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CPTImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CPTImporter.java @@ -32,6 +32,7 @@ import org.hl7.fhir.r5.model.Enumerations.PublicationStatus; import org.hl7.fhir.r5.terminologies.CodeSystemUtilities; import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class CPTImporter { @@ -89,12 +90,12 @@ public class CPTImporter { System.out.println(c); 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); 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")); - 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); } @@ -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); 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"); // 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); makeMetadataTable(con); makeConceptsTable(con); @@ -267,7 +268,7 @@ public class CPTImporter { } 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(); int res = 0; @@ -309,7 +310,7 @@ public class CPTImporter { FileInputStream inputStream = null; Scanner sc = null; try { - inputStream = new FileInputStream(path); + inputStream = ManagedFileAccess.inStream(path); sc = new Scanner(inputStream, "UTF-8"); while (sc.hasNextLine()) { String line = sc.nextLine(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CVXImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CVXImporter.java index cb434224d..8b0daaa46 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CVXImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CVXImporter.java @@ -24,6 +24,7 @@ import org.hl7.fhir.r4.model.Coding; import org.hl7.fhir.r4.model.DateTimeType; import org.hl7.fhir.r4.model.StringType; import org.hl7.fhir.r4.terminologies.CodeSystemUtilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; 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 { - CodeSystem cvx = (CodeSystem) new JsonParser().parse(new FileInputStream(dest)); + CodeSystem cvx = (CodeSystem) new JsonParser().parse(ManagedFileAccess.inStream(dest)); String ldate = null; @@ -94,7 +95,7 @@ public class CVXImporter { Collections.sort(cvx.getConcept(), new CVXSorter()); cvx.setDateElement(new DateTimeType(ldate)); 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) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CorePackageTools.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CorePackageTools.java index 61fef5bb5..619bd20c8 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CorePackageTools.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CorePackageTools.java @@ -7,6 +7,7 @@ import java.io.IOException; import org.hl7.fhir.exceptions.FHIRFormatError; 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.parser.JsonParser; import org.hl7.fhir.utilities.npm.NpmPackage; @@ -26,12 +27,12 @@ public class CorePackageTools { private void buildPackage(String path, String output) throws IOException { NpmPackage npm = NpmPackage.fromFolder(path); npm.loadAllFiles(); - npm.save(new FileOutputStream(output)); + npm.save(ManagedFileAccess.outStream(output)); } 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")) { JsonObject j = JsonParser.parseObject(f); if (j.has("resourceType")) { @@ -39,8 +40,8 @@ public class CorePackageTools { String n = f.getName(); System.out.println(n); String xn = Utilities.changeFileExt(n, ".xml"); - org.hl7.fhir.dstu2016may.model.Resource r = new org.hl7.fhir.dstu2016may.formats.JsonParser().parse(new FileInputStream(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); + 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(ManagedFileAccess.outStream(Utilities.path(xml, "package", xn)), r); } } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CountryCodesConverter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CountryCodesConverter.java index 0c1adc775..0998e36c5 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CountryCodesConverter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/CountryCodesConverter.java @@ -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.DateTimeType; import org.hl7.fhir.r4.model.Enumerations.PublicationStatus; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -123,10 +124,10 @@ public class CountryCodesConverter { cs1.setCount(cs1.getConcept().size()); cs2.setCount(cs2.getConcept().size()); 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(new FileOutputStream(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(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, "4.0.1", "package", "CodeSstem-iso3166.json")), cs1); +// 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(ManagedFileAccess.outStream(Utilities.path(dest, "4.0.1", "package", "CodeSstem-iso3166-2.json")), cs2); +// 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) { @@ -360,7 +361,7 @@ public class CountryCodesConverter { factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - return builder.parse(new FileInputStream(source)); + return builder.parse(ManagedFileAccess.inStream(source)); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/DicomPackageBuilder.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/DicomPackageBuilder.java index 9ed7ba7b4..30d800527 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/DicomPackageBuilder.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/DicomPackageBuilder.java @@ -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.Category; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -73,8 +74,8 @@ public class DicomPackageBuilder { Set ids = new HashSet<>(); ids.add(vs.getId()); - for (File f : new File(Utilities.path(source, "Resources", "valuesets", "fhir", "json")).listFiles()) { - vs = (ValueSet) JsonParser.loadFile(new FileInputStream(f)); + for (File f : ManagedFileAccess.file(Utilities.path(source, "Resources", "valuesets", "fhir", "json")).listFiles()) { + vs = (ValueSet) JsonParser.loadFile(ManagedFileAccess.inStream(f)); vs.setVersion(version); if (vs.getId().length() > 64) { vs.setId(vs.getId().substring(0, 64)); @@ -133,7 +134,7 @@ public class DicomPackageBuilder { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); 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 d = XMLUtil.getFirstChild(rdf); version = processVersion(XMLUtil.getNamedChildText(d, "versionInfo")); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExamplesPackageBuilder.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExamplesPackageBuilder.java index 7397e6f64..ab4debf73 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExamplesPackageBuilder.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExamplesPackageBuilder.java @@ -10,6 +10,7 @@ import java.util.Set; import org.hl7.fhir.convertors.factory.VersionConvertorFactory_40_50; import org.hl7.fhir.exceptions.FHIRFormatError; 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.parser.JsonParser; @@ -22,9 +23,9 @@ public class ExamplesPackageBuilder { private void process(String source) throws FHIRFormatError, FileNotFoundException, IOException { Set set = new HashSet<>(); - for (File f : new File(source).listFiles()) { + for (File f : ManagedFileAccess.file(source).listFiles()) { 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")) { String type = obj.asString("resourceType"); String id = obj.asString("id"); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExtensionExtractor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExtensionExtractor.java index 861e4c53b..25182a940 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExtensionExtractor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ExtensionExtractor.java @@ -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.ConceptSetComponent; 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.npm.FilesystemPackageCacheManager; import org.hl7.fhir.utilities.npm.NpmPackage; @@ -131,7 +132,7 @@ public class ExtensionExtractor { 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 ids, File folder) { @@ -172,9 +173,9 @@ public class ExtensionExtractor { ids.add(cr.getId()); String fn = Utilities.path(dst, folder, cr.fhirType()+"-"+cr.getId()+".xml"); cr.setUserData("folder", folder); - if (!new File(fn).exists()) { + if (!ManagedFileAccess.file(fn).exists()) { 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); } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/GenValueSetExpansionConvertor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/GenValueSetExpansionConvertor.java index 14a2ef99d..a638a7bd8 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/GenValueSetExpansionConvertor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/GenValueSetExpansionConvertor.java @@ -43,13 +43,14 @@ import org.hl7.fhir.dstu2.model.Resource; import org.hl7.fhir.dstu2.model.ValueSet; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class GenValueSetExpansionConvertor { public static void main(String[] args) throws FHIRFormatError, IOException { String src = args[0]; 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()) { Resource res = be.getResource(); if (res != null) { @@ -58,7 +59,7 @@ public class GenValueSetExpansionConvertor { id = tail(((ValueSet) res).getUrl()); String dst = Utilities.path(tgt, res.fhirType() + "-" + id + ".json"); System.out.println(dst); - new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(new FileOutputStream(dst), res); + new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(ManagedFileAccess.outStream(dst), res); } } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICD11Generator.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICD11Generator.java index 61b498057..c693c6afa 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICD11Generator.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICD11Generator.java @@ -28,6 +28,7 @@ import org.hl7.fhir.r4.utils.ToolingExtensions; import org.hl7.fhir.utilities.SimpleHTTPClient; import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult; 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.JsonObject; import org.hl7.fhir.utilities.json.parser.JsonParser; @@ -49,7 +50,7 @@ public class ICD11Generator { processMMSEntity(cs, base, child.asString(), cs.addConcept(), dest); 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); cs = makeEntityCodeSystem(); @@ -62,7 +63,7 @@ public class ICD11Generator { processEntity(cs, ids, base, tail(child.asString()), dest); 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); System.out.println("finished"); } @@ -153,7 +154,7 @@ public class ICD11Generator { vs.setStatus(cs.getStatus()); ConceptSetComponent inc = vs.getCompose().addInclude(); 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 { @@ -172,7 +173,7 @@ public class ICD11Generator { vs.setStatus(cs.getStatus()); ConceptSetComponent inc = vs.getCompose().addInclude(); 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 { @@ -281,7 +282,7 @@ public class ICD11Generator { for (JsonElement e : o.getJsonArray("scaleEntity")) { 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; } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICFImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICFImporter.java index 76daf9853..d8d2646d8 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICFImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICFImporter.java @@ -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.CodeType; import org.hl7.fhir.utilities.CSVReader; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class ICFImporter { @@ -28,7 +29,7 @@ public class ICFImporter { } 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.readHeaders(); @@ -98,7 +99,7 @@ public class ICFImporter { } 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) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICPC2Importer.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICPC2Importer.java index abce5b74a..9a1ddaf29 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICPC2Importer.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ICPC2Importer.java @@ -53,6 +53,7 @@ import org.hl7.fhir.dstu3.model.ValueSet; import org.hl7.fhir.dstu3.terminologies.CodeSystemUtilities; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -122,7 +123,7 @@ public class ICPC2Importer { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(false); DocumentBuilder builder = factory.newDocumentBuilder(); - Document doc = builder.parse(new FileInputStream(sourceFileName)); + Document doc = builder.parse(ManagedFileAccess.inStream(sourceFileName)); ValueSet vs = new ValueSet(); vs.setUrl("http://hl7.org/fhir/sid/icpc2/vs"); @@ -170,8 +171,8 @@ public class ICPC2Importer { XmlParser xml = new XmlParser(); xml.setOutputStyle(OutputStyle.PRETTY); - xml.compose(new FileOutputStream(targetFileNameVS), vs); - xml.compose(new FileOutputStream(targetFileNameCS), cs); + xml.compose(ManagedFileAccess.outStream(targetFileNameVS), vs); + xml.compose(ManagedFileAccess.outStream(targetFileNameCS), cs); } private void processClass(Element cls, Map concepts, CodeSystem define) throws FHIRFormatError { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IEEE11073Convertor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IEEE11073Convertor.java index 038c99614..2b9a19280 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IEEE11073Convertor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IEEE11073Convertor.java @@ -68,6 +68,7 @@ import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class IEEE11073Convertor { @@ -113,7 +114,7 @@ public class IEEE11073Convertor { g.setSource("urn:iso:std:iso:11073:10101"); g.setTarget("http://loinc.org"); - CSVReader csv = new CSVReader(new FileInputStream(src)); + CSVReader csv = new CSVReader(ManagedFileAccess.inStream(src)); csv.readHeaders(); while (csv.line()) { SourceElementComponent e = g.addElement(); @@ -124,13 +125,13 @@ public class IEEE11073Convertor { t.setCode(csv.cell("LOINC_NUM")); 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"); return cm; } 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(); CodeSystem cs = new CodeSystem(); Map ucumIssues = new HashMap(); @@ -206,7 +207,7 @@ public class IEEE11073Convertor { } } 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"); for (String u : sorted(ucumIssues.keySet())) diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter102.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter102.java index de176df97..a79151675 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter102.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter102.java @@ -49,6 +49,7 @@ import org.hl7.fhir.dstu3.model.ValueSet; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.FhirPublication; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class IGPackConverter102 extends BaseAdvisor_10_30 { @@ -60,21 +61,21 @@ public class IGPackConverter102 extends BaseAdvisor_10_30 { private void process() throws IOException, FHIRException { 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")) { System.out.println("process " + s); 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.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser(); 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"); org.hl7.fhir.dstu3.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser(); 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"); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter140.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter140.java index 0766a1a5f..d0bbc95bc 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter140.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/IGPackConverter140.java @@ -37,20 +37,21 @@ import java.io.FileOutputStream; import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_30; import org.hl7.fhir.dstu3.formats.IParser.OutputStyle; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class IGPackConverter140 { 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.equals("expansions.xml")) { System.out.println("process " + s); 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.formats.XmlParser xc = new org.hl7.fhir.dstu3.formats.XmlParser(); 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"); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/JsonProcessor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/JsonProcessor.java index 34347ca39..acb8bd6ff 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/JsonProcessor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/JsonProcessor.java @@ -3,6 +3,7 @@ package org.hl7.fhir.convertors.misc; import java.io.FileOutputStream; 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.parser.JsonParser; @@ -15,7 +16,7 @@ public class JsonProcessor { private void process(String source) throws IOException { JsonObject json = JsonParser.parseObjectFromFile(source); process(json); - JsonParser.compose(json, new FileOutputStream(source), true); + JsonParser.compose(json, ManagedFileAccess.outStream(source), true); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/LoincToDEConvertor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/LoincToDEConvertor.java index b498ee329..e4d909e92 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/LoincToDEConvertor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/LoincToDEConvertor.java @@ -1,33 +1,33 @@ package org.hl7.fhir.convertors.misc; -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * 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 - prior written permission. - - 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 - 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, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - 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, - 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 - POSSIBILITY OF SUCH DAMAGE. - - */ +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * 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 + prior written permission. + + 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 + 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, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + 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, + 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 + 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.Meta; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -151,12 +152,12 @@ public class LoincToDEConvertor { factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - xml = builder.parse(new FileInputStream(definitions)); + xml = builder.parse(ManagedFileAccess.inStream(definitions)); } private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { XmlParser xml = new XmlParser(); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); xml.compose(s, bundle, true); s.close(); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NUCCConvertor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NUCCConvertor.java index ba628d28f..fae1457ce 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NUCCConvertor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NUCCConvertor.java @@ -48,6 +48,7 @@ import org.hl7.fhir.r4.model.Enumerations.PublicationStatus; import org.hl7.fhir.r4.model.StringType; import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class NUCCConvertor { @@ -56,7 +57,7 @@ public class NUCCConvertor { } 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(); cs.setId("nucc-provider-taxonomy"); cs.setUrl("http://nucc.org/provider-taxonomy"); @@ -79,7 +80,7 @@ public class NUCCConvertor { } csv.close(); 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 { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NpmPackageVersionConverter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NpmPackageVersionConverter.java index cd7e5182b..99b84dea0 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NpmPackageVersionConverter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/NpmPackageVersionConverter.java @@ -39,6 +39,7 @@ import org.hl7.fhir.r5.model.Resource; import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; 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.JsonObject; import org.hl7.fhir.utilities.json.parser.JsonParser; @@ -80,7 +81,7 @@ public class NpmPackageVersionConverter { } public void execute() throws IOException { - Map content = loadContentMap(new FileInputStream(source)); + Map content = loadContentMap(ManagedFileAccess.inStream(source)); Map output = new HashMap<>(); output.put("package/package.json", convertPackage(content.get("package/package.json"))); @@ -141,7 +142,7 @@ public class NpmPackageVersionConverter { tar.write(cnt); tar.closeArchiveEntry(); 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.setSize(cnt.length); tar.putArchiveEntry(entry); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OIDAssigner.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OIDAssigner.java index 03bf16558..061f971f5 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OIDAssigner.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OIDAssigner.java @@ -3,10 +3,12 @@ package org.hl7.fhir.convertors.misc; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; import org.hl7.fhir.r5.elementmodel.Manager.FhirFormat; import org.hl7.fhir.utilities.IniFile; import org.hl7.fhir.utilities.VersionUtilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class OIDAssigner { @@ -15,9 +17,9 @@ public class OIDAssigner { 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); - File f = new File(folder); + File f = ManagedFileAccess.file(folder); 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(); try { 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) { org.hl7.fhir.dstu2.model.ValueSet vs = (org.hl7.fhir.dstu2.model.ValueSet) r; boolean hasOid = isOid(vs.getIdentifier()); @@ -81,7 +83,7 @@ public class OIDAssigner { } } 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) { 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(); try { 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) { org.hl7.fhir.dstu3.model.CodeSystem cs = (org.hl7.fhir.dstu3.model.CodeSystem) r; boolean hasOid = isOid(cs.getIdentifier()); @@ -141,7 +143,7 @@ public class OIDAssigner { } } 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) { 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(); try { 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) { org.hl7.fhir.r4.model.CodeSystem cs = (org.hl7.fhir.r4.model.CodeSystem) r; boolean hasOid = false; @@ -206,7 +208,7 @@ public class OIDAssigner { } } 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) { 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(); try { 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) { org.hl7.fhir.r4b.model.CanonicalResource cs = (org.hl7.fhir.r4b.model.CanonicalResource) r; boolean hasOid = false; @@ -233,7 +235,7 @@ public class OIDAssigner { } } 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) { 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(); try { 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) { org.hl7.fhir.r5.model.CanonicalResource cs = (org.hl7.fhir.r5.model.CanonicalResource) r; boolean hasOid = false; @@ -261,7 +263,7 @@ public class OIDAssigner { } } 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) { System.out.println("Erro processing "+f.getAbsolutePath()+": "+e.getMessage()); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OMOPImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OMOPImporter.java index a6752fc4d..8470ea14e 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OMOPImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/OMOPImporter.java @@ -15,6 +15,7 @@ import java.util.Map; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; 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"); // 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); } private void processRelationships(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { 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.readHeaders(); csv.setDoingQuotes(false); @@ -147,7 +148,7 @@ public class OMOPImporter { stmt.execute("Create Index `RelationshipsId` on Relationships (`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.readHeaders(); csv.setDoingQuotes(false); @@ -182,7 +183,7 @@ public class OMOPImporter { private void processVocabularies(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { 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.readHeaders(); csv.setDoingQuotes(false); @@ -217,7 +218,7 @@ public class OMOPImporter { "\r\n"); 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.readHeaders(); csv.setDoingQuotes(false); @@ -244,7 +245,7 @@ public class OMOPImporter { private void processDomains(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { 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.readHeaders(); csv.setDoingQuotes(false); @@ -275,7 +276,7 @@ public class OMOPImporter { 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.readHeaders(); csv.setDoingQuotes(false); @@ -299,7 +300,7 @@ public class OMOPImporter { private void processConceptClasses(String folder, boolean process) throws FHIRException, FileNotFoundException, IOException, SQLException { 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.readHeaders(); csv.setDoingQuotes(false); @@ -325,7 +326,7 @@ public class OMOPImporter { " PRIMARY KEY (`concept_class_concept_id`)\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.readHeaders(); csv.setDoingQuotes(false); @@ -356,7 +357,7 @@ public class OMOPImporter { 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.readHeaders(); csv.setDoingQuotes(false); @@ -398,7 +399,7 @@ public class OMOPImporter { " PRIMARY KEY (`drug_concept_id`,`ingredient_concept_id`)\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.readHeaders(); csv.setDoingQuotes(false); @@ -446,7 +447,7 @@ public class OMOPImporter { 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.readHeaders(); 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 `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.readHeaders(); csv.setDoingQuotes(false); @@ -523,7 +524,7 @@ public class OMOPImporter { } 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.readHeaders(); csv.setDoingQuotes(false); @@ -545,7 +546,7 @@ public class OMOPImporter { stmt.execute("CREATE INDEX `SynonymId` on ConceptSynonyms (`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.readHeaders(); csv.setDoingQuotes(false); @@ -575,7 +576,7 @@ public class OMOPImporter { } 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.readHeaders(); csv.setDoingQuotes(false); @@ -614,7 +615,7 @@ public class OMOPImporter { } 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.readHeaders(); 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 `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.readHeaders(); csv.setDoingQuotes(false); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ObservationStatsBuilder.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ObservationStatsBuilder.java index 772cbffc0..f02767a63 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ObservationStatsBuilder.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ObservationStatsBuilder.java @@ -51,6 +51,7 @@ import org.hl7.fhir.dstu3.model.Type; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class ObservationStatsBuilder { @@ -78,7 +79,7 @@ public class ObservationStatsBuilder { vitals(b, base, 130, 95, 133, 97, 37.2); 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 { @@ -202,7 +203,7 @@ public class ObservationStatsBuilder { 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 { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMaintainer.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMaintainer.java index 198823f85..4d02c2469 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMaintainer.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMaintainer.java @@ -7,6 +7,7 @@ import java.util.List; import org.hl7.fhir.utilities.TextFile; 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.parser.JsonParser; @@ -67,15 +68,15 @@ public class PackageMaintainer { System.out.println("Examples contains " + s + " but core doesn't"); } } - strip(new 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 + ".core", "package"))); + strip(ManagedFileAccess.file(Utilities.path(PATH, "hl7.fhir." + ver + ".expansions", "package"))); 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 listResources(String dir) { - File folder = new File(dir); + private List listResources(String dir) throws IOException { + File folder = ManagedFileAccess.file(dir); List res = new ArrayList<>(); for (String fn : folder.list()) { if (fn.endsWith(".json") && fn.contains("-")) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMinifier.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMinifier.java index be52332f1..4e2cd21d2 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMinifier.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackageMinifier.java @@ -7,6 +7,7 @@ import java.io.IOException; import org.hl7.fhir.r5.formats.JsonParser; import org.hl7.fhir.r5.model.Resource; 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.NpmPackage; 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)); } } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackagePreparer.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackagePreparer.java index b0e0783c2..961b82b7d 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackagePreparer.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PackagePreparer.java @@ -3,6 +3,7 @@ package org.hl7.fhir.convertors.misc; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; /* 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.BundleEntryComponent; 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 @@ -48,10 +50,10 @@ import org.hl7.fhir.utilities.Utilities; public class PackagePreparer { - public static void main(String[] args) { - for (File f : new File("C:\\work\\fhirserver\\resources\\mihin").listFiles()) { + public static void main(String[] args) throws IOException { + for (File f : ManagedFileAccess.file("C:\\work\\fhirserver\\resources\\mihin").listFiles()) { 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) { Bundle b = (Bundle) r; for (BundleEntryComponent be : b.getEntry()) { @@ -60,7 +62,7 @@ public class PackagePreparer { if (r4.getId().startsWith(r4.fhirType() + "-")) be.getResource().setId(r4.getId().substring(r4.fhirType().length() + 1)); 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 System.out.println(f.getName() + " bundle entry has no id"); } catch (Exception e) { @@ -68,7 +70,7 @@ public class PackagePreparer { } } } 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 System.out.println(f.getName() + " has no id"); } catch (Exception e) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PhinVadsImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PhinVadsImporter.java index efe447258..391174c03 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PhinVadsImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/PhinVadsImporter.java @@ -18,6 +18,7 @@ import org.hl7.fhir.r5.model.ValueSet.ConceptSetComponent; import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class PhinVadsImporter extends OIDBasedValueSetImporter { @@ -32,13 +33,13 @@ public class PhinVadsImporter extends OIDBasedValueSetImporter { self.process(args[0], args[1]); } - private void process(String source, String dest) { - for (File f : new File(source).listFiles()) { + private void process(String source, String dest) throws IOException { + for (File f : ManagedFileAccess.file(source).listFiles()) { try { System.out.println("Process " + f.getName()); ValueSet vs = importValueSet(TextFile.fileToBytes(f)); 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) { e.printStackTrace(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ResourceDependencyPackageBuilder.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ResourceDependencyPackageBuilder.java index aa18f60aa..910bec9e8 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ResourceDependencyPackageBuilder.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/ResourceDependencyPackageBuilder.java @@ -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.ResourceMinifier; 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.parser.JsonParser; 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])); - 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 { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/SPDXImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/SPDXImporter.java index f6a4c1449..381027057 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/SPDXImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/SPDXImporter.java @@ -13,6 +13,7 @@ import org.hl7.fhir.r4.terminologies.CodeSystemUtilities; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.TextFile; 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.parser.JsonParser; @@ -27,7 +28,7 @@ public class SPDXImporter { public void generate(String[] args) throws Exception { 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.getProperty().clear(); cs.addProperty().setCode("reference").setType(PropertyType.STRING); @@ -58,7 +59,7 @@ public class SPDXImporter { } } 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(); generateEnum("SPDXLicense", cs); TextFile.stringToFile(b.toString(), Utilities.changeFileExt(args[1], ".java")); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/Test.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/Test.java index 00aea3a1f..cada269b4 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/Test.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/Test.java @@ -45,6 +45,7 @@ import org.hl7.fhir.dstu3.formats.JsonParser; import org.hl7.fhir.dstu3.formats.XmlParser; import org.hl7.fhir.dstu3.model.Bundle; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class Test { 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) { try { 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"; 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"; 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); } catch (Exception e) { e.printStackTrace(); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/VSACImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/VSACImporter.java index 8e58459d3..6dce32f88 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/VSACImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/VSACImporter.java @@ -30,6 +30,7 @@ import org.hl7.fhir.r4.utils.client.FHIRToolingClient; import org.hl7.fhir.r4.terminologies.JurisdictionUtilities; import org.hl7.fhir.utilities.CSVReader; 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.JsonObject; 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 { - CSVReader csv = new CSVReader(new FileInputStream(source)); + CSVReader csv = new CSVReader(ManagedFileAccess.inStream(source)); csv.readHeaders(); Map errs = new HashMap<>(); @@ -59,13 +60,13 @@ public class VSACImporter extends OIDBasedValueSetImporter { CapabilityStatement cs = fhirToolingClient.getCapabilitiesStatement(); 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"); List oids = new ArrayList<>(); while (csv.line()) { 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); } } @@ -99,7 +100,7 @@ public class VSACImporter extends OIDBasedValueSetImporter { for (String oid : errs.keySet()) { 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)); } @@ -164,7 +165,7 @@ public class VSACImporter extends OIDBasedValueSetImporter { } vs.setName(makeValidName(vs.getName())); 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; } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XMLPackageConvertor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XMLPackageConvertor.java index b6c087ced..6b947beaa 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XMLPackageConvertor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XMLPackageConvertor.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileInputStream; 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.JsonProperty; import org.hl7.fhir.utilities.npm.NpmPackage; @@ -11,7 +12,7 @@ import org.hl7.fhir.utilities.npm.NpmPackage; public class XMLPackageConvertor { 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 { @@ -21,7 +22,7 @@ public class XMLPackageConvertor { } else { if (f.getName().endsWith(".tgz")) { 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")) { JsonObject dep = p.getNpm().getJsonObject("dependencies"); if (dep.getProperties().isEmpty()) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XVerPackegeFixer.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XVerPackegeFixer.java index a73041dd8..6a5b07f3c 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XVerPackegeFixer.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/XVerPackegeFixer.java @@ -19,6 +19,7 @@ import org.hl7.fhir.dstu2.model.StructureDefinition; import org.hl7.fhir.dstu2.model.StructureDefinition.StructureDefinitionSnapshotComponent; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.json.JsonTrackingParser; import org.xml.sax.SAXException; @@ -66,7 +67,7 @@ public class XVerPackegeFixer { public static void main(String[] args) throws FileNotFoundException, ParserConfigurationException, SAXException, IOException { 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")) { JsonObject j = JsonTrackingParser.parseJson(f); fixUp(j, f.getName()); @@ -164,7 +165,7 @@ public class XVerPackegeFixer { if (map5.containsKey(tn)) { sd = map5.get(tn); } 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); } for (org.hl7.fhir.r5.model.ElementDefinition ed : sd.getSnapshot().getElement()) { @@ -220,7 +221,7 @@ public class XVerPackegeFixer { if (map4.containsKey(tn)) { sd = map4.get(tn); } 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); } for (org.hl7.fhir.r4.model.ElementDefinition ed : sd.getSnapshot().getElement()) { @@ -277,7 +278,7 @@ public class XVerPackegeFixer { if (map3.containsKey(tn)) { sd = map3.get(tn); } 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); } for (org.hl7.fhir.dstu3.model.ElementDefinition ed : sd.getSnapshot().getElement()) { @@ -383,7 +384,7 @@ public class XVerPackegeFixer { if (map2.containsKey(tn)) { sd = map2.get(tn); } 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); } return sd; @@ -431,7 +432,7 @@ public class XVerPackegeFixer { if (map2b.containsKey(tn)) { sd = map2b.get(tn); } 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); } for (org.hl7.fhir.dstu2016may.model.ElementDefinition ed : sd.getSnapshot().getElement()) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/adl/ADLImporter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/adl/ADLImporter.java index 7ace1274f..74733d6e4 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/adl/ADLImporter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/adl/ADLImporter.java @@ -46,6 +46,7 @@ import org.hl7.fhir.dstu3.formats.XmlParser; import org.hl7.fhir.dstu3.model.ElementDefinition; import org.hl7.fhir.dstu3.model.Enumerations.PublicationStatus; import org.hl7.fhir.dstu3.model.StructureDefinition; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Element; @@ -91,11 +92,11 @@ public class ADLImporter { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - adlConfig = builder.parse(new FileInputStream(config)).getDocumentElement(); + adlConfig = builder.parse(ManagedFileAccess.inStream(config)).getDocumentElement(); // load ADL 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.getNodeName(), "archetype", "Wrong XML for ADL XML"); @@ -150,7 +151,7 @@ public class ADLImporter { genElements(sd, root.getName(), root); // 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); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/argonaut/ArgonautConverter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/argonaut/ArgonautConverter.java index 01a181685..55c17cb31 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/argonaut/ArgonautConverter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/argonaut/ArgonautConverter.java @@ -110,6 +110,7 @@ import org.hl7.fhir.dstu3.utils.NarrativeGenerator; import org.hl7.fhir.dstu3.utils.ResourceUtilities; import org.hl7.fhir.utilities.Utilities; 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.IssueSeverity; 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 { - File source = new File(sourceFolder); + File source = ManagedFileAccess.file(sourceFolder); for (String f : source.list()) { convert(sourceFolder, f, clss); } @@ -221,13 +222,13 @@ public class ArgonautConverter extends ConverterBase { } 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; CDAUtilities cda; try { 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"))); zipX = new ZipGenerator(Utilities.path(destFolder, "xml/doc", Utilities.changeFileExt(filename, ".xml.zip"))); Element doc = cda.getElement(); @@ -1320,7 +1321,7 @@ public class ArgonautConverter extends ConverterBase { Binary binary = new Binary(); binary.setId(context.getBaseId() + "-binary"); 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); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/iso21090/ISO21090Importer.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/iso21090/ISO21090Importer.java index e919aedd7..96e258676 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/iso21090/ISO21090Importer.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/iso21090/ISO21090Importer.java @@ -59,6 +59,7 @@ import org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent; import org.hl7.fhir.dstu3.utils.ToolingExtensions; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -125,7 +126,7 @@ public class ISO21090Importer { addParentProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getParent(), false, true); produceProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getProperties(), false, true); 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 elements, String name, String parent, boolean attrMode, boolean snapshot) throws FHIRFormatError { @@ -176,7 +177,7 @@ public class ISO21090Importer { for (String code : evs.getCodes()) { 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() { @@ -319,7 +320,7 @@ public class ISO21090Importer { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(false); 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(); } diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/searchparam/SearchParameterProcessor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/searchparam/SearchParameterProcessor.java index 769f3117d..c2025b981 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/searchparam/SearchParameterProcessor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/searchparam/SearchParameterProcessor.java @@ -49,6 +49,7 @@ import org.hl7.fhir.r5.model.Enumerations.ConceptMapRelationship; import org.hl7.fhir.r5.model.Enumerations.PublicationStatus; import org.hl7.fhir.utilities.CSVReader; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class SearchParameterProcessor { @@ -120,7 +121,7 @@ public class SearchParameterProcessor { 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) { @@ -208,7 +209,7 @@ public class SearchParameterProcessor { } 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()) { 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()) { @@ -221,7 +222,7 @@ public class SearchParameterProcessor { } 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()) { 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()) { @@ -234,7 +235,7 @@ public class SearchParameterProcessor { } 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()) { org.hl7.fhir.dstu2.model.SearchParameter sp = (org.hl7.fhir.dstu2.model.SearchParameter) be.getResource(); String br = sp.getBase(); @@ -246,7 +247,7 @@ public class SearchParameterProcessor { } 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()) { org.hl7.fhir.dstu2016may.model.SearchParameter sp = (org.hl7.fhir.dstu2016may.model.SearchParameter) be.getResource(); String br = sp.getBase(); @@ -258,7 +259,7 @@ public class SearchParameterProcessor { } 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(); while (csv.line()) { String r4 = csv.cell("R4"); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGCaseSensitivePopulator.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGCaseSensitivePopulator.java index 5e0ed10d0..dc7fdda42 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGCaseSensitivePopulator.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGCaseSensitivePopulator.java @@ -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.Resource; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class UTGCaseSensitivePopulator { 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"); 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"); } @@ -60,10 +61,10 @@ public class UTGCaseSensitivePopulator { private void processFile(File f, Bundle bundle, IParser parser, Date d, Date dt) { try { - Resource r = parser.parse(new FileInputStream(f)); + Resource r = parser.parse(ManagedFileAccess.inStream(f)); if (r instanceof CodeSystem) { 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) { diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGVersionSorter.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGVersionSorter.java index 0cbba1d93..2a5465da0 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGVersionSorter.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/utg/UTGVersionSorter.java @@ -29,6 +29,7 @@ import org.hl7.fhir.r5.model.Resource; import org.hl7.fhir.r5.model.ValueSet; import org.hl7.fhir.r5.utils.ToolingExtensions; 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.NpmPackage; import org.hl7.fhir.utilities.npm.NpmPackage.PackageResourceInformation; @@ -47,7 +48,7 @@ public class UTGVersionSorter { private void execute(String source) throws IOException { List list = new ArrayList<>(); System.out.println("Loading UTG"); - loadFromSource(list, new File(source)); + loadFromSource(list, ManagedFileAccess.file(source)); Map r2 = loadPackageR2("hl7.fhir.r2.core"); Map r3 = loadPackageR3("hl7.fhir.r3.core"); @@ -58,7 +59,7 @@ public class UTGVersionSorter { 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"); for (CanonicalResourceAnalysis cr : list) { @@ -79,10 +80,10 @@ public class UTGVersionSorter { pa.getWho().setDisplay("Vocabulary WG"); CanonicalResource res = cr.resource; 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(); - 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"); } @@ -134,7 +135,7 @@ public class UTGVersionSorter { loadFromSource(list, f); } else if (f.getName().endsWith(".xml")) { try { - Resource r = new XmlParser().parse(new FileInputStream(f)); + Resource r = new XmlParser().parse(ManagedFileAccess.inStream(f)); if (r instanceof CanonicalResource) { CanonicalResource cr = (CanonicalResource) r; cr.setWebPath(f.getAbsolutePath()); diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/xver/CorePackageVersionConvertor.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/xver/CorePackageVersionConvertor.java index 6fd599c1d..2af63ba34 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/xver/CorePackageVersionConvertor.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/misc/xver/CorePackageVersionConvertor.java @@ -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.utilities.Utilities; 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.JsonObject; import org.hl7.fhir.utilities.json.parser.JsonParser; @@ -479,7 +480,7 @@ public class CorePackageVersionConvertor { // build a new package 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); 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 { diff --git a/org.hl7.fhir.core.generator/configuration/tests/RoundTripTests.java b/org.hl7.fhir.core.generator/configuration/tests/RoundTripTests.java index e5a3dcc44..58cab1bd4 100644 --- a/org.hl7.fhir.core.generator/configuration/tests/RoundTripTests.java +++ b/org.hl7.fhir.core.generator/configuration/tests/RoundTripTests.java @@ -33,7 +33,7 @@ public class RoundTripTests { @Parameters(name = "{index}: file {0}") public static Iterable data() throws ParserConfigurationException, SAXException, IOException { - File dir = new File(EXAMPLES_DIR); + File dir = ManagedFileAccess.file(EXAMPLES_DIR); String[] list = dir.list(); List objects = new ArrayList(list.length); @@ -77,7 +77,7 @@ public class RoundTripTests { } private void save(byte[] src, String path) throws IOException { - File f = new File(path); + File f = ManagedFileAccess.file(path); if (f.exists()) { f.delete(); } diff --git a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/Configuration.java b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/Configuration.java index 9d561f89e..75bda20d1 100644 --- a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/Configuration.java +++ b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/Configuration.java @@ -23,7 +23,7 @@ public class Configuration { public Configuration(String path) throws FileNotFoundException, IOException { license = TextFile.fileToString(Utilities.path(path, "license.txt")); 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")) { adornments.put(Utilities.changeFileExt(jfn.getName(), ""), TextFile.fileToString(jfn)); } diff --git a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/JavaResourceGenerator.java b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/JavaResourceGenerator.java index 44023f9ac..6a3f02d43 100644 --- a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/JavaResourceGenerator.java +++ b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/JavaResourceGenerator.java @@ -483,7 +483,7 @@ public class JavaResourceGenerator extends JavaBaseGenerator { //// write(" }\r\n"); //// //// // 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.close(); //// diff --git a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/extensions/JavaExtensionsGenerator.java b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/extensions/JavaExtensionsGenerator.java index 7f32e98ac..6c1be9a8c 100644 --- a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/extensions/JavaExtensionsGenerator.java +++ b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/codegen/extensions/JavaExtensionsGenerator.java @@ -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(); - 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(); for (String url : urls) { StructureDefinition sd = extensions.get(url); diff --git a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/engine/JavaCoreGenerator.java b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/engine/JavaCoreGenerator.java index 3ab1d3f1d..4bc849103 100644 --- a/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/engine/JavaCoreGenerator.java +++ b/org.hl7.fhir.core.generator/src/org/hl7/fhir/core/generator/engine/JavaCoreGenerator.java @@ -89,19 +89,19 @@ public class JavaCoreGenerator { System.out.println("Generate Model in "+dest); 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.close(); 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.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); - 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); - 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); - 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); - 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); + 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(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(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(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(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)) { StructureDefinition sd = master.getStructures().get("http://hl7.org/fhir/StructureDefinition/Element"); @@ -206,7 +206,7 @@ public class JavaCoreGenerator { Analysis analysis = jca.analyse(sd, elementInfo); 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.close(); jgen.seeClass(analysis); diff --git a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/LoincToDEConvertor.java b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/LoincToDEConvertor.java index 63b147b50..e6590307a 100644 --- a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/LoincToDEConvertor.java +++ b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/LoincToDEConvertor.java @@ -54,6 +54,7 @@ import org.hl7.fhir.dstu2.model.Meta; import org.hl7.fhir.dstu2.utils.ToolingExtensions; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -165,12 +166,12 @@ public class LoincToDEConvertor { factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - xml = builder.parse(new FileInputStream(definitions)); + xml = builder.parse(ManagedFileAccess.inStream(definitions)); } private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { XmlParser xml = new XmlParser(); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); xml.compose(s, bundle, true); s.close(); } diff --git a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/ValueSetExpansionCache.java b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/ValueSetExpansionCache.java index 71bec329e..f3dedb318 100644 --- a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/ValueSetExpansionCache.java +++ b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/terminologies/ValueSetExpansionCache.java @@ -75,6 +75,7 @@ import org.hl7.fhir.dstu2.utils.IWorkerContext; import org.hl7.fhir.dstu2.utils.ToolingExtensions; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xhtml.XhtmlComposer; 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 // cache it locally 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()); s.close(); } @@ -125,10 +126,10 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory { } private void loadCache() throws FHIRFormatError, IOException { - File[] files = new File(cacheFolder).listFiles(); + File[] files = ManagedFileAccess.file(cacheFolder).listFiles(); for (File f : files) { if (f.getName().endsWith(".xml")) { - final FileInputStream is = new FileInputStream(f); + final FileInputStream is = ManagedFileAccess.inStream(f); try { Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is); if (r instanceof OperationOutcome) { diff --git a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/BatchLoader.java b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/BatchLoader.java index f3f68141d..59a899ef6 100644 --- a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/BatchLoader.java +++ b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/BatchLoader.java @@ -47,6 +47,7 @@ import org.hl7.fhir.dstu2.model.Resource; import org.hl7.fhir.dstu2.utils.client.FHIRToolingClient; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class BatchLoader { @@ -66,7 +67,7 @@ public class BatchLoader { throw new FHIRException("Unimplemented file type " + file); } else if (file.endsWith(".zip")) { LoadZipFile(server, file, p, size, 0, -1); - } else if (new File(file).isDirectory()) { + } else if (ManagedFileAccess.file(file).isDirectory()) { LoadDirectory(server, file, p, size); } else throw new FHIRException("Unknown file type " + file); @@ -99,7 +100,7 @@ public class BatchLoader { Bundle b = new Bundle(); b.setType(BundleType.COLLECTION); b.setId(UUID.randomUUID().toString().toLowerCase()); - ZipInputStream zip = new ZipInputStream(new FileInputStream(file)); + ZipInputStream zip = new ZipInputStream(ManagedFileAccess.inStream(file)); ZipEntry entry; while ((entry = zip.getNextEntry()) != null) { try { diff --git a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/SimpleWorkerContext.java b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/SimpleWorkerContext.java index 58c47aeac..77df6c9a5 100644 --- a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/SimpleWorkerContext.java +++ b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/SimpleWorkerContext.java @@ -60,8 +60,8 @@ import org.hl7.fhir.dstu2.utils.client.FHIRToolingClient; import org.hl7.fhir.dstu2.utils.validation.IResourceValidator; import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRException; -import org.hl7.fhir.utilities.CSFileInputStream; 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.IssueSeverity; diff --git a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Translations.java b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Translations.java index e19b05951..f65b799d5 100644 --- a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Translations.java +++ b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Translations.java @@ -38,7 +38,7 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Unbundler.java b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Unbundler.java index d5bce4f32..64a857220 100644 --- a/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Unbundler.java +++ b/org.hl7.fhir.dstu2/src/main/java/org/hl7/fhir/dstu2/utils/Unbundler.java @@ -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.ValueSet; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class Unbundler { @@ -51,7 +52,7 @@ public class Unbundler { private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException { 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()) { Resource r = be.getResource(); if (r != null) { @@ -61,7 +62,7 @@ public class Unbundler { } if (!StringUtils.isBlank(r.getId())) { String tgt = Utilities.path(folder, r.fhirType() + "-" + r.getId() + ".json"); - new JsonParser().compose(new FileOutputStream(tgt), r); + new JsonParser().compose(ManagedFileAccess.outStream(tgt), r); } } } diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/FluentPathTests.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/FluentPathTests.java index ea651a71c..6372698bc 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/FluentPathTests.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/FluentPathTests.java @@ -7,6 +7,7 @@ import org.hl7.fhir.dstu2.utils.FHIRPathEngine; import org.hl7.fhir.dstu2.utils.SimpleWorkerContext; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.junit.jupiter.api.*; import org.junit.jupiter.params.ParameterizedTest; @@ -55,7 +56,7 @@ public class FluentPathTests { fp.check(null, null, null, node); else { 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); } outcome = fp.evaluate(res, node); diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/NarrativeGeneratorTests.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/NarrativeGeneratorTests.java index 58a5d1101..55667affe 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/NarrativeGeneratorTests.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/NarrativeGeneratorTests.java @@ -11,6 +11,7 @@ import org.hl7.fhir.dstu2.utils.NarrativeGenerator; import org.hl7.fhir.dstu2.utils.SimpleWorkerContext; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; @@ -40,9 +41,9 @@ public class NarrativeGeneratorTests { private void process(String path) throws IOException, EOperationOutcome, FHIRException { XmlParser p = new XmlParser(); - DomainResource r = (DomainResource) p.parse(new FileInputStream(path)); + DomainResource r = (DomainResource) p.parse(ManagedFileAccess.inStream(path)); 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); s.close(); } diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ProfileUtilitiesTests.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ProfileUtilitiesTests.java index 87ea291d7..b60b3906c 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ProfileUtilitiesTests.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ProfileUtilitiesTests.java @@ -24,8 +24,9 @@ import org.hl7.fhir.dstu2.utils.SimpleWorkerContext; import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; -import org.hl7.fhir.utilities.CSFile; 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.IssueSeverity; @@ -85,11 +86,11 @@ public class ProfileUtilitiesTests { for (ProfileComparison outcome : comp.getComparisons()) { if (outcome.getSubset() != null) 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()); if (outcome.getSuperset() != null) 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 " + outcome.getRight().getUrl()); @@ -115,9 +116,9 @@ public class ProfileUtilitiesTests { System.out.println("Compare " + fn1 + " to " + fn2); System.out.println(" .. load"); StructureDefinition left = (StructureDefinition) new XmlParser() - .parse(new FileInputStream(Utilities.path(root, fn1))); + .parse(ManagedFileAccess.inStream(Utilities.path(root, fn1))); StructureDefinition right = (StructureDefinition) new XmlParser() - .parse(new FileInputStream(Utilities.path(root, fn2))); + .parse(ManagedFileAccess.inStream(Utilities.path(root, fn2))); System.out.println(" .. compare"); comp.compareProfiles(left, right); @@ -918,16 +919,16 @@ public class ProfileUtilitiesTests { // focus.setDifferential(null); String f1 = Utilities.path("c:", "temp", "base.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"); List command = new ArrayList(); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/QuestionnaireBuilderTester.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/QuestionnaireBuilderTester.java index e9b1a215f..47507f6d4 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/QuestionnaireBuilderTester.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/QuestionnaireBuilderTester.java @@ -2,27 +2,29 @@ package org.hl7.fhir.dstu2.test; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import org.hl7.fhir.dstu2.formats.XmlParser; import org.hl7.fhir.dstu2.model.StructureDefinition; import org.hl7.fhir.dstu2.utils.QuestionnaireBuilder; import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class QuestionnaireBuilderTester { private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish"; // 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); - 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-")) { System.out.println("process " + f); try { StructureDefinition p = (StructureDefinition) new XmlParser() - .parse(new FileInputStream(TEST_PROFILE_DIR + "\\" + f)); + .parse(ManagedFileAccess.inStream(TEST_PROFILE_DIR + "\\" + f)); // 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"); } catch (Exception e) { e.printStackTrace(); diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ResourceTest.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ResourceTest.java index 76af8bc02..e3a15b1ac 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ResourceTest.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ResourceTest.java @@ -40,6 +40,7 @@ import org.hl7.fhir.dstu2.formats.JsonParser; import org.hl7.fhir.dstu2.formats.XmlParser; import org.hl7.fhir.dstu2.model.Resource; import org.hl7.fhir.exceptions.FHIRFormatError; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class ResourceTest { @@ -61,18 +62,18 @@ public class ResourceTest { p = new JsonParser(); else 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(); json1.setOutputStyle(OutputStyle.PRETTY); json1.compose(out, rf); out.close(); 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(); atom.setOutputStyle(OutputStyle.PRETTY); atom.compose(out, rf, true); diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/SingleTest.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/SingleTest.java index 03e9d6a81..644db57ae 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/SingleTest.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/SingleTest.java @@ -30,6 +30,8 @@ package org.hl7.fhir.dstu2.test; import java.io.File; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; + public class SingleTest { /** @@ -38,7 +40,7 @@ public class SingleTest { public static void main(String[] args) { try { 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(); System.out.println("Completed OK"); } catch (Exception e) { diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/TestingUtilities.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/TestingUtilities.java index 1caa5cc2f..5e5df5d00 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/TestingUtilities.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/TestingUtilities.java @@ -13,9 +13,10 @@ import javax.xml.parsers.DocumentBuilderFactory; import org.apache.commons.codec.binary.Base64; import org.hl7.fhir.dstu2.utils.IWorkerContext; -import org.hl7.fhir.utilities.CSFile; import org.hl7.fhir.utilities.TextFile; 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.Element; import org.w3c.dom.NamedNodeMap; @@ -41,7 +42,7 @@ public class TestingUtilities { command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } @@ -154,7 +155,7 @@ public class TestingUtilities { factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - return builder.parse(new FileInputStream(fn)); + return builder.parse(ManagedFileAccess.inStream(fn)); } public static String checkJsonIsSame(String f1, String f2) @@ -166,7 +167,7 @@ public class TestingUtilities { command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } diff --git a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ToolsHelper.java b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ToolsHelper.java index 6939b0a15..bf28d5d5a 100644 --- a/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ToolsHelper.java +++ b/org.hl7.fhir.dstu2/src/test/java/org/hl7/fhir/dstu2/test/ToolsHelper.java @@ -55,10 +55,11 @@ import org.hl7.fhir.dstu2.model.Resource; import org.hl7.fhir.dstu2.utils.SimpleWorkerContext; import org.hl7.fhir.exceptions.FHIRException; 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.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.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; @@ -103,7 +104,7 @@ public class ToolsHelper { private void executeExamples(String[] args) throws IOException { try { @SuppressWarnings("unchecked") - List lines = FileUtils.readLines(new File(args[1]), "UTF-8"); + List lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8"); String srcDir = lines.get(0); lines.remove(0); processExamples(srcDir, lines); @@ -179,7 +180,7 @@ public class ToolsHelper { // } else if (definitions.startsWith("https:") || definitions.startsWith("http:")) { defn = loadFromUrl(definitions); - } else if (new File(definitions).exists()) { + } else if (ManagedFileAccess.file(definitions).exists()) { defn = loadFromFile(definitions); } else 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 { - FileInputStream in = new FileInputStream(src); + FileInputStream in = ManagedFileAccess.inStream(src); byte[] b = new byte[in.available()]; in.read(b); in.close(); @@ -220,10 +221,10 @@ public class ToolsHelper { public void executeFragments(String[] args) throws IOException { try { - File source = new CSFile(args[1]); + File source = ManagedFileAccess.csfile(args[1]); if (!source.exists()) throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); - XmlPullParser xpp = loadXml(new FileInputStream(source)); + XmlPullParser xpp = loadXml(ManagedFileAccess.inStream(source)); nextNoWhitespace(xpp); if (!xpp.getName().equals("tests")) 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 { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); if (args.length >= 4) { Utilities.copyFile(args[1], args[3]); } @@ -288,17 +289,17 @@ public class ToolsHelper { json.close(); TextFile.stringToFile(new String(json.toByteArray()), Utilities.changeFileExt(dest.getAbsolutePath(), ".json")); rf = pj.parse(new ByteArrayInputStream(json.toByteArray())); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); new XmlParser().compose(s, rf, true); s.close(); } public String executeJson(String[] args) throws IOException, FHIRException { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); - File destc = new CSFile(Utilities.changeFileExt(args[2], ".canonical.json")); - File destt = new CSFile(args[2] + ".tmp"); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); + File destc = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".canonical.json")); + File destt = ManagedFileAccess.csfile(args[2] + ".tmp"); if (!source.exists()) throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); @@ -307,16 +308,16 @@ public class ToolsHelper { Resource rf = p.parse(in); JsonParser json = new JsonParser(); json.setOutputStyle(OutputStyle.PRETTY); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); json.compose(s, rf); s.close(); json.setOutputStyle(OutputStyle.CANONICAL); - s = new FileOutputStream(destc); + s = ManagedFileAccess.outStream(destc); json.compose(s, rf); s.close(); json.setSuppressXhtml("Snipped for Brevity"); json.setOutputStyle(OutputStyle.PRETTY); - s = new FileOutputStream(destt); + s = ManagedFileAccess.outStream(destt); json.compose(s, rf); s.close(); return TextFile.fileToString(destt.getAbsolutePath()); @@ -324,8 +325,8 @@ public class ToolsHelper { public void executeCanonicalXml(String[] args) throws FHIRException, IOException { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); if (!source.exists()) throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); @@ -334,7 +335,7 @@ public class ToolsHelper { Resource rf = p.parse(in); XmlParser cxml = new XmlParser(); cxml.setOutputStyle(OutputStyle.NORMAL); - cxml.compose(new FileOutputStream(dest), rf); + cxml.compose(ManagedFileAccess.outStream(dest), rf); } private void executeVersion(String[] args) throws IOException { @@ -347,7 +348,7 @@ public class ToolsHelper { String filename = rootDir + n + ".xml"; // 1. produce canonical XML 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(); Resource r = p.parse(source); XmlParser cxml = new XmlParser(); @@ -356,14 +357,14 @@ public class ToolsHelper { // 2. produce JSON source = new CSFileInputStream(filename); - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".json")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".json")); r = p.parse(source); JsonParser json = new JsonParser(); json.setOutputStyle(OutputStyle.PRETTY); json.compose(dest, r); json = new JsonParser(); json.setOutputStyle(OutputStyle.CANONICAL); - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".canonical.json")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".canonical.json")); json.compose(dest, r); } catch (Exception e) { e.printStackTrace(); @@ -383,23 +384,23 @@ public class ToolsHelper { String tmp = tmpDir + n.replace(File.separator, "-") + ".tmp"; String dest = tmpDir + n.replace(File.separator, "-") + ".java.xml"; - FileInputStream in = new FileInputStream(source); + FileInputStream in = ManagedFileAccess.inStream(source); XmlParser xp = new XmlParser(); Resource r = xp.parse(in); System.err.print("."); JsonParser jp = new JsonParser(); - FileOutputStream out = new FileOutputStream(tmp); + FileOutputStream out = ManagedFileAccess.outStream(tmp); jp.setOutputStyle(OutputStyle.PRETTY); jp.compose(out, r); out.close(); r = null; System.err.print("."); - in = new FileInputStream(tmp); + in = ManagedFileAccess.inStream(tmp); System.err.print(","); r = jp.parse(in); System.err.print("."); - out = new FileOutputStream(dest); + out = ManagedFileAccess.outStream(dest); new XmlParser().compose(out, r, true); System.err.println("!"); out.close(); @@ -415,7 +416,7 @@ public class ToolsHelper { private void executeTest(String[] args) throws Throwable { try { @SuppressWarnings("unchecked") - List lines = FileUtils.readLines(new File(args[1]), "UTF-8"); + List lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8"); String srcDir = lines.get(0); lines.remove(0); String dstDir = lines.get(0).trim(); diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/metamodel/Tester.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/metamodel/Tester.java index cb1647f70..832a7ad6d 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/metamodel/Tester.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/metamodel/Tester.java @@ -40,6 +40,7 @@ import org.hl7.fhir.dstu2016may.utils.IWorkerContext; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import com.google.gson.JsonArray; 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")); int t = 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()) { + && ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".ttl")).exists()) { // if (f.equals("account-questionnaire.xml")) { System.out.print("convert " + f); -// Manager.convert(context, new FileInputStream("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); +// Manager.convert(context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML, +// 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 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); 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); - 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); String src = TextFile .fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\" + Utilities.changeFileExt(f, ".mm.ttl")); diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ICPC2Importer.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ICPC2Importer.java index a2fd33508..74b386816 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ICPC2Importer.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ICPC2Importer.java @@ -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.ValueSet; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -118,7 +119,7 @@ public class ICPC2Importer { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(false); DocumentBuilder builder = factory.newDocumentBuilder(); - Document doc = builder.parse(new FileInputStream(sourceFileName)); + Document doc = builder.parse(ManagedFileAccess.inStream(sourceFileName)); ValueSet vs = new ValueSet(); vs.setUrl("http://hl7.org/fhir/sid/icpc2/vs"); @@ -167,8 +168,8 @@ public class ICPC2Importer { XmlParser xml = new XmlParser(); xml.setOutputStyle(OutputStyle.PRETTY); - xml.compose(new FileOutputStream(targetFileNameVS), vs); - xml.compose(new FileOutputStream(targetFileNameCS), cs); + xml.compose(ManagedFileAccess.outStream(targetFileNameVS), vs); + xml.compose(ManagedFileAccess.outStream(targetFileNameCS), cs); } private void processClass(Element cls, Map concepts, CodeSystem define) { diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/LoincToDEConvertor.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/LoincToDEConvertor.java index 7f2a51784..0c29dfdf9 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/LoincToDEConvertor.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/LoincToDEConvertor.java @@ -54,6 +54,7 @@ import org.hl7.fhir.dstu2016may.model.Meta; import org.hl7.fhir.dstu2016may.utils.ToolingExtensions; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -165,12 +166,12 @@ public class LoincToDEConvertor { factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - xml = builder.parse(new FileInputStream(definitions)); + xml = builder.parse(ManagedFileAccess.inStream(definitions)); } private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { XmlParser xml = new XmlParser(); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); xml.compose(s, bundle, true); s.close(); } diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ValueSetExpansionCache.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ValueSetExpansionCache.java index 456afbc44..b775bcf17 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ValueSetExpansionCache.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/terminologies/ValueSetExpansionCache.java @@ -75,6 +75,7 @@ import org.hl7.fhir.dstu2016may.utils.IWorkerContext; import org.hl7.fhir.dstu2016may.utils.ToolingExtensions; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xhtml.XhtmlComposer; 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 // cache it locally 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()); s.close(); } @@ -125,10 +126,10 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory { } private void loadCache() throws FHIRFormatError, IOException { - File[] files = new File(cacheFolder).listFiles(); + File[] files = ManagedFileAccess.file(cacheFolder).listFiles(); for (File f : files) { if (f.getName().endsWith(".xml")) { - final FileInputStream is = new FileInputStream(f); + final FileInputStream is = ManagedFileAccess.inStream(f); try { Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is); if (r instanceof OperationOutcome) { diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/BatchLoader.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/BatchLoader.java index 63ec0e36f..f43e3bdf1 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/BatchLoader.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/BatchLoader.java @@ -47,6 +47,7 @@ import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.utils.client.FHIRToolingClient; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class BatchLoader { @@ -66,7 +67,7 @@ public class BatchLoader { throw new FHIRException("Unimplemented file type " + file); } else if (file.endsWith(".zip")) { LoadZipFile(server, file, p, size, 0, -1); - } else if (new File(file).isDirectory()) { + } else if (ManagedFileAccess.file(file).isDirectory()) { LoadDirectory(server, file, p, size); } else throw new FHIRException("Unknown file type " + file); @@ -99,7 +100,7 @@ public class BatchLoader { Bundle b = new Bundle(); b.setType(BundleType.COLLECTION); b.setId(UUID.randomUUID().toString().toLowerCase()); - ZipInputStream zip = new ZipInputStream(new FileInputStream(file)); + ZipInputStream zip = new ZipInputStream(ManagedFileAccess.inStream(file)); ZipEntry entry; while ((entry = zip.getNextEntry()) != null) { try { diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/SimpleWorkerContext.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/SimpleWorkerContext.java index 62a3a0657..a354401cb 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/SimpleWorkerContext.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/SimpleWorkerContext.java @@ -71,9 +71,10 @@ import org.hl7.fhir.dstu2016may.utils.client.FHIRToolingClient; import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; -import org.hl7.fhir.utilities.CSFileInputStream; import org.hl7.fhir.utilities.OIDUtils; 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.IssueSeverity; @@ -425,7 +426,7 @@ public class SimpleWorkerContext extends BaseWorkerContext implements IWorkerCon } 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")) loadFromFile(Utilities.path(folder, n), new JsonParser()); 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 { Resource r; try { - r = p.parse(new FileInputStream(filename)); + r = p.parse(ManagedFileAccess.inStream(filename)); if (r.getResourceType() == ResourceType.Bundle) { for (BundleEntryComponent e : ((Bundle) r).getEntry()) { seeResource(null, e.getResource()); - } + } } else { seeResource(null, r); } diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Transformer.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Transformer.java index d7598d90b..f02086ffd 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Transformer.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Transformer.java @@ -32,6 +32,7 @@ package org.hl7.fhir.dstu2016may.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; 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.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class Transformer { @@ -117,7 +119,7 @@ public class Transformer { loadMaps(folder); } 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(); StructureMap map = scu.getLibrary().get(mapUri); @@ -125,7 +127,7 @@ public class Transformer { throw new Error("Unable to find map " + mapUri + " (Known Maps = " + Utilities.listCanonicalUrls(scu.getLibrary().keySet()) + ")"); 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; } catch (Exception e) { e.printStackTrace(); @@ -134,8 +136,8 @@ public class Transformer { } } - private void loadMaps(String folder) { - for (String f : new File(folder).list()) { + private void loadMaps(String folder) throws IOException { + for (String f : ManagedFileAccess.file(folder).list()) { try { StructureMap map = scu.parse(TextFile.fileToString(Utilities.path(folder, f))); scu.getLibrary().put(map.getUrl(), map); diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Translations.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Translations.java index 7b614dfb0..cf7539292 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Translations.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Translations.java @@ -38,7 +38,7 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Unbundler.java b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Unbundler.java index 596052608..dcad20445 100644 --- a/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Unbundler.java +++ b/org.hl7.fhir.dstu2016may/src/main/java/org/hl7/fhir/dstu2016may/utils/Unbundler.java @@ -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.Resource; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class Unbundler { @@ -51,7 +52,7 @@ public class Unbundler { private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException { 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()) { Resource r = be.getResource(); if (r != null) { @@ -61,7 +62,7 @@ public class Unbundler { } if (!StringUtils.isBlank(r.getId())) { String tgt = Utilities.path(folder, r.fhirType() + "-" + r.getId() + ".json"); - new JsonParser().compose(new FileOutputStream(tgt), r); + new JsonParser().compose(ManagedFileAccess.outStream(tgt), r); } } } diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/FluentPathTests.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/FluentPathTests.java index 1c16ec59c..508cbd7a3 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/FluentPathTests.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/FluentPathTests.java @@ -25,6 +25,7 @@ import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.PathEngineException; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -46,35 +47,35 @@ public class FluentPathTests { private Patient patient() throws FHIRFormatError, FileNotFoundException, IOException { if (patient == null) 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; } private Appointment appointment() throws FHIRFormatError, FileNotFoundException, IOException { if (appointment == null) 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; } private Questionnaire questionnaire() throws FHIRFormatError, FileNotFoundException, IOException { if (questionnaire == null) 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; } private ValueSet valueset() throws FHIRFormatError, FileNotFoundException, IOException { if (valueset == null) 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; } private Observation observation() throws FHIRFormatError, FileNotFoundException, IOException { if (observation == null) 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; } @@ -929,7 +930,7 @@ public class FluentPathTests { @Test public void testQuestionnaire() throws FileNotFoundException, IOException, FHIRException { 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()) { testQItem(qi); } @@ -943,7 +944,7 @@ public class FluentPathTests { @Test public void testExtensionDefinitions() throws FileNotFoundException, IOException, FHIRException { 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()) { testStructureDefinition((StructureDefinition) be.getResource()); } diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/NarrativeGeneratorTests.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/NarrativeGeneratorTests.java index e01f5ab60..bea9351c3 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/NarrativeGeneratorTests.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/NarrativeGeneratorTests.java @@ -7,6 +7,7 @@ import org.hl7.fhir.dstu2016may.utils.NarrativeGenerator; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -41,9 +42,9 @@ public class NarrativeGeneratorTests { private void process(String path) throws FileNotFoundException, IOException, XmlPullParserException, EOperationOutcome, FHIRException { XmlParser p = new XmlParser(); - DomainResource r = (DomainResource) p.parse(new FileInputStream(path)); + DomainResource r = (DomainResource) p.parse(ManagedFileAccess.inStream(path)); 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); s.close(); } diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ParserTests.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ParserTests.java index fe6f8bfd1..b32e507df 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ParserTests.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ParserTests.java @@ -12,7 +12,7 @@ import org.hl7.fhir.dstu2016may.metamodel.Manager.FhirFormat; import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.utilities.Utilities; - +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -32,7 +32,7 @@ public class ParserTests { @Test public void testAll() throws Exception { String examples = Utilities.path(root, "examples"); - for (String fn : new File(examples).list()) { + for (String fn : ManagedFileAccess.file(examples).list()) { if (fn.endsWith(".xml")) { testRoundTrip(Utilities.path(examples, fn), fn); } @@ -41,50 +41,50 @@ public class ParserTests { private void testRoundTrip(String filename, String name) throws Exception { 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(); 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); Assertions.assertNull(msg, name + ": " + msg); String j1 = makeTempFilename(); new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY) - .compose(new FileOutputStream(j1), r); + .compose(ManagedFileAccess.outStream(j1), r); if (TestingUtilities.context == null) { 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(); - 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); Assertions.assertNull(msg, name + ": " + msg); 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); Assertions.assertNull(msg, name + ": " + msg); // ok, we've produced equivalent JSON by both methods. // 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(); 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); Assertions.assertNull(msg, name + ": " + msg); String x1 = makeTempFilename(); 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(); - 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); Assertions.assertNull(msg, name + ": " + msg); 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); Assertions.assertNull(msg, name + ": " + msg); diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/QuestionnaireBuilderTester.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/QuestionnaireBuilderTester.java index a49ecae98..ea537eed4 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/QuestionnaireBuilderTester.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/QuestionnaireBuilderTester.java @@ -2,27 +2,29 @@ package org.hl7.fhir.dstu2016may.test; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import org.hl7.fhir.dstu2016may.formats.XmlParser; import org.hl7.fhir.dstu2016may.model.StructureDefinition; import org.hl7.fhir.dstu2016may.utils.QuestionnaireBuilder; import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class QuestionnaireBuilderTester { private static final String TEST_PROFILE_DIR = "C:\\work\\org.hl7.fhir\\build\\publish"; // 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); - 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-")) { System.out.println("process " + f); try { StructureDefinition p = (StructureDefinition) new XmlParser() - .parse(new FileInputStream(TEST_PROFILE_DIR + "\\" + f)); + .parse(ManagedFileAccess.inStream(TEST_PROFILE_DIR + "\\" + f)); // 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"); } catch (Exception e) { e.printStackTrace(); diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceTest.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceTest.java index c0212050a..9c3df1a91 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceTest.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ResourceTest.java @@ -40,6 +40,7 @@ import org.hl7.fhir.dstu2016may.formats.JsonParser; import org.hl7.fhir.dstu2016may.formats.XmlParser; import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.exceptions.FHIRFormatError; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class ResourceTest { @@ -61,18 +62,18 @@ public class ResourceTest { p = new JsonParser(); else 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(); json1.setOutputStyle(OutputStyle.PRETTY); json1.compose(out, rf); out.close(); 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(); atom.setOutputStyle(OutputStyle.PRETTY); atom.compose(out, rf, true); diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/RoundTripTest.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/RoundTripTest.java index 0f79200c8..4ecb0702d 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/RoundTripTest.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/RoundTripTest.java @@ -16,6 +16,7 @@ import org.hl7.fhir.dstu2016may.metamodel.Manager.FhirFormat; import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.params.ParameterizedTest; @@ -29,7 +30,7 @@ public class RoundTripTest { public static Stream getFiles() throws IOException { List params = new ArrayList(); 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")) { params.add(Arguments.of(f)); } @@ -48,50 +49,50 @@ public class RoundTripTest { @SuppressWarnings("deprecation") public void test(File file) throws Exception { 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(); 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); Assertions.assertTrue(msg == null, file.getName() + ": " + msg); String j1 = makeTempFilename(); new org.hl7.fhir.dstu2016may.formats.JsonParser().setOutputStyle(OutputStyle.PRETTY) - .compose(new FileOutputStream(j1), r); + .compose(ManagedFileAccess.outStream(j1), r); if (TestingUtilities.context == null) { 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(); - 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); Assertions.assertTrue(msg == null, file.getName() + ": " + msg); 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); Assertions.assertTrue(msg == null, file.getName() + ": " + msg); // ok, we've produced equivalent JSON by both methods. // 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(); 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); Assertions.assertTrue(msg == null, file.getName() + ": " + msg); String x1 = makeTempFilename(); 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(); - 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); Assertions.assertTrue(msg == null, file.getName() + ": " + msg); 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); Assertions.assertTrue(msg == null, file.getName() + ": " + msg); diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/SingleTest.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/SingleTest.java index 48ae58f1d..f636377c6 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/SingleTest.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/SingleTest.java @@ -30,6 +30,8 @@ package org.hl7.fhir.dstu2016may.test; import java.io.File; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; + public class SingleTest { /** @@ -38,7 +40,7 @@ public class SingleTest { public static void main(String[] args) { try { 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(); System.out.println("Completed OK"); } catch (Exception e) { diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/StructureMapTests.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/StructureMapTests.java index 5b764c13d..fe69b16ec 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/StructureMapTests.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/StructureMapTests.java @@ -21,6 +21,7 @@ import org.hl7.fhir.dstu2016may.utils.StructureMapUtilities; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -86,16 +87,16 @@ public class StructureMapTests { 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 { 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); } 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 { StructureMap map = scu.parse(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\maps\\" + f)); maps.put(map.getUrl(), map); @@ -104,17 +105,17 @@ public class StructureMapTests { } 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, - 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); 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); Bundle bundle = new Bundle(); scu.transform(null, cda, maps.get("http://hl7.org/fhir/StructureMap/cda"), bundle); new XmlParser().setOutputStyle(OutputStyle.PRETTY) - .compose(new FileOutputStream(Utilities.path("[tmp]", "bundle.xml")), bundle); + .compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "bundle.xml")), bundle); } } \ No newline at end of file diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/TestingUtilities.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/TestingUtilities.java index 645df0f83..74e11a014 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/TestingUtilities.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/TestingUtilities.java @@ -13,9 +13,10 @@ import javax.xml.parsers.DocumentBuilderFactory; import org.apache.commons.codec.binary.Base64; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; -import org.hl7.fhir.utilities.CSFile; import org.hl7.fhir.utilities.TextFile; 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.Element; import org.w3c.dom.NamedNodeMap; @@ -41,7 +42,7 @@ public class TestingUtilities { command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } @@ -154,7 +155,7 @@ public class TestingUtilities { factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - return builder.parse(new FileInputStream(fn)); + return builder.parse(ManagedFileAccess.inStream(fn)); } public static String checkJsonIsSame(String f1, String f2) @@ -166,7 +167,7 @@ public class TestingUtilities { command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } diff --git a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ToolsHelper.java b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ToolsHelper.java index 00912b06c..36e8f5070 100644 --- a/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ToolsHelper.java +++ b/org.hl7.fhir.dstu2016may/src/test/java/org/hl7/fhir/dstu2016may/test/ToolsHelper.java @@ -57,10 +57,11 @@ import org.hl7.fhir.dstu2016may.model.Resource; import org.hl7.fhir.dstu2016may.utils.SimpleWorkerContext; import org.hl7.fhir.exceptions.FHIRException; 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.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.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; @@ -105,7 +106,7 @@ public class ToolsHelper { private void executeExamples(String[] args) throws IOException { try { @SuppressWarnings("unchecked") - List lines = FileUtils.readLines(new File(args[1]), "UTF-8"); + List lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8"); String srcDir = lines.get(0); lines.remove(0); processExamples(srcDir, lines); @@ -183,7 +184,7 @@ public class ToolsHelper { // } else if (definitions.startsWith("https:") || definitions.startsWith("http:")) { defn = loadFromUrl(definitions); - } else if (new File(definitions).exists()) { + } else if (ManagedFileAccess.file(definitions).exists()) { defn = loadFromFile(definitions); } else 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 { - FileInputStream in = new FileInputStream(src); + FileInputStream in = ManagedFileAccess.inStream(src); byte[] b = new byte[in.available()]; in.read(b); in.close(); @@ -224,10 +225,10 @@ public class ToolsHelper { public void executeFragments(String[] args) throws IOException { try { - File source = new CSFile(args[1]); + File source = ManagedFileAccess.csfile(args[1]); if (!source.exists()) throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); - XmlPullParser xpp = loadXml(new FileInputStream(source)); + XmlPullParser xpp = loadXml(ManagedFileAccess.inStream(source)); nextNoWhitespace(xpp); if (!xpp.getName().equals("tests")) 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 { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); if (args.length >= 4) { Utilities.copyFile(args[1], args[3]); } @@ -292,18 +293,18 @@ public class ToolsHelper { json.close(); TextFile.stringToFile(new String(json.toByteArray()), Utilities.changeFileExt(dest.getAbsolutePath(), ".json")); rf = pj.parse(new ByteArrayInputStream(json.toByteArray())); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); new XmlParser().compose(s, rf, true); s.close(); } public String executeJson(String[] args) throws IOException, FHIRException { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); - File destc = new CSFile(Utilities.changeFileExt(args[2], ".canonical.json")); - File destt = new CSFile(args[2] + ".tmp"); - File destr = new CSFile(Utilities.changeFileExt(args[2], ".ttl")); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); + File destc = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".canonical.json")); + File destt = ManagedFileAccess.csfile(args[2] + ".tmp"); + File destr = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".ttl")); if (!source.exists()) throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); @@ -312,21 +313,21 @@ public class ToolsHelper { Resource rf = p.parse(in); JsonParser json = new JsonParser(); json.setOutputStyle(OutputStyle.PRETTY); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); json.compose(s, rf); s.close(); json.setOutputStyle(OutputStyle.CANONICAL); - s = new FileOutputStream(destc); + s = ManagedFileAccess.outStream(destc); json.compose(s, rf); s.close(); json.setSuppressXhtml("Snipped for Brevity"); json.setOutputStyle(OutputStyle.PRETTY); - s = new FileOutputStream(destt); + s = ManagedFileAccess.outStream(destt); json.compose(s, rf); s.close(); RdfParserBase rdf = new RdfParser(); - s = new FileOutputStream(destr); + s = ManagedFileAccess.outStream(destr); rdf.compose(s, rf); s.close(); @@ -335,8 +336,8 @@ public class ToolsHelper { public void executeCanonicalXml(String[] args) throws FHIRException, IOException { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); if (!source.exists()) throw new FHIRException("Source File \"" + source.getAbsolutePath() + "\" not found"); @@ -345,7 +346,7 @@ public class ToolsHelper { Resource rf = p.parse(in); XmlParser cxml = new XmlParser(); cxml.setOutputStyle(OutputStyle.NORMAL); - cxml.compose(new FileOutputStream(dest), rf); + cxml.compose(ManagedFileAccess.outStream(dest), rf); } private void executeVersion(String[] args) throws IOException { @@ -358,7 +359,7 @@ public class ToolsHelper { String filename = rootDir + n + ".xml"; // 1. produce canonical XML 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(); Resource r = p.parse(source); XmlParser cxml = new XmlParser(); @@ -367,18 +368,18 @@ public class ToolsHelper { // 2. produce JSON source = new CSFileInputStream(filename); - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".json")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".json")); r = p.parse(source); JsonParser json = new JsonParser(); json.setOutputStyle(OutputStyle.PRETTY); json.compose(dest, r); json = new JsonParser(); json.setOutputStyle(OutputStyle.CANONICAL); - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".canonical.json")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".canonical.json")); json.compose(dest, r); // 2. produce JSON - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".ttl")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".ttl")); RdfParserBase rdf = new RdfParser(); rdf.compose(dest, r); } catch (Exception e) { @@ -399,23 +400,23 @@ public class ToolsHelper { String tmp = tmpDir + n.replace(File.separator, "-") + ".tmp"; String dest = tmpDir + n.replace(File.separator, "-") + ".java.xml"; - FileInputStream in = new FileInputStream(source); + FileInputStream in = ManagedFileAccess.inStream(source); XmlParser xp = new XmlParser(); Resource r = xp.parse(in); System.err.print("."); JsonParser jp = new JsonParser(); - FileOutputStream out = new FileOutputStream(tmp); + FileOutputStream out = ManagedFileAccess.outStream(tmp); jp.setOutputStyle(OutputStyle.PRETTY); jp.compose(out, r); out.close(); r = null; System.err.print("."); - in = new FileInputStream(tmp); + in = ManagedFileAccess.inStream(tmp); System.err.print(","); r = jp.parse(in); System.err.print("."); - out = new FileOutputStream(dest); + out = ManagedFileAccess.outStream(dest); new XmlParser().compose(out, r, true); System.err.println("!"); out.close(); @@ -431,7 +432,7 @@ public class ToolsHelper { private void executeTest(String[] args) throws Throwable { try { @SuppressWarnings("unchecked") - List lines = FileUtils.readLines(new File(args[1]), "UTF-8"); + List lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8"); String srcDir = lines.get(0); lines.remove(0); String dstDir = lines.get(0).trim(); diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/BaseWorkerContext.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/BaseWorkerContext.java index dd9a59f1b..1bbfa6e58 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/BaseWorkerContext.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/BaseWorkerContext.java @@ -94,6 +94,7 @@ import org.hl7.fhir.exceptions.TerminologyServiceException; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.TextFile; 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.validation.ValidationMessage.IssueSeverity; import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType; @@ -323,7 +324,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte String cacheFn = null; if (cache != null) { cacheFn = Utilities.path(cache, determineCacheId(vs, heirarchical) + ".json"); - if (new File(cacheFn).exists()) { + if (ManagedFileAccess.file(cacheFn).exists()) { return loadFromCache(vs.copy(), cacheFn); } } @@ -335,8 +336,8 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte .expand(vs, expProfile.setExcludeNested(!heirarchical)); if (vse.getValueset() != null) { if (cache != null) { - FileOutputStream s = new FileOutputStream(cacheFn); - newJsonParser().compose(new FileOutputStream(cacheFn), vse.getValueset()); + FileOutputStream s = ManagedFileAccess.outStream(cacheFn); + newJsonParser().compose(ManagedFileAccess.outStream(cacheFn), vse.getValueset()); s.close(); } } @@ -368,7 +369,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte private ValueSetExpansionOutcome loadFromCache(ValueSet vs, String cacheFn) throws FileNotFoundException, Exception { JsonParser parser = new JsonParser(); - Resource r = parser.parse(new FileInputStream(cacheFn)); + Resource r = parser.parse(ManagedFileAccess.inStream(cacheFn)); if (r instanceof OperationOutcome) { return new ValueSetExpansionOutcome( ((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 { 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 { @@ -715,7 +716,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte if (fn == null) { return null; } - if (!(new File(fn).exists())) { + if (!(ManagedFileAccess.file(fn).exists())) { return null; } String cnt = TextFile.fileToString(fn); diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/SimpleWorkerContext.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/SimpleWorkerContext.java index 119cf1d7e..1c230a05b 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/SimpleWorkerContext.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/context/SimpleWorkerContext.java @@ -86,9 +86,10 @@ import org.hl7.fhir.dstu3.utils.validation.IResourceValidator; import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; -import org.hl7.fhir.utilities.CSFileInputStream; import org.hl7.fhir.utilities.OIDUtils; 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.validation.ValidationMessage; 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 { - for (String n : new File(folder).list()) { + for (String n : ManagedFileAccess.file(folder).list()) { if (n.endsWith(".json")) loadFromFile(Utilities.path(folder, n), new JsonParser()); 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 { Resource r; try { - r = p.parse(new FileInputStream(filename)); + r = p.parse(ManagedFileAccess.inStream(filename)); if (r.getResourceType() == ResourceType.Bundle) { for (BundleEntryComponent e : ((Bundle) r).getEntry()) { seeResource(null, e.getResource()); diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/elementmodel/Tester.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/elementmodel/Tester.java index 29becb444..e999ce66b 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/elementmodel/Tester.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/elementmodel/Tester.java @@ -1,37 +1,38 @@ package org.hl7.fhir.dstu3.elementmodel; -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * 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 - prior written permission. - - 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 - 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, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - 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, - 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 - POSSIBILITY OF SUCH DAMAGE. - - */ +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * 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 + prior written permission. + + 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 + 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, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + 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, + 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 + POSSIBILITY OF SUCH DAMAGE. + + */ import java.io.File; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import java.io.FileInputStream; import java.io.FileOutputStream; 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")); int t = 0; int ok = 0; - for (String f : new 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()) { + 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") && ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".ttl")).exists()) { // if (f.equals("account-questionnaire.xml")) { System.out.print("convert "+f); -// Manager.convert(context, new FileInputStream("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); +// Manager.convert(context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML, +// 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 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); - 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, new FileOutputStream(Utilities.path("[tmp]", "resource.xml")), FhirFormat.XML, OutputStyle.PRETTY, null); + Element e = Manager.parse(context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML); + 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, 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 tgt = TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".ttl")); t++; diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/LoincToDEConvertor.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/LoincToDEConvertor.java index 32759f787..344d74cd4 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/LoincToDEConvertor.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/LoincToDEConvertor.java @@ -1,33 +1,33 @@ package org.hl7.fhir.dstu3.terminologies; -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * 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 - prior written permission. - - 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 - 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, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - 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, - 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 - POSSIBILITY OF SUCH DAMAGE. - - */ +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * 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 + prior written permission. + + 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 + 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, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + 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, + 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 + 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.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -157,12 +158,12 @@ public class LoincToDEConvertor { factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - xml = builder.parse(new FileInputStream(definitions)); + xml = builder.parse(ManagedFileAccess.inStream(definitions)); } private void saveBundle() throws FHIRFormatError, IOException, XmlPullParserException { XmlParser xml = new XmlParser(); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); xml.compose(s, bundle, true); s.close(); } diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/ValueSetExpansionCache.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/ValueSetExpansionCache.java index 456bdb15b..f00ff3224 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/ValueSetExpansionCache.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/terminologies/ValueSetExpansionCache.java @@ -1,33 +1,33 @@ package org.hl7.fhir.dstu3.terminologies; -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * 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 - prior written permission. - - 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 - 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, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - 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, - 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 - POSSIBILITY OF SUCH DAMAGE. - - */ +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * 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 + prior written permission. + + 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 + 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, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + 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, + 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 + 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.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xhtml.XhtmlComposer; 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 vso = context.expandVS(source, false, profile == null || !profile.getExcludeNested()); 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()); s.close(); } @@ -136,10 +137,10 @@ public class ValueSetExpansionCache implements ValueSetExpanderFactory { } private void loadCache() throws FHIRFormatError, IOException { - File[] files = new File(cacheFolder).listFiles(); + File[] files = ManagedFileAccess.file(cacheFolder).listFiles(); for (File f : files) { if (f.getName().endsWith(".xml")) { - final FileInputStream is = new FileInputStream(f); + final FileInputStream is = ManagedFileAccess.inStream(f); try { Resource r = context.newXmlParser().setOutputStyle(OutputStyle.PRETTY).parse(is); if (r instanceof OperationOutcome) { diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/BatchLoader.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/BatchLoader.java index 89035e91b..3772166b9 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/BatchLoader.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/BatchLoader.java @@ -1,33 +1,33 @@ package org.hl7.fhir.dstu3.utils; -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * 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 - prior written permission. - - 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 - 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, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - 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, - 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 - POSSIBILITY OF SUCH DAMAGE. - - */ +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * 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 + prior written permission. + + 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 + 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, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + 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, + 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 + POSSIBILITY OF SUCH DAMAGE. + + */ @@ -52,6 +52,7 @@ import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.IniFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class BatchLoader { @@ -68,7 +69,7 @@ public class BatchLoader { throw new FHIRException("Unimplemented file type "+file); // } else if (file.endsWith(".zip")) { // LoadZipFile(server, file, p, size, 0, -1); - } else if (new File(file).isDirectory()) { + } else if (ManagedFileAccess.file(file).isDirectory()) { LoadDirectory(server, file, size); } else throw new FHIRException("Unknown file type "+file); @@ -81,7 +82,7 @@ public class BatchLoader { System.out.println("Done"); 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 (!ini.getBooleanProperty("finished", f.getName())) { sendFile(client, f, size, ini); @@ -145,7 +146,7 @@ public class BatchLoader { // Bundle b = new Bundle(); // b.setType(BundleType.COLLECTION); // b.setId(UUID.randomUUID().toString().toLowerCase()); -// ZipInputStream zip = new ZipInputStream(new FileInputStream(file)); +// ZipInputStream zip = new ZipInputStream(ManagedFileAccess.inStream(file)); // ZipEntry entry; // while((entry = zip.getNextEntry())!=null) // { diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/R3TEchnicalCorrectionProcessor.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/R3TEchnicalCorrectionProcessor.java index 2a4c24e0d..5b3e8515a 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/R3TEchnicalCorrectionProcessor.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/R3TEchnicalCorrectionProcessor.java @@ -19,6 +19,7 @@ import org.hl7.fhir.dstu3.model.DomainResource; import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class R3TEchnicalCorrectionProcessor { @@ -31,10 +32,10 @@ public class R3TEchnicalCorrectionProcessor { System.out.println("Loading resources from "+src); List resources = new ArrayList<>(); Map 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"))) { try { - Resource r = new XmlParser().parse(new FileInputStream(f)); + Resource r = new XmlParser().parse(ManagedFileAccess.inStream(f)); if (f.getName().contains("canonical")) { resources.add(r); } @@ -43,17 +44,17 @@ public class R3TEchnicalCorrectionProcessor { definitions.put(f.getName(), r); } r.setUserData("path", f.getName().substring(0, f.getName().indexOf("."))); -// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"1")); -// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"2")); +// FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"1")); +// FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"2")); } catch (Exception e) { 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"))) { try { -// new JsonParser().parse(new FileInputStream(f)); -// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"1")); -// FileUtils.copyFile(f, new File(f.getAbsolutePath()+"2")); +// new JsonParser().parse(ManagedFileAccess.inStream(f)); +// FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"1")); +// FileUtils.copyFile(f, ManagedFileAccess.file(f.getAbsolutePath()+"2")); } catch (Exception e) { System.out.println("Unable to load "+f.getName()+": "+e.getMessage()); } @@ -79,15 +80,15 @@ public class R3TEchnicalCorrectionProcessor { private void produceDefinitionsXml(Map definitions, String dest) throws IOException { for (String n : definitions.keySet()) { - File f = new File(Utilities.path(dest, "definitions.xml", n)); - new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), definitions.get(n)); + File f = ManagedFileAccess.file(Utilities.path(dest, "definitions.xml", n)); + new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), definitions.get(n)); } } private void produceDefinitionsJson(Map definitions, String dest) throws IOException { for (String n : definitions.keySet()) { - File f = new File(Utilities.path(dest, "definitions.json", Utilities.changeFileExt(n, ".json"))); - new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), definitions.get(n)); + File f = ManagedFileAccess.file(Utilities.path(dest, "definitions.json", Utilities.changeFileExt(n, ".json"))); + 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"))) { n = n+"("+r.getId()+")"; } - File f = new File(Utilities.path(dest, "examples-json", n+".json")); - new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), r); + File f = ManagedFileAccess.file(Utilities.path(dest, "examples-json", n+".json")); + new JsonParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f), r); } } @@ -109,8 +110,8 @@ public class R3TEchnicalCorrectionProcessor { if (!r.getId().equals(r.getUserString("path"))) { n = n+"("+r.getId()+")"; } - File f = new File(Utilities.path(dest, "examples", n+".xml")); - new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(f), r); + File f = ManagedFileAccess.file(Utilities.path(dest, "examples", n+".xml")); + 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 examplesPath = Utilities.path(root, "hl7.fhir.r3.examples", "package"); String elementsPath = Utilities.path(root, "hl7.fhir.r3.elements", "package"); - int coreTotal = new File(corePath).list().length-1; - int examplesTotal = new File(examplesPath).list().length-1; - int elementsTotal = new File(elementsPath).list().length-1; + int coreTotal = ManagedFileAccess.file(corePath).list().length-1; + int examplesTotal = ManagedFileAccess.file(examplesPath).list().length-1; + int elementsTotal = ManagedFileAccess.file(elementsPath).list().length-1; int coreCount = 0; int examplesCount = 0; @@ -131,17 +132,17 @@ public class R3TEchnicalCorrectionProcessor { FileOutputStream dst = null; if (n.startsWith("DataElement-")) { elementsCount++; - dst = new FileOutputStream(Utilities.path(elementsPath, n)); + dst = ManagedFileAccess.outStream(Utilities.path(elementsPath, n)); new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(dst, r); } else { - dst = new FileOutputStream(Utilities.path(examplesPath, n)); + dst = ManagedFileAccess.outStream(Utilities.path(examplesPath, n)); new JsonParser().setOutputStyle(OutputStyle.NORMAL).compose(dst, r); examplesCount++; if (isCoreResource(r.fhirType())) { coreCount++; DomainResource dr = (DomainResource) r; 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); } } } diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Translations.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Translations.java index 35b35d818..017ab8bff 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Translations.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Translations.java @@ -40,7 +40,7 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Unbundler.java b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Unbundler.java index ef619d109..e3e6f5b7d 100644 --- a/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Unbundler.java +++ b/org.hl7.fhir.dstu3/src/main/java/org/hl7/fhir/dstu3/utils/Unbundler.java @@ -1,33 +1,33 @@ package org.hl7.fhir.dstu3.utils; -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * 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 - prior written permission. - - 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 - 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, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - 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, - 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 - POSSIBILITY OF SUCH DAMAGE. - - */ +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * 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 + prior written permission. + + 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 + 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, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + 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, + 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 + 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.exceptions.FHIRFormatError; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class Unbundler { @@ -51,12 +52,12 @@ public class Unbundler { private static void unbundle(String src) throws FHIRFormatError, FileNotFoundException, IOException { 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()) { Resource r = be.getResource(); if (r != null) { String tgt = Utilities.path(folder, r.fhirType()+"-"+r.getId()+".json"); - new JsonParser().compose(new FileOutputStream(tgt), r); + new JsonParser().compose(ManagedFileAccess.outStream(tgt), r); } } } diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/FluentPathTests.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/FluentPathTests.java index b125cffa6..208c8d337 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/FluentPathTests.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/FluentPathTests.java @@ -19,6 +19,7 @@ import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.dstu3.test.support.TestingUtilities; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.xml.XMLUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -59,7 +60,7 @@ public class FluentPathTests { if (Utilities.noString(input)) fp.check(null, null, node); 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); } outcome = fp.evaluate(res, node); diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/NarrativeGeneratorTests.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/NarrativeGeneratorTests.java index 834009927..d1aeb5282 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/NarrativeGeneratorTests.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/NarrativeGeneratorTests.java @@ -12,6 +12,7 @@ import org.hl7.fhir.dstu3.utils.EOperationOutcome; import org.hl7.fhir.dstu3.utils.NarrativeGenerator; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Disabled; @@ -41,9 +42,9 @@ public class NarrativeGeneratorTests { private void process(String path) throws FileNotFoundException, IOException, XmlPullParserException, EOperationOutcome, FHIRException { XmlParser p = new XmlParser(); - DomainResource r = (DomainResource) p.parse(new FileInputStream(path)); + DomainResource r = (DomainResource) p.parse(ManagedFileAccess.inStream(path)); 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); s.close(); diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ProfileUtilitiesTests.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ProfileUtilitiesTests.java index aad88c6ea..ec85d68d1 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ProfileUtilitiesTests.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ProfileUtilitiesTests.java @@ -26,8 +26,9 @@ import org.hl7.fhir.dstu3.utils.EOperationOutcome; import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; -import org.hl7.fhir.utilities.CSFile; 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.IssueSeverity; @@ -45,8 +46,8 @@ public class ProfileUtilitiesTests { public static void main(String[] args) throws EOperationOutcome, Exception { // new ProfileUtilitiesTests().execute(args); 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")); - // new ProfileUtilities(context, messages, null).generateSchematrons(new FileOutputStream(Utilities.path("[tmp]", "test.sch"), p); + // 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(ManagedFileAccess.outStream(Utilities.path("[tmp]", "test.sch"), p); } public void execute(String[] args) throws FileNotFoundException, IOException, FHIRException { @@ -76,9 +77,9 @@ public class ProfileUtilitiesTests { System.out.println("processing output"); for (ProfileComparison outcome : comp.getComparisons()) { 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) - 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()); for (ValidationMessage vm : outcome.getMessages()) @@ -101,8 +102,8 @@ public class ProfileUtilitiesTests { private void compare(String fn1, String fn2) throws FHIRFormatError, FileNotFoundException, IOException, DefinitionException { System.out.println("Compare "+fn1+" to "+fn2); System.out.println(" .. load"); - StructureDefinition left = (StructureDefinition) new XmlParser().parse(new FileInputStream(Utilities.path(root, fn1))); - StructureDefinition right = (StructureDefinition) new XmlParser().parse(new FileInputStream(Utilities.path(root, fn2))); + StructureDefinition left = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream(Utilities.path(root, fn1))); + StructureDefinition right = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream(Utilities.path(root, fn2))); System.out.println(" .. compare"); comp.compareProfiles(left, right); @@ -893,14 +894,14 @@ public class ProfileUtilitiesTests { // focus.setDifferential(null); String f1 = Utilities.path("c:", "temp", "base.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(new FileOutputStream(f2), focus);; + new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f1), base);; + new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(f2), focus);; String diff = Utilities.path(System.getenv("ProgramFiles(X86)"), "WinMerge", "WinMergeU.exe"); List command = new ArrayList(); command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/QuestionnaireBuilderTester.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/QuestionnaireBuilderTester.java index 52b2e6369..49af87fc9 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/QuestionnaireBuilderTester.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/QuestionnaireBuilderTester.java @@ -1,7 +1,9 @@ package org.hl7.fhir.dstu3.test; import java.io.File; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import java.io.FileInputStream; +import java.io.IOException; import org.hl7.fhir.dstu3.formats.XmlParser; 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_DEST = Utilities.path("[tmp]", "questionnaires\\"); - public static void main(String[] args) { + public static void main(String[] args) throws IOException { 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-")) { System.out.println("process "+f); 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); -// new XmlComposer().compose(new FileOutputStream(TEST_DEST+f), q, true); +// new XmlComposer().compose(ManagedFileAccess.outStream(TEST_DEST+f), q, true); throw new FHIRException("test"); } catch (Exception e) { e.printStackTrace(); diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceRoundTripTests.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceRoundTripTests.java index 8cb8da742..4137ed6ff 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceRoundTripTests.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceRoundTripTests.java @@ -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.NarrativeGenerator; import org.hl7.fhir.exceptions.FHIRException; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -24,9 +25,9 @@ public class ResourceRoundTripTests { public void test() throws FileNotFoundException, IOException, FHIRException, EOperationOutcome { if (TestingUtilities.context == null) 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 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); } } \ No newline at end of file diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceTest.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceTest.java index df321ede5..07cdd4831 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceTest.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ResourceTest.java @@ -45,6 +45,7 @@ import org.hl7.fhir.dstu3.formats.XmlParser; import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.dstu3.test.support.TestingUtilities; import org.hl7.fhir.exceptions.FHIRFormatError; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class ResourceTest { @@ -66,18 +67,18 @@ public class ResourceTest { p = new JsonParser(); else 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(); json1.setOutputStyle(OutputStyle.PRETTY); json1.compose(out, rf); out.close(); 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(); atom.setOutputStyle(OutputStyle.PRETTY); atom.compose(out, rf, true); @@ -89,9 +90,9 @@ public class ResourceTest { public Element testEM() throws Exception { if (TestingUtilities.context == null) 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); - Manager.compose(TestingUtilities.context, resource, new FileOutputStream(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); + Element resource = Manager.parse(TestingUtilities.context, ManagedFileAccess.inStream(source), isJson() ? FhirFormat.JSON : FhirFormat.XML); + Manager.compose(TestingUtilities.context, resource, ManagedFileAccess.outStream(source.getAbsoluteFile()+".out.json"), FhirFormat.JSON, OutputStyle.PRETTY, null); + Manager.compose(TestingUtilities.context, resource, ManagedFileAccess.outStream(source.getAbsoluteFile()+".out.json"), FhirFormat.XML, OutputStyle.PRETTY, null); return resource; } diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SingleTest.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SingleTest.java index a7b713b15..eb675db6f 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SingleTest.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SingleTest.java @@ -30,6 +30,7 @@ package org.hl7.fhir.dstu3.test; import java.io.File; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.Disabled; @Disabled @@ -41,7 +42,7 @@ public class SingleTest { public static void main(String[] args) { try { 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(); System.out.println("Completed OK"); } catch (Exception e) { diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SnapShotGenerationTests.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SnapShotGenerationTests.java index 51760a99d..ab293a065 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SnapShotGenerationTests.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/SnapShotGenerationTests.java @@ -37,6 +37,7 @@ import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.PathEngineException; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.params.ParameterizedTest; @@ -89,7 +90,7 @@ public class SnapShotGenerationTests { context.fixtures.put(op.getResponseId(), 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: for (int i = 1; i < test.getAction().size(); i++) { SetupActionAssertComponent a = test.getAction().get(i).getAssert(); diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/StructureMapTests.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/StructureMapTests.java index 7de16bdb4..2c965cbff 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/StructureMapTests.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/StructureMapTests.java @@ -72,16 +72,16 @@ public class StructureMapTests { // // StructureMapUtilities scu = new StructureMapUtilities(TestingUtilities.context, maps, null); // -// for (String f : new File(Utilities.path(TestingUtilities.home(), "guides", "ccda2", "mapping", "logical")).list()) { +// for (String f : ManagedFileAccess.file(Utilities.path(TestingUtilities.home(), "guides", "ccda2", "mapping", "logical")).list()) { // try { -// StructureDefinition sd = (StructureDefinition) new XmlParser().parse(new FileInputStream(Utilities.path(TestingUtilities.home(), "guides", "ccda2", "mapping", "logical", f))); +// StructureDefinition sd = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream(Utilities.path(TestingUtilities.home(), "guides", "ccda2", "mapping", "logical", f))); // ((SimpleWorkerContext) TestingUtilities.context).seeResource(sd.getUrl(), sd); // } catch (Exception e) { // e.printStackTrace(); // } // } // -// for (String f : new File(Utilities.path(TestingUtilities.home(), "guides", "ccda2", "mapping", "map")).list()) { +// for (String f : ManagedFileAccess.file(Utilities.path(TestingUtilities.home(), "guides", "ccda2", "mapping", "map")).list()) { // try { // StructureMap map = scu.parse(TextFile.fileToString(Utilities.path(TestingUtilities.home(), "guides", "ccda2", "mapping", "map", f))); // maps.put(map.getUrl(), map); @@ -90,12 +90,12 @@ public class StructureMapTests { // } // } // -// Element cda = Manager.parse(TestingUtilities.context, new FileInputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\example\\ccd.xml"), FhirFormat.XML); -// Manager.compose(TestingUtilities.context, cda, new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\example\\ccd.out.json"), FhirFormat.JSON, OutputStyle.PRETTY, null); -// Manager.compose(TestingUtilities.context, cda, new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\example\\ccd.out.xml"), FhirFormat.XML, OutputStyle.PRETTY, null); +// Element cda = Manager.parse(TestingUtilities.context, ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\example\\ccd.xml"), FhirFormat.XML); +// Manager.compose(TestingUtilities.context, cda, ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\example\\ccd.out.json"), FhirFormat.JSON, OutputStyle.PRETTY, null); +// Manager.compose(TestingUtilities.context, cda, ManagedFileAccess.outStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\example\\ccd.out.xml"), FhirFormat.XML, OutputStyle.PRETTY, null); // Bundle bundle = new Bundle(); // scu.transform(null, cda, maps.get("http://hl7.org/fhir/StructureMap/cda"), bundle); -// new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "bundle.xml"), bundle); +// new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "bundle.xml"), bundle); // } // // @Test @@ -107,15 +107,15 @@ public class StructureMapTests { // // 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 { -// StructureDefinition sd = (StructureDefinition) new XmlParser().parse(new FileInputStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\CDA\\"+f)); +// StructureDefinition sd = (StructureDefinition) new XmlParser().parse(ManagedFileAccess.inStream("C:\\work\\org.hl7.fhir\\build\\guides\\ccda\\CDA\\"+f)); // ((SimpleWorkerContext) TestingUtilities.context).seeResource(sd.getUrl(), sd); // } catch (Exception e) { // } // } // -// for (String f : new File("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\map").list()) { +// for (String f : ManagedFileAccess.file("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\map").list()) { // try { // StructureMap map = scu.parse(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\guides\\ccda2\\mapping\\map\\"+ f)); // maps.put(map.getUrl(), map); @@ -125,7 +125,7 @@ public class StructureMapTests { // // List result = scu.analyse(null, maps.get("http://hl7.org/fhir/StructureMap/cda")).getProfiles(); // for (StructureDefinition sd : result) -// new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "res-"+sd.getId()+".xml"), sd); +// new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(ManagedFileAccess.outStream(Utilities.path("[tmp]", "res-"+sd.getId()+".xml"), sd); // } // } \ No newline at end of file diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ToolsHelper.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ToolsHelper.java index 8f08e5d16..abd8f7af5 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ToolsHelper.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/ToolsHelper.java @@ -57,10 +57,11 @@ import org.hl7.fhir.dstu3.model.Constants; import org.hl7.fhir.dstu3.model.Resource; import org.hl7.fhir.exceptions.FHIRException; 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.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.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; @@ -103,7 +104,7 @@ public class ToolsHelper { private void executeExamples(String[] args) throws IOException { try { @SuppressWarnings("unchecked") - List lines = FileUtils.readLines(new File(args[1]), "UTF-8"); + List lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8"); String srcDir = lines.get(0); lines.remove(0); processExamples(srcDir, lines); @@ -177,7 +178,7 @@ public class ToolsHelper { // } else if (definitions.startsWith("https:") || definitions.startsWith("http:")) { defn = loadFromUrl(definitions); - } else if (new File(definitions).exists()) { + } else if (ManagedFileAccess.file(definitions).exists()) { defn = loadFromFile(definitions); } else throw new FHIRException("Unable to find FHIR validation Pack (source = "+definitions+")"); @@ -191,7 +192,7 @@ public class ToolsHelper { } private byte[] loadFromFile(String src) throws IOException { - FileInputStream in = new FileInputStream(src); + FileInputStream in = ManagedFileAccess.inStream(src); byte[] b = new byte[in.available()]; in.read(b); in.close(); @@ -218,10 +219,10 @@ public class ToolsHelper { public void executeFragments(String[] args) throws IOException { try { - File source = new CSFile(args[1]); + File source = ManagedFileAccess.csfile(args[1]); if (!source.exists()) throw new FHIRException("Source File \""+source.getAbsolutePath()+"\" not found"); - XmlPullParser xpp = loadXml(new FileInputStream(source)); + XmlPullParser xpp = loadXml(ManagedFileAccess.inStream(source)); nextNoWhitespace(xpp); if (!xpp.getName().equals("tests")) throw new FHIRFormatError("Unable to parse file - starts with "+xpp.getName()); @@ -266,8 +267,8 @@ public class ToolsHelper { public void executeRoundTrip(String[] args) throws IOException, FHIRException { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); if (args.length >= 4) { Utilities.copyFile(args[1], args[3]); } @@ -285,18 +286,18 @@ public class ToolsHelper { json.close(); TextFile.stringToFile(new String(json.toByteArray()), Utilities.changeFileExt(dest.getAbsolutePath(), ".json")); rf = pj.parse(new ByteArrayInputStream(json.toByteArray())); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); new XmlParser().compose(s, rf, true); s.close(); } public String executeJson(String[] args) throws IOException, FHIRException { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); - File destc = new CSFile(Utilities.changeFileExt(args[2], ".canonical.json")); - File destt = new CSFile(args[2]+".tmp"); - File destr = new CSFile(Utilities.changeFileExt(args[2], ".ttl")); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); + File destc = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".canonical.json")); + File destt = ManagedFileAccess.csfile(args[2]+".tmp"); + File destr = ManagedFileAccess.csfile(Utilities.changeFileExt(args[2], ".ttl")); if (!source.exists()) throw new FHIRException("Source File \""+source.getAbsolutePath()+"\" not found"); @@ -305,21 +306,21 @@ public class ToolsHelper { Resource rf = p.parse(in); JsonParser json = new JsonParser(); json.setOutputStyle(OutputStyle.PRETTY); - FileOutputStream s = new FileOutputStream(dest); + FileOutputStream s = ManagedFileAccess.outStream(dest); json.compose(s, rf); s.close(); json.setOutputStyle(OutputStyle.CANONICAL); - s = new FileOutputStream(destc); + s = ManagedFileAccess.outStream(destc); json.compose(s, rf); s.close(); json.setSuppressXhtml("Snipped for Brevity"); json.setOutputStyle(OutputStyle.PRETTY); - s = new FileOutputStream(destt); + s = ManagedFileAccess.outStream(destt); json.compose(s, rf); s.close(); RdfParserBase rdf = new RdfParser(); - s = new FileOutputStream(destr); + s = ManagedFileAccess.outStream(destr); rdf.compose(s, rf); s.close(); @@ -328,8 +329,8 @@ public class ToolsHelper { public void executeCanonicalXml(String[] args) throws FHIRException, IOException { FileInputStream in; - File source = new CSFile(args[1]); - File dest = new CSFile(args[2]); + File source = ManagedFileAccess.csfile(args[1]); + File dest = ManagedFileAccess.csfile(args[2]); if (!source.exists()) throw new FHIRException("Source File \""+source.getAbsolutePath()+"\" not found"); @@ -338,7 +339,7 @@ public class ToolsHelper { Resource rf = p.parse(in); XmlParser cxml = new XmlParser(); cxml.setOutputStyle(OutputStyle.NORMAL); - cxml.compose(new FileOutputStream(dest), rf); + cxml.compose(ManagedFileAccess.outStream(dest), rf); } private void executeVersion(String[] args) throws IOException { @@ -351,7 +352,7 @@ public class ToolsHelper { String filename = rootDir + n + ".xml"; // 1. produce canonical XML 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(); Resource r = p.parse(source); XmlParser cxml = new XmlParser(); @@ -360,18 +361,18 @@ public class ToolsHelper { // 2. produce JSON source = new CSFileInputStream(filename); - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".json")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".json")); r = p.parse(source); JsonParser json = new JsonParser(); json.setOutputStyle(OutputStyle.PRETTY); json.compose(dest, r); json = new JsonParser(); json.setOutputStyle(OutputStyle.CANONICAL); - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".canonical.json")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".canonical.json")); json.compose(dest, r); // 2. produce JSON - dest = new FileOutputStream(Utilities.changeFileExt(filename, ".ttl")); + dest = ManagedFileAccess.outStream(Utilities.changeFileExt(filename, ".ttl")); RdfParserBase rdf = new RdfParser(); rdf.compose(dest, r); } catch (Exception e) { @@ -391,23 +392,23 @@ public class ToolsHelper { String tmp = tmpDir + n.replace(File.separator, "-") + ".tmp"; String dest = tmpDir + n.replace(File.separator, "-") + ".java.xml"; - FileInputStream in = new FileInputStream(source); + FileInputStream in = ManagedFileAccess.inStream(source); XmlParser xp = new XmlParser(); Resource r = xp.parse(in); System.err.print("."); JsonParser jp = new JsonParser(); - FileOutputStream out = new FileOutputStream(tmp); + FileOutputStream out = ManagedFileAccess.outStream(tmp); jp.setOutputStyle(OutputStyle.PRETTY); jp.compose(out, r); out.close(); r = null; System.err.print("."); - in = new FileInputStream(tmp); + in = ManagedFileAccess.inStream(tmp); System.err.print(","); r = jp.parse(in); System.err.print("."); - out = new FileOutputStream(dest); + out = ManagedFileAccess.outStream(dest); new XmlParser().compose(out, r, true); System.err.println("!"); out.close(); @@ -423,7 +424,7 @@ public class ToolsHelper { private void executeTest(String[] args) throws Throwable { try { @SuppressWarnings("unchecked") - List lines = FileUtils.readLines(new File(args[1]), "UTF-8"); + List lines = FileUtils.readLines(ManagedFileAccess.file(args[1]), "UTF-8"); String srcDir = lines.get(0); lines.remove(0); String dstDir = lines.get(0).trim(); diff --git a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/support/TestingUtilities.java b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/support/TestingUtilities.java index ea23d05cb..09c950bc7 100644 --- a/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/support/TestingUtilities.java +++ b/org.hl7.fhir.dstu3/src/test/java/org/hl7/fhir/dstu3/test/support/TestingUtilities.java @@ -15,9 +15,10 @@ import javax.xml.parsers.DocumentBuilderFactory; import org.apache.commons.codec.binary.Base64; import org.hl7.fhir.dstu3.context.IWorkerContext; -import org.hl7.fhir.utilities.CSFile; import org.hl7.fhir.utilities.TextFile; 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.tests.BaseTestingUtilities; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -39,7 +40,7 @@ public class TestingUtilities extends BaseTestingUtilities { static public String fixedpath; - public static String home() { + public static String home() throws IOException { if (fixedpath != null) return fixedpath; String s = System.getenv("FHIR_HOME"); @@ -49,7 +50,7 @@ public class TestingUtilities extends BaseTestingUtilities { if (!Utilities.noString(s)) return s; s = "C:\\work\\org.hl7.fhir\\build"; - if (new File(s).exists()) + if (ManagedFileAccess.file(s).exists()) return s; throw new Error("FHIR Home directory not configured"); } @@ -67,7 +68,7 @@ public class TestingUtilities extends BaseTestingUtilities { command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } @@ -171,7 +172,7 @@ public class TestingUtilities extends BaseTestingUtilities { } private static Document loadXml(String fn) throws Exception { - return loadXml(new FileInputStream(fn)); + return loadXml(ManagedFileAccess.inStream(fn)); } private static Document loadXml(InputStream fn) throws Exception { @@ -196,7 +197,7 @@ public class TestingUtilities extends BaseTestingUtilities { command.add("\"" + diff + "\" \"" + f1 + "\" \"" + f2 + "\""); ProcessBuilder builder = new ProcessBuilder(command); - builder.directory(new CSFile(Utilities.path("[tmp]"))); + builder.directory(ManagedFileAccess.csfile(Utilities.path("[tmp]"))); builder.start(); } diff --git a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ConstraintJavaGenerator.java b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ConstraintJavaGenerator.java index d4706419b..519809f76 100644 --- a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ConstraintJavaGenerator.java +++ b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ConstraintJavaGenerator.java @@ -38,6 +38,7 @@ import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.r4.context.IWorkerContext; import org.hl7.fhir.r4.model.StructureDefinition; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class ConstraintJavaGenerator { @@ -63,8 +64,8 @@ public class ConstraintJavaGenerator { + "\" is not a valid Java class name"); return null; } - File destFile = new File(Utilities.path(folder, name + ".java")); - OutputStreamWriter dest = new OutputStreamWriter(new FileOutputStream(destFile), "UTF-8"); + File destFile = ManagedFileAccess.file(Utilities.path(folder, name + ".java")); + OutputStreamWriter dest = new OutputStreamWriter(ManagedFileAccess.outStream(destFile), "UTF-8"); dest.write("package " + packageName + ";\r\n"); dest.write("\r\n"); diff --git a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ProfileComparer.java b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ProfileComparer.java index 60b805190..df0179d52 100644 --- a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ProfileComparer.java +++ b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/ProfileComparer.java @@ -70,6 +70,7 @@ import org.hl7.fhir.utilities.SimpleHTTPClient; import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult; import org.hl7.fhir.utilities.TextFile; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; import org.hl7.fhir.utilities.validation.ValidationMessage; import org.hl7.fhir.utilities.validation.ValidationMessage.Source; @@ -1379,7 +1380,7 @@ public class ProfileComparer { private String cachedFetch(String id, String source) throws IOException { String tmpDir = System.getProperty("java.io.tmpdir"); String local = Utilities.path(tmpDir, id); - File f = new File(local); + File f = ManagedFileAccess.file(local); if (f.exists()) return TextFile.fileToString(f); SimpleHTTPClient http = new SimpleHTTPClient(); diff --git a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/XmlSchemaGenerator.java b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/XmlSchemaGenerator.java index 197d6bc8b..e95d2045c 100644 --- a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/XmlSchemaGenerator.java +++ b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/conformance/XmlSchemaGenerator.java @@ -78,6 +78,7 @@ import org.hl7.fhir.r4.model.StructureDefinition; import org.hl7.fhir.r4.utils.ToolingExtensions; import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; import org.hl7.fhir.utilities.Utilities; +import org.hl7.fhir.utilities.filesystem.ManagedFileAccess; public class XmlSchemaGenerator { @@ -199,7 +200,7 @@ public class XmlSchemaGenerator { } close(); - writer = new OutputStreamWriter(new FileOutputStream(Utilities.path(folder, tail(sd.getType() + ".xsd"))), "UTF-8"); + writer = new OutputStreamWriter(ManagedFileAccess.outStream(Utilities.path(folder, tail(sd.getType() + ".xsd"))), "UTF-8"); ln(""); ln("