From 3611269e4721eb45d54935868130d1a6f52dcb09 Mon Sep 17 00:00:00 2001 From: Riegel Date: Wed, 11 Dec 2024 13:52:52 +0100 Subject: [PATCH] Feat: Add streamCheck function with CityGmlZipEntry --- .../citydoctor2/parser/CityGmlParser.java | 5 +++ .../stuttgart/citydoctor2/check/Checker.java | 31 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/parser/CityGmlParser.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/parser/CityGmlParser.java index 660370bb..025db84c 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/parser/CityGmlParser.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/parser/CityGmlParser.java @@ -292,6 +292,11 @@ public class CityGmlParser { } + public static void streamCityGml(CityGmlZipInputStream cgis, ParserConfiguration config, CityGmlConsumer cityObjectConsumer, + String outputFile) throws CityGmlParseException { + return; + } + public static void streamCityGml(String file, ParserConfiguration config, CityGmlConsumer cityObjectConsumer, String outputFile) throws CityGmlParseException { Path f = Paths.get(file); diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java index 2e33ed82..f1823ed8 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java @@ -48,6 +48,8 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.sax.SAXResult; import javax.xml.transform.stream.StreamSource; +import de.hft.stuttgart.citydoctor2.zip.CityGmlZipEntry; +import de.hft.stuttgart.citydoctor2.zip.CityGmlZipInputStream; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -740,6 +742,35 @@ public class Checker { return hasUnusedDependency; } + public static void streamCheck (CityGmlZipEntry entry, String xmlOutput, String pdfOutput, ValidationConfiguration config, + String outputFile) throws IOException, CityGmlParseException{ + try (BufferedOutputStream xmlBos = getXmlOutputMaybe(xmlOutput); + BufferedOutputStream pdfBos = getPdfOutputMaybe(pdfOutput)) { + Checker c = new Checker(config, null); + String fileName = entry.getFileName(); + + // create reporter if available + XmlStreamReporter xmlReporter = getXmlReporter(config, xmlBos, fileName); + PdfStreamReporter pdfReporter = getPdfReporter(config, pdfBos, fileName); + + // execute schematron first + try (CityGmlZipInputStream cgis = new CityGmlZipInputStream(entry)) { + SvrlContentHandler handler = executeSchematronValidationIfAvailable(config, cgis.getInputStream()); + + CityGmlConsumer con = new StreamCityGmlConsumer(c, xmlReporter, pdfReporter, handler, config, null); + // parse and validate + CityGmlParser.streamCityGml(cgis, config.getParserConfiguration(), con, outputFile); + + // write reports if available + writeReport(xmlReporter); + writeReport(pdfReporter); + } + } catch (CheckReportWriteException e) { + logger.error(Localization.getText("Checker.failReports"), e); + } + } + + public static void streamCheck(File inputFile, String xmlOutput, String pdfOutput, ValidationConfiguration config, String outputFile) throws IOException, CityGmlParseException { streamCheck(inputFile, xmlOutput, pdfOutput, config, null, outputFile); -- GitLab