Commit 97a65114 authored by Riegel's avatar Riegel
Browse files

Merge branch 'dev' into 'master'

Version 3.15.0

See merge request !8
parents 99c8f6a8 5950ea5f
Pipeline #10106 passed with stage
in 3 minutes and 15 seconds
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
*/ */
package de.hft.stuttgart.citydoctor2.parser; package de.hft.stuttgart.citydoctor2.parser;
import java.io.Serial;
/** /**
* Used when an invalid CityGML file is found. * Used when an invalid CityGML file is found.
* *
...@@ -26,6 +28,7 @@ package de.hft.stuttgart.citydoctor2.parser; ...@@ -26,6 +28,7 @@ package de.hft.stuttgart.citydoctor2.parser;
*/ */
public class InvalidGmlFileException extends Exception { public class InvalidGmlFileException extends Exception {
@Serial
private static final long serialVersionUID = 5490585939707730933L; private static final long serialVersionUID = 5490585939707730933L;
public InvalidGmlFileException() { public InvalidGmlFileException() {
......
...@@ -37,10 +37,10 @@ import java.util.ArrayList; ...@@ -37,10 +37,10 @@ import java.util.ArrayList;
public class ObservedInputStream extends FilterInputStream { public class ObservedInputStream extends FilterInputStream {
/** List of registered progress listeners. */ /** List of registered progress listeners. */
private ArrayList<InputStreamListener> listeners = new ArrayList<>(); private final ArrayList<InputStreamListener> listeners = new ArrayList<>();
/** The number of bytes of the file to be read. */ /** The number of bytes of the file to be read. */
private long fileLength; private final long fileLength;
/** The number of bytes read so far. */ /** The number of bytes read so far. */
private long location; private long location;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.parser; package de.hft.stuttgart.citydoctor2.parser;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import org.locationtech.proj4j.BasicCoordinateTransform; import org.locationtech.proj4j.BasicCoordinateTransform;
...@@ -33,13 +34,14 @@ import org.locationtech.proj4j.CoordinateReferenceSystem; ...@@ -33,13 +34,14 @@ import org.locationtech.proj4j.CoordinateReferenceSystem;
*/ */
public class ParserConfiguration implements Serializable { public class ParserConfiguration implements Serializable {
@Serial
private static final long serialVersionUID = 6209047092991074661L; private static final long serialVersionUID = 6209047092991074661L;
private static final CRSFactory CRS_FACTORY = new CRSFactory(); private static final CRSFactory CRS_FACTORY = new CRSFactory();
private int roundingPlaces = 8; private final int roundingPlaces ;
private boolean validate = false; private final boolean validate;
private transient BasicCoordinateTransform targetTransform = null; private transient BasicCoordinateTransform targetTransform = null;
private transient BasicCoordinateTransform originalTransform = null; private transient BasicCoordinateTransform originalTransform = null;
...@@ -89,8 +91,8 @@ public class ParserConfiguration implements Serializable { ...@@ -89,8 +91,8 @@ public class ParserConfiguration implements Serializable {
} }
private void createCoordinateTransforms() { private void createCoordinateTransforms() {
CoordinateReferenceSystem tgtCrs = null; CoordinateReferenceSystem tgtCrs ;
CoordinateReferenceSystem crs = null; CoordinateReferenceSystem crs;
synchronized (CRS_FACTORY) { synchronized (CRS_FACTORY) {
tgtCrs = CRS_FACTORY.createFromParameters("Target", targetTransformString); tgtCrs = CRS_FACTORY.createFromParameters("Target", targetTransformString);
crs = CRS_FACTORY.createFromParameters("Original", originalTransformString); crs = CRS_FACTORY.createFromParameters("Original", originalTransformString);
......
...@@ -36,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; ...@@ -36,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
*/ */
public class Primitive { public class Primitive {
private static Logger logger = LogManager.getLogger(Primitive.class); private static final Logger logger = LogManager.getLogger(Primitive.class);
private static final double AREA_EPSILON = 0.00001; private static final double AREA_EPSILON = 0.00001;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.tesselation; package de.hft.stuttgart.citydoctor2.tesselation;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -35,10 +36,11 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; ...@@ -35,10 +36,11 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
*/ */
public class TesselatedPolygon implements Serializable { public class TesselatedPolygon implements Serializable {
@Serial
private static final long serialVersionUID = 3117655580899570369L; private static final long serialVersionUID = 3117655580899570369L;
private List<Triangle3d> triangles; private final List<Triangle3d> triangles;
private Polygon original; private final Polygon original;
public TesselatedPolygon(List<Triangle3d> triangles, Polygon original) { public TesselatedPolygon(List<Triangle3d> triangles, Polygon original) {
this.triangles = triangles; this.triangles = triangles;
...@@ -54,7 +56,7 @@ public class TesselatedPolygon implements Serializable { ...@@ -54,7 +56,7 @@ public class TesselatedPolygon implements Serializable {
} }
triangles = new ArrayList<>(); triangles = new ArrayList<>();
for (int i = 0; i < indices.size(); i = i + 3) { for (int i = 0; i < indices.size(); i = i + 3) {
Vector3d v1 = vertices.get(indices.get(i + 0)); Vector3d v1 = vertices.get(indices.get(i));
Vector3d v2 = vertices.get(indices.get(i + 1)); Vector3d v2 = vertices.get(indices.get(i + 1));
Vector3d v3 = vertices.get(indices.get(i + 2)); Vector3d v3 = vertices.get(indices.get(i + 2));
triangles.add(new Triangle3d(v1, v2, v3, this)); triangles.add(new Triangle3d(v1, v2, v3, this));
......
...@@ -34,8 +34,8 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; ...@@ -34,8 +34,8 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
*/ */
public class TesselatedRing { public class TesselatedRing {
private List<Triangle3d> triangles; private final List<Triangle3d> triangles;
private LinearRing ring; private final LinearRing ring;
public TesselatedRing(List<Triangle3d> triangles, LinearRing ring) { public TesselatedRing(List<Triangle3d> triangles, LinearRing ring) {
this.ring = ring; this.ring = ring;
...@@ -48,7 +48,7 @@ public class TesselatedRing { ...@@ -48,7 +48,7 @@ public class TesselatedRing {
} }
triangles = new ArrayList<>(); triangles = new ArrayList<>();
for (int i = 0; i < indices.size(); i = i + 3) { for (int i = 0; i < indices.size(); i = i + 3) {
Vector3d v1 = vertices.get(indices.get(i + 0)); Vector3d v1 = vertices.get(indices.get(i));
Vector3d v2 = vertices.get(indices.get(i + 1)); Vector3d v2 = vertices.get(indices.get(i + 1));
Vector3d v3 = vertices.get(indices.get(i + 2)); Vector3d v3 = vertices.get(indices.get(i + 2));
triangles.add(new Triangle3d(v1, v2, v3)); triangles.add(new Triangle3d(v1, v2, v3));
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
*/ */
package de.hft.stuttgart.citydoctor2.tesselation; package de.hft.stuttgart.citydoctor2.tesselation;
import java.io.Serial;
/** /**
* Thrown when something went wrong with the tesselation process. * Thrown when something went wrong with the tesselation process.
* *
...@@ -43,6 +45,7 @@ public class TesselationException extends RuntimeException { ...@@ -43,6 +45,7 @@ public class TesselationException extends RuntimeException {
super(cause); super(cause);
} }
@Serial
private static final long serialVersionUID = -2010522579830781136L; private static final long serialVersionUID = -2010522579830781136L;
public TesselationException(String message) { public TesselationException(String message) {
......
...@@ -18,6 +18,10 @@ ...@@ -18,6 +18,10 @@
*/ */
package de.hft.stuttgart.citydoctor2.utils; package de.hft.stuttgart.citydoctor2.utils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
...@@ -26,6 +30,8 @@ import java.io.ObjectOutputStream; ...@@ -26,6 +30,8 @@ import java.io.ObjectOutputStream;
public class Copy { public class Copy {
private static final Logger logger = LogManager.getLogger(Copy.class);
private Copy() { private Copy() {
} }
...@@ -41,16 +47,11 @@ public class Copy { ...@@ -41,16 +47,11 @@ public class Copy {
ByteArrayInputStream in = new ByteArrayInputStream(byteArray); ByteArrayInputStream in = new ByteArrayInputStream(byteArray);
ObjectInputStream ois = new ObjectInputStream(in); ObjectInputStream ois = new ObjectInputStream(in);
return (T) ois.readObject(); return (T) ois.readObject();
} catch (IOException e) { } catch (IOException | ClassNotFoundException e) {
e.printStackTrace(); logger.log(Level.ERROR, e.getMessage(), e);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} }
throw new IllegalStateException(); throw new IllegalStateException();
// CopyHandler handler = new CopyHandler();
// return handler.copy(original);
} }
} }
...@@ -29,8 +29,8 @@ import java.util.Set; ...@@ -29,8 +29,8 @@ import java.util.Set;
public class CopyHandler { public class CopyHandler {
private Set<Copyable> toBeDoneInstances = new HashSet<>(); private final Set<Copyable> toBeDoneInstances = new HashSet<>();
private Map<Copyable, Copyable> finishedInstances = new IdentityHashMap<>(); private final Map<Copyable, Copyable> finishedInstances = new IdentityHashMap<>();
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <T extends Copyable> T copy(T original) { public <T extends Copyable> T copy(T original) {
......
...@@ -30,7 +30,7 @@ public class Localization { ...@@ -30,7 +30,7 @@ public class Localization {
public static final String VERSION = "CityDoctorValidation.Version"; public static final String VERSION = "CityDoctorValidation.Version";
private static ResourceBundle bundle; private static final ResourceBundle bundle;
static { static {
bundle = ResourceBundle.getBundle("CityDoctorLocalization"); bundle = ResourceBundle.getBundle("CityDoctorLocalization");
......
...@@ -28,8 +28,8 @@ package de.hft.stuttgart.citydoctor2.utils; ...@@ -28,8 +28,8 @@ package de.hft.stuttgart.citydoctor2.utils;
*/ */
public class Pair<A, B> { public class Pair<A, B> {
private A a; private final A a;
private B b; private final B b;
public Pair(A a, B b) { public Pair(A a, B b) {
this.a = a; this.a = a;
...@@ -78,14 +78,9 @@ public class Pair<A, B> { ...@@ -78,14 +78,9 @@ public class Pair<A, B> {
return false; return false;
} }
if (b == null) { if (b == null) {
if (other.b != null) { return other.b == null;
return false; } else return b.equals(other.b);
} }
} else if (!b.equals(other.b)) {
return false;
}
return true;
}
@Override @Override
public String toString() { public String toString() {
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.utils; package de.hft.stuttgart.citydoctor2.utils;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
...@@ -33,13 +34,14 @@ import de.hft.stuttgart.citydoctor2.math.Segment3d; ...@@ -33,13 +34,14 @@ import de.hft.stuttgart.citydoctor2.math.Segment3d;
*/ */
public class PolygonIntersection implements Serializable { public class PolygonIntersection implements Serializable {
@Serial
private static final long serialVersionUID = -6301963226688351725L; private static final long serialVersionUID = -6301963226688351725L;
public enum IntersectionType { public enum IntersectionType {
NONE, LINE, POLYGON NONE, LINE, POLYGON
} }
private IntersectionType type; private final IntersectionType type;
private List<Segment3d> lines; private List<Segment3d> lines;
private ConcretePolygon polygon; private ConcretePolygon polygon;
......
...@@ -85,54 +85,39 @@ public class QualityADEUtils { ...@@ -85,54 +85,39 @@ public class QualityADEUtils {
} }
public static de.hft.stuttgart.quality.model.enums.ErrorId mapErrorIdToAdeId(ErrorId key) { public static de.hft.stuttgart.quality.model.enums.ErrorId mapErrorIdToAdeId(ErrorId key) {
switch (key.getIdString()) { return switch (key.getIdString()) {
case "GE_R_NOT_CLOSED": case "GE_R_NOT_CLOSED" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_NOT_CLOSED;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_NOT_CLOSED; case "GE_R_TOO_FEW_POINTS" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_TOO_FEW_POINTS;
case "GE_R_TOO_FEW_POINTS": case "GE_R_CONSECUTIVE_POINTS_SAME" ->
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_TOO_FEW_POINTS; de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_CONSECUTIVE_POINTS_SAME;
case "GE_R_CONSECUTIVE_POINTS_SAME": case "GE_R_SELF_INTERSECTION" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_SELF_INTERSECTION;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_CONSECUTIVE_POINTS_SAME; case "GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION" ->
case "GE_R_SELF_INTERSECTION": de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_R_SELF_INTERSECTION; case "GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE" ->
case "GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION": de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION; case "GE_P_INTERIOR_DISCONNECTED" ->
case "GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE": de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_INTERIOR_DISCONNECTED;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE; case "GE_P_INTERSECTING_RINGS" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_INTERSECTING_RINGS;
case "GE_P_INTERIOR_DISCONNECTED": case "GE_P_HOLE_OUTSIDE" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_HOLE_OUTSIDE;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_INTERIOR_DISCONNECTED; case "GE_P_ORIENTATION_RINGS_SAME" ->
case "GE_P_INTERSECTING_RINGS": de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_ORIENTATION_RINGS_SAME;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_INTERSECTING_RINGS; case "GE_P_INNER_RINGS_NESTED" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_INNER_RINGS_NESTED;
case "GE_P_HOLE_OUTSIDE": case "GE_S_TOO_FEW_POLYGONS" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_TOO_FEW_POLYGONS;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_HOLE_OUTSIDE; case "GE_S_NOT_CLOSED" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_NOT_CLOSED;
case "GE_P_ORIENTATION_RINGS_SAME": case "GE_S_NON_MANIFOLD_EDGE" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_NON_MANIFOLD_EDGE;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_ORIENTATION_RINGS_SAME; case "GE_S_POLYGON_WRONG_ORIENTATION" ->
case "GE_P_INNER_RINGS_NESTED": de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_POLYGON_WRONG_ORIENTATION;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_P_INNER_RINGS_NESTED; case "GE_S_ALL_POLYGONS_WRONG_ORIENTATION" ->
case "GE_S_TOO_FEW_POLYGONS": de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_ALL_POLYGONS_WRONG_ORIENTATION;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_TOO_FEW_POLYGONS; case "GE_S_NON_MANIFOLD_VERTEX" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_NON_MANIFOLD_VERTEX;
case "GE_S_NOT_CLOSED": case "GE_S_SELF_INTERSECTION" -> de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_SELF_INTERSECTION;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_NOT_CLOSED; case "GE_S_MULTIPLE_CONNECTED_COMPONENTS" ->
case "GE_S_NON_MANIFOLD_EDGE": de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_MULTIPLE_CONNECTED_COMPONENTS;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_NON_MANIFOLD_EDGE; case "SE_ATTRIBUTE_WRONG_VALUE" -> de.hft.stuttgart.quality.model.enums.ErrorId.SE_ATTRIBUTE_WRONG_VALUE;
case "GE_S_POLYGON_WRONG_ORIENTATION": case "SE_ATTRIBUTE_MISSING" -> de.hft.stuttgart.quality.model.enums.ErrorId.SE_ATTRIBUTE_MISSING;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_POLYGON_WRONG_ORIENTATION; case "SE_ATTRIBUTE_INVALID" -> de.hft.stuttgart.quality.model.enums.ErrorId.SE_ATTRIBUTE_INVALID;
case "GE_S_ALL_POLYGONS_WRONG_ORIENTATION": default -> null;
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_ALL_POLYGONS_WRONG_ORIENTATION; };
case "GE_S_NON_MANIFOLD_VERTEX":
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_NON_MANIFOLD_VERTEX;
case "GE_S_SELF_INTERSECTION":
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_SELF_INTERSECTION;
case "GE_S_MULTIPLE_CONNECTED_COMPONENTS":
return de.hft.stuttgart.quality.model.enums.ErrorId.GE_S_MULTIPLE_CONNECTED_COMPONENTS;
case "SE_ATTRIBUTE_WRONG_VALUE":
return de.hft.stuttgart.quality.model.enums.ErrorId.SE_ATTRIBUTE_WRONG_VALUE;
case "SE_ATTRIBUTE_MISSING":
return de.hft.stuttgart.quality.model.enums.ErrorId.SE_ATTRIBUTE_MISSING;
case "SE_ATTRIBUTE_INVALID":
return de.hft.stuttgart.quality.model.enums.ErrorId.SE_ATTRIBUTE_INVALID;
default:
return null;
}
} }
} }
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.utils; package de.hft.stuttgart.citydoctor2.utils;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
...@@ -30,10 +31,11 @@ import java.io.Serializable; ...@@ -30,10 +31,11 @@ import java.io.Serializable;
*/ */
public class SerializablePair<A extends Serializable, B extends Serializable> implements Serializable { public class SerializablePair<A extends Serializable, B extends Serializable> implements Serializable {
@Serial
private static final long serialVersionUID = -5307944001963352647L; private static final long serialVersionUID = -5307944001963352647L;
private A a; private final A a;
private B b; private final B b;
public SerializablePair(A a, B b) { public SerializablePair(A a, B b) {
this.a = a; this.a = a;
...@@ -82,14 +84,9 @@ public class SerializablePair<A extends Serializable, B extends Serializable> im ...@@ -82,14 +84,9 @@ public class SerializablePair<A extends Serializable, B extends Serializable> im
return false; return false;
} }
if (b == null) { if (b == null) {
if (other.b != null) { return other.b == null;
return false; } else return b.equals(other.b);
} }
} else if (!b.equals(other.b)) {
return false;
}
return true;
}
@Override @Override
public String toString() { public String toString() {
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>de.hft.stuttgart</groupId> <groupId>de.hft.stuttgart</groupId>
<artifactId>CityDoctorParent</artifactId> <artifactId>CityDoctorParent</artifactId>
<version>3.14.1</version> <version>3.15.0</version>
</parent> </parent>
<artifactId>CityDoctorValidation</artifactId> <artifactId>CityDoctorValidation</artifactId>
<name>CityDoctorValidation</name> <name>CityDoctorValidation</name>
...@@ -65,7 +64,11 @@ ...@@ -65,7 +64,11 @@
<groupId>net.sf.saxon</groupId> <groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId> <artifactId>Saxon-HE</artifactId>
</dependency> </dependency>
</dependencies> <dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
</dependencies>
<build> <build>
<resources> <resources>
<resource> <resource>
......
...@@ -43,7 +43,6 @@ import javax.xml.transform.Source; ...@@ -43,7 +43,6 @@ import javax.xml.transform.Source;
import javax.xml.transform.Transformer; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
import javax.xml.transform.URIResolver;
import javax.xml.transform.dom.DOMResult; 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.sax.SAXResult;
...@@ -105,8 +104,8 @@ public class Checker { ...@@ -105,8 +104,8 @@ public class Checker {
private List<Filter> includeFilters; private List<Filter> includeFilters;
private List<Filter> excludeFilters; private List<Filter> excludeFilters;
private Checks checkConfig; private final Checks checkConfig;
private CityDoctorModel model; private final CityDoctorModel model;
public Checker(CityDoctorModel model) { public Checker(CityDoctorModel model) {
this(ValidationConfiguration.loadStandardValidationConfig(), model); this(ValidationConfiguration.loadStandardValidationConfig(), model);
...@@ -131,7 +130,6 @@ public class Checker { ...@@ -131,7 +130,6 @@ public class Checker {
* given or this checker has not validated anything, nothing is done. * given or this checker has not validated anything, nothing is done.
* *
* @param xmlOutput the output file location for the XML report. Can be null. * @param xmlOutput the output file location for the XML report. Can be null.
* @param model the model for which the report is written.
*/ */
public void writeXmlReport(String xmlOutput) { public void writeXmlReport(String xmlOutput) {
if (!model.isValidated() || xmlOutput == null) { if (!model.isValidated() || xmlOutput == null) {
...@@ -316,8 +314,7 @@ public class Checker { ...@@ -316,8 +314,7 @@ public class Checker {
handleInputFilter(filter); handleInputFilter(filter);
if (excludeFilters != null) { if (excludeFilters != null) {
for (Filter f : excludeFilters) { for (Filter f : excludeFilters) {
if (f instanceof TypeFilter) { if (f instanceof TypeFilter tf) {
TypeFilter tf = (TypeFilter) f;
FeatureType type = tf.getType(); FeatureType type = tf.getType();
TopLevelFeatureType tlft = mapToTopLevelFeatureType(type); TopLevelFeatureType tlft = mapToTopLevelFeatureType(type);
if (tlft == null) { if (tlft == null) {
...@@ -392,22 +389,15 @@ public class Checker { ...@@ -392,22 +389,15 @@ public class Checker {
} }
private TopLevelFeatureType mapToTopLevelFeatureType(FeatureType type) { private TopLevelFeatureType mapToTopLevelFeatureType(FeatureType type) {
switch (type) { return switch (type) {
case BRIDGE: case BRIDGE -> TopLevelFeatureType.BRIDGE;
return TopLevelFeatureType.BRIDGE; case BUILDING -> TopLevelFeatureType.BUILDING;
case BUILDING: case LAND -> TopLevelFeatureType.LAND;
return TopLevelFeatureType.BUILDING; case TRANSPORTATION -> TopLevelFeatureType.TRANSPORTATION;
case LAND: case VEGETATION -> TopLevelFeatureType.VEGETATION;
return TopLevelFeatureType.LAND; case WATER -> TopLevelFeatureType.WATER;
case TRANSPORTATION: default -> null;
return TopLevelFeatureType.TRANSPORTATION; };
case VEGETATION:
return TopLevelFeatureType.VEGETATION;
case WATER:
return TopLevelFeatureType.WATER;
default:
return null;
}
} }
private RequirementId mapToRequirement(String requirementName) { private RequirementId mapToRequirement(String requirementName) {
...@@ -445,13 +435,7 @@ public class Checker { ...@@ -445,13 +435,7 @@ public class Checker {
transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); transformerFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
transformerFactory.setURIResolver(new URIResolver() { transformerFactory.setURIResolver((href, base) -> new StreamSource(Checker.class.getResourceAsStream(href)));
@Override
public Source resolve(String href, String base) throws TransformerException {
return new StreamSource(Checker.class.getResourceAsStream(href));
}
});
Source dsdlXslSource = new StreamSource(Checker.class.getResourceAsStream("iso_dsdl_include.xsl")); Source dsdlXslSource = new StreamSource(Checker.class.getResourceAsStream("iso_dsdl_include.xsl"));
Transformer dsdlXslTransformer = transformerFactory.newTransformer(dsdlXslSource); Transformer dsdlXslTransformer = transformerFactory.newTransformer(dsdlXslSource);
...@@ -706,14 +690,14 @@ public class Checker { ...@@ -706,14 +690,14 @@ public class Checker {
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug(Localization.getText("Checker.checkFeature"), co); logger.debug(Localization.getText("Checker.checkFeature"), co);
} }
for (int i = 0; i < execLayers.size(); i++) { for (List<Check> execLayer : execLayers) {
for (Check check : execLayers.get(i)) { for (Check check : execLayer) {
if (logger.isTraceEnabled()) { if (logger.isTraceEnabled()) {
logger.trace(Localization.getText("Checker.executeCheck"), check.getCheckId()); logger.trace(Localization.getText("Checker.executeCheck"), check.getCheckId());
} }
co.accept(check); co.accept(check);
} }
} }
} }
public static List<List<Check>> buildExecutionLayers(List<Check> checks) { public static List<List<Check>> buildExecutionLayers(List<Check> checks) {
......
...@@ -30,7 +30,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.CityObject; ...@@ -30,7 +30,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.CityObject;
*/ */
public class EqualsIgnoreCaseFilter implements Filter { public class EqualsIgnoreCaseFilter implements Filter {
private String id; private final String id;
public EqualsIgnoreCaseFilter(String id) { public EqualsIgnoreCaseFilter(String id) {
Objects.requireNonNull(id); Objects.requireNonNull(id);
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.check; package de.hft.stuttgart.citydoctor2.check;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -26,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.FeatureType; ...@@ -26,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.FeatureType;
public class ExcludeFilterConfiguration implements Serializable { public class ExcludeFilterConfiguration implements Serializable {
@Serial
private static final long serialVersionUID = 5308380997654048837L; private static final long serialVersionUID = 5308380997654048837L;
private List<FeatureType> types; private List<FeatureType> types;
......
...@@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.CityObject; ...@@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.CityObject;
* @author Matthias Betz * @author Matthias Betz
* *
*/ */
@FunctionalInterface
public interface Filter { public interface Filter {
/** /**
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
package de.hft.stuttgart.citydoctor2.check; package de.hft.stuttgart.citydoctor2.check;
import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
...@@ -29,6 +30,7 @@ import java.io.Serializable; ...@@ -29,6 +30,7 @@ import java.io.Serializable;
*/ */
public class FilterConfiguration implements Serializable { public class FilterConfiguration implements Serializable {
@Serial
private static final long serialVersionUID = 3344890310114546998L; private static final long serialVersionUID = 3344890310114546998L;
private ExcludeFilterConfiguration exclude; private ExcludeFilterConfiguration exclude;
......
Supports Markdown
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