001package org.hl7.fhir.r4.elementmodel; 002 003import java.io.File; 004import java.io.FileInputStream; 005import java.io.FileOutputStream; 006import java.util.Map.Entry; 007 008import org.hl7.fhir.r4.context.IWorkerContext; 009import org.hl7.fhir.r4.context.SimpleWorkerContext; 010import org.hl7.fhir.r4.elementmodel.Manager.FhirFormat; 011import org.hl7.fhir.r4.formats.IParser.OutputStyle; 012import org.hl7.fhir.utilities.TextFile; 013import org.hl7.fhir.utilities.Utilities; 014 015import com.google.gson.JsonArray; 016import com.google.gson.JsonElement; 017import com.google.gson.JsonObject; 018 019public class Tester { 020 021 public static void main(String[] args) throws Exception { 022 IWorkerContext context = SimpleWorkerContext.fromPack(Utilities.path("C:\\work\\org.hl7.fhir\\build\\publish", "validation-min.xml.zip")); 023 int t = 0; 024 int ok = 0; 025 for (String f : new File("C:\\work\\org.hl7.fhir\\build\\publish").list()) { 026 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()) { 027// if (f.equals("account-questionnaire.xml")) { 028 System.out.print("convert "+f); 029// Manager.convert(context, new FileInputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML, 030// new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json")), FhirFormat.JSON, OutputStyle.PRETTY); 031// String src = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.json"))); 032// String tgt = normalise(TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".json"))); 033 Element e = Manager.parse(context, new FileInputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+f), FhirFormat.XML); 034 Manager.compose(context, e, new FileOutputStream("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.ttl")), FhirFormat.TURTLE, OutputStyle.PRETTY, null); 035 Manager.compose(context, e, new FileOutputStream("C:\\temp\\resource.xml"), FhirFormat.XML, OutputStyle.PRETTY, null); 036 String src = TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".mm.ttl")); 037 String tgt = TextFile.fileToString("C:\\work\\org.hl7.fhir\\build\\publish\\"+Utilities.changeFileExt(f, ".ttl")); 038 t++; 039 if (src.equals(tgt)) { 040 System.out.println(".. ok"); 041 ok++; 042 } else 043 System.out.println(".. fail"); 044 } 045// } 046 } 047 System.out.println("done - "+Integer.toString(t)+" files, "+Integer.toString(ok)+" ok"); 048 } 049 050 private static com.google.gson.JsonParser parser = new com.google.gson.JsonParser(); 051 052 private static String normalise(String s) { 053 JsonObject json = parser.parse(s).getAsJsonObject(); 054 JsonElement txt = json.get("text"); 055 if (txt != null) { 056 if (((JsonObject) txt).has("div")) 057 ((JsonObject) txt).remove("div"); 058 } 059 removeComments(json); 060 return json.toString(); 061 } 062 063 private static void removeComments(JsonArray arr) { 064 for (JsonElement i : arr) { 065 if (i instanceof JsonObject) 066 removeComments((JsonObject) i); 067 if (i instanceof JsonArray) 068 removeComments((JsonArray) i); 069 } 070 } 071 072 private static void removeComments(JsonObject json) { 073 if (json.has("fhir_comments")) 074 json.remove("fhir_comments"); 075 for (Entry<String, JsonElement> p : json.entrySet()) { 076 if (p.getValue() instanceof JsonObject) 077 removeComments((JsonObject) p.getValue()); 078 if (p.getValue() instanceof JsonArray) 079 removeComments((JsonArray) p.getValue()); 080 } 081 082 } 083 084}