Commit 7ebb95c1 authored by Matthias Betz's avatar Matthias Betz
Browse files

Merge branch 'dev'

parents 84d3169f 75c0e581
Pipeline #7499 passed with stage
in 1 minute and 13 seconds
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>zip</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>app</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/assembly/win</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>start.bat</include>
</includes>
<filtered>true</filtered>
</fileSet>
<fileSet>
<directory>${project.basedir}/src/assembly/common</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>testConfigWithStreaming.yml</include>
<include>REKaiserwall.gml</include>
<include>checkForSolid.xml</include>
</includes>
<filtered>false</filtered>
</fileSet>
<fileSet>
<directory>${project.build.directory}/jre/jre-win/runtime/${win-jre}/</directory>
<outputDirectory>/runtime</outputDirectory>
<includes>
<include>**/*</include>
</includes>
<filtered>false</filtered>
</fileSet>
</fileSets>
</assembly>
\ No newline at end of file
"runtime/bin/java.exe" -classpath app/*;plugin/* de.hft.stuttgart.citydoctor2.CityDoctorValidation -in REKaiserwall.gml -config testConfigWithStreaming.yml -xmlReport output.xml
pause
\ No newline at end of file
...@@ -176,7 +176,7 @@ public class CityDoctorValidation { ...@@ -176,7 +176,7 @@ public class CityDoctorValidation {
Checker c = new Checker(config, model); Checker c = new Checker(config, model);
c.runChecks(xmlOutput, pdfOutput, null); c.runChecks(xmlOutput, pdfOutput, null);
if (outputFile != null) { if (outputFile != null) {
model.saveAs(outputFile); model.saveAs(outputFile, true);
} }
} }
} }
......
...@@ -38,18 +38,21 @@ import java.util.Set; ...@@ -38,18 +38,21 @@ import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.xml.XMLConstants; import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Result;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source; import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.URIResolver; import javax.xml.transform.URIResolver;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource; import javax.xml.transform.stream.StreamSource;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.w3c.dom.Document;
import de.hft.stuttgart.citydoctor2.check.error.AttributeInvalidError;
import de.hft.stuttgart.citydoctor2.check.error.AttributeMissingError; import de.hft.stuttgart.citydoctor2.check.error.AttributeMissingError;
import de.hft.stuttgart.citydoctor2.check.error.AttributeValueWrongError; import de.hft.stuttgart.citydoctor2.check.error.AttributeValueWrongError;
import de.hft.stuttgart.citydoctor2.check.error.SchematronError; import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
...@@ -84,15 +87,6 @@ import de.hft.stuttgart.quality.model.properties.RequirementProperty; ...@@ -84,15 +87,6 @@ import de.hft.stuttgart.quality.model.properties.RequirementProperty;
import de.hft.stuttgart.quality.model.types.Checking; import de.hft.stuttgart.quality.model.types.Checking;
import de.hft.stuttgart.quality.model.types.Parameter; import de.hft.stuttgart.quality.model.types.Parameter;
import de.hft.stuttgart.quality.model.types.ValidationPlan; import de.hft.stuttgart.quality.model.types.ValidationPlan;
import net.sf.saxon.lib.ResourceResolverWrappingURIResolver;
import net.sf.saxon.s9api.DOMDestination;
import net.sf.saxon.s9api.Destination;
import net.sf.saxon.s9api.Processor;
import net.sf.saxon.s9api.SAXDestination;
import net.sf.saxon.s9api.SaxonApiException;
import net.sf.saxon.s9api.XsltCompiler;
import net.sf.saxon.s9api.XsltExecutable;
import net.sf.saxon.s9api.XsltTransformer;
/** /**
* The main container class for checking. It contains the logic for validation, * The main container class for checking. It contains the logic for validation,
...@@ -233,9 +227,11 @@ public class Checker { ...@@ -233,9 +227,11 @@ public class Checker {
for (SchematronError se : v) { for (SchematronError se : v) {
CheckError err; CheckError err;
if (AttributeMissingError.ID.getIdString().equals(se.getErrorIdString())) { if (AttributeMissingError.ID.getIdString().equals(se.getErrorIdString())) {
err = new AttributeMissingError(co, se.getChildId(), se.getNameOfAttribute(), se.isGeneric()); err = new AttributeMissingError(co, se.getChildId(), se.getNameOfAttribute());
} else if (AttributeValueWrongError.ID.getIdString().equals(se.getErrorIdString())) { } else if (AttributeValueWrongError.ID.getIdString().equals(se.getErrorIdString())) {
err = new AttributeValueWrongError(co, se.getChildId(), se.getNameOfAttribute(), se.isGeneric()); err = new AttributeValueWrongError(co, se.getChildId(), se.getNameOfAttribute());
} else if (AttributeInvalidError.ID.getIdString().equals(se.getErrorIdString())) {
err = new AttributeInvalidError(co, se.getChildId(), se.getNameOfAttribute());
} else { } else {
throw new IllegalStateException( throw new IllegalStateException(
"Unknown error ID was given in schematron file: " + se.getErrorIdString()); "Unknown error ID was given in schematron file: " + se.getErrorIdString());
...@@ -316,7 +312,7 @@ public class Checker { ...@@ -316,7 +312,7 @@ public class Checker {
} }
private de.hft.stuttgart.quality.model.types.Filter createFilter() { private de.hft.stuttgart.quality.model.types.Filter createFilter() {
var filter = new de.hft.stuttgart.quality.model.types.Filter(); var filter = new de.hft.stuttgart.quality.model.types.Filter();
handleInputFilter(filter); handleInputFilter(filter);
if (excludeFilters != null) { if (excludeFilters != null) {
for (Filter f : excludeFilters) { for (Filter f : excludeFilters) {
...@@ -364,11 +360,11 @@ public class Checker { ...@@ -364,11 +360,11 @@ public class Checker {
Checking buildingChecking = new Checking(); Checking buildingChecking = new Checking();
buildingChecking.setFeatureType(TopLevelFeatureType.BUILDING); buildingChecking.setFeatureType(TopLevelFeatureType.BUILDING);
filter.getChecking().add(new CheckingProperty(buildingChecking)); filter.getChecking().add(new CheckingProperty(buildingChecking));
Checking bridgeChecking = new Checking(); Checking bridgeChecking = new Checking();
bridgeChecking.setFeatureType(TopLevelFeatureType.BRIDGE); bridgeChecking.setFeatureType(TopLevelFeatureType.BRIDGE);
filter.getChecking().add(new CheckingProperty(bridgeChecking)); filter.getChecking().add(new CheckingProperty(bridgeChecking));
Checking landChecking = new Checking(); Checking landChecking = new Checking();
landChecking.setFeatureType(TopLevelFeatureType.LAND); landChecking.setFeatureType(TopLevelFeatureType.LAND);
filter.getChecking().add(new CheckingProperty(landChecking)); filter.getChecking().add(new CheckingProperty(landChecking));
...@@ -443,54 +439,47 @@ public class Checker { ...@@ -443,54 +439,47 @@ public class Checker {
if (logger.isInfoEnabled()) { if (logger.isInfoEnabled()) {
logger.info(Localization.getText("Checker.schematronValidation")); logger.info(Localization.getText("Checker.schematronValidation"));
} }
Processor processor = new Processor(false);
XsltCompiler xsltCompiler = processor.newXsltCompiler();
xsltCompiler.setResourceResolver(new ResourceResolverWrappingURIResolver(new URIResolver() {
@Override
public Source resolve(String href, String base) throws TransformerException {
return new StreamSource(Checker.class.getResourceAsStream(href));
}
}));
try { try {
XsltExecutable includeExecutable = xsltCompiler TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", Checker.class.getClassLoader());
.compile(new StreamSource(Checker.class.getResourceAsStream("iso_dsdl_include.xsl"))); transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
XsltTransformer includeTransformer = includeExecutable.load(); transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
includeTransformer.setSource(new StreamSource(new File(config.getSchematronFilePath())));
transformerFactory.setURIResolver(new URIResolver() {
XsltExecutable expandExecutable = xsltCompiler
.compile(new StreamSource(Checker.class.getResourceAsStream("iso_abstract_expand.xsl"))); @Override
XsltTransformer expandTransformer = expandExecutable.load(); public Source resolve(String href, String base) throws TransformerException {
includeTransformer.setDestination(expandTransformer); return new StreamSource(Checker.class.getResourceAsStream(href));
}
XsltExecutable xslt2Executable = xsltCompiler });
.compile(new StreamSource(Checker.class.getResourceAsStream("iso_svrl_for_xslt2.xsl")));
Source dsdlXslSource = new StreamSource(Checker.class.getResourceAsStream("iso_dsdl_include.xsl"));
XsltTransformer xslt2Transformer = xslt2Executable.load(); Transformer dsdlXslTransformer = transformerFactory.newTransformer(dsdlXslSource);
expandTransformer.setDestination(xslt2Transformer);
DOMResult dsdlXslResult = new DOMResult();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); dsdlXslTransformer.transform(new StreamSource(new File(config.getSchematronFilePath())), dsdlXslResult);
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); Source abstractExpandXsl = new StreamSource(Checker.class.getResourceAsStream("iso_abstract_expand.xsl"));
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); Transformer abstractExpandTransformer = transformerFactory.newTransformer(abstractExpandXsl);
Document doc = factory.newDocumentBuilder().newDocument();
DOMDestination domDestination = new DOMDestination(doc); DOMResult abstractExpandResult = new DOMResult();
xslt2Transformer.setDestination(domDestination); abstractExpandTransformer.transform(new DOMSource(dsdlXslResult.getNode()), abstractExpandResult);
includeTransformer.transform();
Source svrlXslSource = new StreamSource(Checker.class.getResourceAsStream("iso_svrl_for_xslt2.xsl"));
XsltExecutable schematronExecutable = xsltCompiler.compile(new DOMSource(doc)); Transformer svrlTransformer = transformerFactory.newTransformer(svrlXslSource);
XsltTransformer schematronTransformer = schematronExecutable.load();
schematronTransformer.setSource(new StreamSource(in)); DOMResult schematronXsltResult = new DOMResult();
svrlTransformer.transform(new DOMSource(abstractExpandResult.getNode()), schematronXsltResult);
Transformer schematronTransformer = transformerFactory.newTransformer(new DOMSource(schematronXsltResult.getNode()));
Source cityGmlSource = new StreamSource(in);
SvrlContentHandler handler = new SvrlContentHandler(); SvrlContentHandler handler = new SvrlContentHandler();
Destination dest = new SAXDestination(handler); Result finalResult = new SAXResult(handler);
schematronTransformer.setDestination(dest);
schematronTransformer.transform(); schematronTransformer.transform(cityGmlSource, finalResult);
if (logger.isInfoEnabled()) {
logger.info(Localization.getText("Checker.finishedSchematron"));
}
return handler; return handler;
} catch (SaxonApiException | ParserConfigurationException e) { } catch (TransformerException e) {
logger.catching(e); logger.catching(e);
} }
} }
......
...@@ -34,6 +34,7 @@ import org.apache.logging.log4j.Logger; ...@@ -34,6 +34,7 @@ import org.apache.logging.log4j.Logger;
import org.citygml4j.core.model.core.AbstractFeatureProperty; import org.citygml4j.core.model.core.AbstractFeatureProperty;
import org.citygml4j.core.model.core.CityModel; import org.citygml4j.core.model.core.CityModel;
import org.citygml4j.core.util.geometry.GeometryFactory; import org.citygml4j.core.util.geometry.GeometryFactory;
import org.xmlobjects.gml.model.base.Reference;
import de.hft.stuttgart.citydoctor2.check.error.SchematronError; import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import de.hft.stuttgart.citydoctor2.checks.SvrlContentHandler; import de.hft.stuttgart.citydoctor2.checks.SvrlContentHandler;
...@@ -53,10 +54,10 @@ import de.hft.stuttgart.citydoctor2.utils.QualityADEUtils; ...@@ -53,10 +54,10 @@ import de.hft.stuttgart.citydoctor2.utils.QualityADEUtils;
import de.hft.stuttgart.quality.model.properties.ErrorProperty; import de.hft.stuttgart.quality.model.properties.ErrorProperty;
import de.hft.stuttgart.quality.model.properties.FeatureStatisticsProperty; import de.hft.stuttgart.quality.model.properties.FeatureStatisticsProperty;
import de.hft.stuttgart.quality.model.properties.StatisticsProperty; import de.hft.stuttgart.quality.model.properties.StatisticsProperty;
import de.hft.stuttgart.quality.model.properties.ValidationPlanProperty;
import de.hft.stuttgart.quality.model.types.FeatureStatistics; import de.hft.stuttgart.quality.model.types.FeatureStatistics;
import de.hft.stuttgart.quality.model.types.Statistics; import de.hft.stuttgart.quality.model.types.Statistics;
import de.hft.stuttgart.quality.model.types.Validation; import de.hft.stuttgart.quality.model.types.Validation;
import de.hft.stuttgart.quality.model.types.ValidationPlan;
public class StreamCityGmlConsumer implements CityGmlConsumer { public class StreamCityGmlConsumer implements CityGmlConsumer {
...@@ -180,7 +181,11 @@ public class StreamCityGmlConsumer implements CityGmlConsumer { ...@@ -180,7 +181,11 @@ public class StreamCityGmlConsumer implements CityGmlConsumer {
statistics.getErrors().add(new ErrorProperty(stats)); statistics.getErrors().add(new ErrorProperty(stats));
} }
val.setStatistics(new StatisticsProperty(statistics)); val.setStatistics(new StatisticsProperty(statistics));
val.setValidationPlan(new ValidationPlanProperty(c.createValidationPlan())); ValidationPlan validationPlan = c.createValidationPlan();
validationPlan.setId("CD_PLAN_" + UUID.randomUUID().toString());
cm.getFeatureMembers().add(new AbstractFeatureProperty(validationPlan));
val.setValidationPlan(new Reference(validationPlan));
cm.getFeatureMembers().add(new AbstractFeatureProperty(val)); cm.getFeatureMembers().add(new AbstractFeatureProperty(val));
} }
......
...@@ -105,7 +105,7 @@ public class SvrlContentHandler implements ContentHandler { ...@@ -105,7 +105,7 @@ public class SvrlContentHandler implements ContentHandler {
if (nextIsTextContent && "text".equals(localName)) { if (nextIsTextContent && "text".equals(localName)) {
String text = buffer.toString(); String text = buffer.toString();
String[] split = text.split("\\|\\|"); String[] split = text.split("\\|\\|");
if (split.length != 5) { if (split.length != 4) {
throw new IllegalStateException( throw new IllegalStateException(
"Schematron File is not formed according to specification for CityDoctor."); "Schematron File is not formed according to specification for CityDoctor.");
} }
...@@ -113,8 +113,7 @@ public class SvrlContentHandler implements ContentHandler { ...@@ -113,8 +113,7 @@ public class SvrlContentHandler implements ContentHandler {
String childId = split[1]; String childId = split[1];
String errorId = split[2]; String errorId = split[2];
String nameOfAttribute = split[3]; String nameOfAttribute = split[3];
boolean generic = Boolean.parseBoolean(split[4]); SchematronError err = new SchematronError(errorId, gmlId, childId, nameOfAttribute);
SchematronError err = new SchematronError(errorId, gmlId, childId, nameOfAttribute, generic);
if (gmlId == null || gmlId.isEmpty()) { if (gmlId == null || gmlId.isEmpty()) {
// general error // general error
generalErrors.add(err); generalErrors.add(err);
......
...@@ -5,13 +5,13 @@ ...@@ -5,13 +5,13 @@
<pattern> <pattern>
<rule context="//*:Building"> <rule context="//*:Building">
<assert test="count(*:lod2Solid) = 1"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||lod1Solid||false</assert> <assert test="count(*:lod2Solid) = 1"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||lod1Solid</assert>
<assert test="count(*:yearOfConstruction) &gt;= 1"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||yearOfConstruction||false</assert> <assert test="count(*:yearOfConstruction) &gt;= 1"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||yearOfConstruction</assert>
<assert test="count(*:function) = 1"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||function||false</assert> <assert test="count(*:function) = 1"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_MISSING||function</assert>
<assert test="*:doubleAttribute[@name = 'Volume'] &gt; 0 and *:doubleAttribute[@name = 'Volume'] &lt; 5000"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_WRONG_VALUE||volume||true</assert> <assert test="*:doubleAttribute[@name = 'Volume'] &gt; 0 and *:doubleAttribute[@name = 'Volume'] &lt; 5000"><value-of select="@gml:id | @id"/>||||SE_ATTRIBUTE_WRONG_VALUE||volume</assert>
</rule> </rule>
<rule context="//*:Building//*:RoofSurface"> <rule context="//*:Building//*:RoofSurface">
<assert test="count(function) = 1"><value-of select="ancestor::*:Building/@*:id"/>||<value-of select="@gml:id | @id"/>||SE_ATTRIBUTE_MISSING||function||false</assert> <assert test="count(function) = 1"><value-of select="ancestor::*:Building/@*:id"/>||<value-of select="@gml:id | @id"/>||SE_ATTRIBUTE_MISSING||function</assert>
</rule> </rule>
</pattern> </pattern>
</schema> </schema>
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Jun 11 11:29:09 CEST 2021
citygml4j-quality-ade-0.1.3.jar>=
citygml4j-quality-ade-0.1.3.pom>=
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.hft.stuttgart</groupId>
<artifactId>citygml4j-quality-ade</artifactId>
<version>0.1.3</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.citygml4j/citygml4j -->
<dependency>
<groupId>org.citygml4j</groupId>
<artifactId>citygml4j</artifactId>
<version>2.10.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice. #NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Tue Jul 12 12:41:10 CEST 2022 #Fri Mar 31 09:20:06 CEST 2023
citygml4j-quality-ade-3.1.4.jar>= citygml4j-quality-ade-3.2.0.jar>=
citygml4j-quality-ade-3.1.4.pom>= citygml4j-quality-ade-3.2.0.pom>=
...@@ -4,12 +4,12 @@ ...@@ -4,12 +4,12 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>citygml4j-quality-ade</artifactId> <artifactId>citygml4j-quality-ade</artifactId>
<version>3.1.4</version> <version>3.2.0</version>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>11</maven.compiler.target>
</properties> </properties>
<dependencies> <dependencies>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.12.0</version> <version>3.13.0</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>CityDoctorParent</name> <name>CityDoctorParent</name>
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<log4j.version>2.18.0</log4j.version>
<revision>${project.version}</revision> <revision>${project.version}</revision>
<nonMavenLibsPath>${project.baseUri}../non-maven-libs</nonMavenLibsPath> <nonMavenLibsPath>${project.baseUri}../non-maven-libs</nonMavenLibsPath>
</properties> </properties>
...@@ -42,6 +43,22 @@ ...@@ -42,6 +43,22 @@
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>17.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-swing -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>17.0.2</version>
</dependency>
<dependency> <dependency>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorModel</artifactId> <artifactId>CityDoctorModel</artifactId>
...@@ -81,8 +98,8 @@ ...@@ -81,8 +98,8 @@
<dependency> <dependency>
<groupId>net.sf.saxon</groupId> <groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId> <artifactId>Saxon-HE</artifactId>
<version>11.3</version> <version>12.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
...@@ -92,17 +109,17 @@ ...@@ -92,17 +109,17 @@
<dependency> <dependency>
<groupId>org.citygml4j</groupId> <groupId>org.citygml4j</groupId>
<artifactId>citygml4j-core</artifactId> <artifactId>citygml4j-core</artifactId>
<version>3.0.0-rc.4</version> <version>3.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.citygml4j</groupId> <groupId>org.citygml4j</groupId>
<artifactId>citygml4j-xml</artifactId> <artifactId>citygml4j-xml</artifactId>
<version>3.0.0-rc.4</version> <version>3.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>citygml4j-quality-ade</artifactId> <artifactId>citygml4j-quality-ade</artifactId>
<version>3.1.4</version> <version>3.2.0</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.xmlgraphics/fop --> <!-- https://mvnrepository.com/artifact/org.apache.xmlgraphics/fop -->
<dependency> <dependency>
...@@ -144,13 +161,13 @@ ...@@ -144,13 +161,13 @@
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId> <artifactId>log4j-api</artifactId>
<version>2.17.2</version> <version>${log4j.version}</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId> <artifactId>log4j-core</artifactId>
<version>2.17.2</version> <version>${log4j.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.yaml</groupId> <groupId>org.yaml</groupId>
...@@ -161,7 +178,7 @@ ...@@ -161,7 +178,7 @@
<dependency> <dependency>
<groupId>org.apache.logging.log4j</groupId> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j18-impl</artifactId> <artifactId>log4j-slf4j18-impl</artifactId>
<version>2.17.2</version> <version>${log4j.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.locationtech.proj4j</groupId> <groupId>org.locationtech.proj4j</groupId>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment