diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java index ef0d73f23726c915e9c845c71ddaf4a9f00babf2..66d2c5ccd7037d4ad7f8b86346265e47e073cf14 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Check.java @@ -18,6 +18,8 @@ */ package de.hft.stuttgart.citydoctor2.check; +import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -61,10 +63,19 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; */ public abstract class Check { - private CheckId id; + private List<Class<Checkable>> applicableToClasses = new ArrayList<>(2); - public Check(CheckId id) { - this.id = id; + @SuppressWarnings("unchecked") + public Check() { + Method[] declaredMethods = getClass().getDeclaredMethods(); + for (Method m : declaredMethods) { + if ("check".equals(m.getName())) { + Class<?>[] parameterTypes = m.getParameterTypes(); + if (parameterTypes.length == 1 && Checkable.class.isAssignableFrom(parameterTypes[0])) { + applicableToClasses.add((Class<Checkable>) parameterTypes[0]); + } + } + } } /** @@ -72,7 +83,9 @@ public abstract class Check { * * @return a list of classes which the check applies to */ - public abstract List<Class<? extends Checkable>> getApplicableToClasses(); + public List<Class<Checkable>> getApplicableToClasses() { + return applicableToClasses; + } /** * A list of dependencies which the check depends on. Each of those dependencies @@ -90,9 +103,7 @@ public abstract class Check { * * @return the check id. */ - public CheckId getCheckId() { - return id; - } + public abstract CheckId getCheckId(); /** * Getter for the check type. @@ -123,10 +134,10 @@ public abstract class Check { boolean hasError = c.containsError(dependencyCheck); if (hasError) { // check whether a result was already inserted - if (!c.hasDependencyNotMetError(id)) { + if (!c.hasDependencyNotMetError(getCheckId())) { // insert dependency error CheckError err = new DependenciesNotMetError(dependencyCheck); - CheckResult cr = new CheckResult(this.id, ResultStatus.DEPENDENCIES_NOT_MET, err); + CheckResult cr = new CheckResult(getCheckId(), ResultStatus.DEPENDENCIES_NOT_MET, err); c.addCheckResult(cr); } return false; @@ -306,7 +317,7 @@ public abstract class Check { @Override public String toString() { - return "Check [id=" + id + "]"; + return "Check [id=" + getCheckId() + "]"; } /** diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java index 7d18f99652c060fd8e39c43b5d3c858d496eac1b..756e347c96c69e6a6727cca2ef17e497efff43e3 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckError.java @@ -19,7 +19,6 @@ package de.hft.stuttgart.citydoctor2.check; import java.io.Serializable; -import java.util.Objects; import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; @@ -32,56 +31,29 @@ import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; * @author Matthias Betz * */ -public abstract class CheckError implements Serializable { +public interface CheckError extends Serializable { - private static final long serialVersionUID = -4428235366383090704L; - - private ErrorType type; - private ErrorId id; - private GmlElement feature; - - /** - * Necessary information for every error type needs to be provided in this - * constructor. - * - * @param id the error id (not null) - * @param type the error type (not null) - * @param feature element in which the error occurred - */ - public CheckError(ErrorId id, ErrorType type, GmlElement feature) { - Objects.requireNonNull(id, "id may not be null"); - Objects.requireNonNull(type, "type may not be null"); - this.type = type; - this.id = id; - this.feature = feature; - } /** * Getter for the error type * * @return the error type */ - public ErrorType getType() { - return type; - } + public ErrorType getType(); /** * Getter for the error id * * @return the error id */ - public ErrorId getErrorId() { - return id; - } + public ErrorId getErrorId(); /** * The gml feature in which the error occured * * @return the gml feature */ - public GmlElement getFeature() { - return feature; - } + public GmlElement getFeature(); /** * A general visitor will have a look at this error. Visitor pattern. @@ -89,7 +61,7 @@ public abstract class CheckError implements Serializable { * @param errorVisitor the visitor, call {@link ErrorVisitor#visit(CheckError)}) * on this. */ - public abstract void accept(ErrorVisitor errorVisitor); + public void accept(ErrorVisitor errorVisitor); /** * Visitor pattern for the healing methods. Call @@ -100,7 +72,7 @@ public abstract class CheckError implements Serializable { * @param l a modification listener when a healing method changes something * @return true if the healing method changed something in the model */ - public abstract boolean accept(HealingMethod method, ModificationListener l); + public boolean accept(HealingMethod method, ModificationListener l); /** * This method functions as interface to various reporting places. The @@ -109,6 +81,6 @@ public abstract class CheckError implements Serializable { * * @param report */ - public abstract void report(ErrorReport report); + public void report(ErrorReport report); } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java index 61f5b3cafd3e2f70d0aca4afcac50f88d511e8d0..1fac3387e9b3beab32bc0e5dcf17f2b223e8b0d9 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/CheckId.java @@ -9,7 +9,7 @@ * (at your option) any later version. * * CityDoctor2 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of + * but WITHOUT ANY WARRANTY); without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * @@ -18,57 +18,81 @@ */ package de.hft.stuttgart.citydoctor2.check; -import java.util.Collections; -import java.util.Map; -import java.util.TreeMap; +import java.io.Serializable; -public enum CheckId { +public class CheckId implements Serializable { - C_GE_R_TOO_FEW_POINTS("C_GE_R_TOO_FEW_POINTS"), C_GE_R_NOT_CLOSED("C_GE_R_NOT_CLOSED"), - C_GE_S_MULTIPLE_CONNECTED_COMPONENTS("C_GE_S_MULTIPLE_CONNECTED_COMPONENTS"), - C_GE_R_DUPLICATE_POINT("C_GE_R_DUPLICATE_POINT"), C_GE_R_SELF_INTERSECTION("C_GE_R_SELF_INTERSECTION"), - C_GE_P_INTERIOR_DISCONNECTED("C_GE_P_INTERIOR_DISCONNECTED"), - C_GE_P_INTERSECTING_RINGS("C_GE_P_INTERSECTING_RINGS"), C_GE_P_NON_PLANAR("C_GE_P_NON_PLANAR"), - C_GE_S_TOO_FEW_POLYGONS("C_GE_S_TOO_FEW_POLYGONS"), NULL_AREA("C_GE_R_NULL_AREA"), - C_GE_S_NOT_CLOSED("C_GE_S_NOT_CLOSED"), C_GE_S_NON_MANIFOLD_EDGE("C_GE_S_NON_MANIFOLD_EDGE"), - C_GE_S_POLYGON_WRONG_ORIENTATION("C_GE_S_POLYGON_WRONG_ORIENTATION"), - C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION("C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"), - C_GE_S_NON_MANIFOLD_VERTEX("C_GE_S_NON_MANIFOLD_VERTEX"), C_GE_S_SELF_INTERSECTION("C_GE_S_SELF_INTERSECTION"), - C_GE_P_HOLE_OUTSIDE("C_GE_P_HOLE_OUTSIDE"), C_GE_P_ORIENTATION_RINGS_SAME("C_GE_P_ORIENTATION_RINGS_SAME"), - C_GE_P_INNER_RINGS_NESTED("C_GE_P_INNER_RINGS_NESTED"), IS_CEILING("IS_CEILING"), - C_SEM_F_MISSING_ID("C_SEM_F_MISSING_ID"), C_SEM_BS_NOT_CEILING("C_SEM_BS_NOT_CEILING"), - C_SEM_BS_NOT_FLOOR("C_SEM_BS_NOT_FLOOR"), C_SEM_BS_NOT_GROUND("C_SEM_BS_NOT_GROUND"), - C_SEM_BS_GROUND_NOT_FRAGMENTED("C_SEM_BS_GROUND_NOT_FRAGMENTED"), C_SEM_BS_IS_WALL("C_SEM_BS_IS_WALL"), - C_SEM_SCHEMATRON("C_SEM_SCHEMATRON"), C_SEM_BS_ROOF_NOT_FRAGMENTED("C_SEM_BS_ROOF_NOT_FRAGMENTED"); + private static final long serialVersionUID = -6267337828874296004L; + + public static final CheckId C_GE_R_TOO_FEW_POINTS = new CheckId("C_GE_R_TOO_FEW_POINTS"); + public static final CheckId C_GE_R_NOT_CLOSED = new CheckId("C_GE_R_NOT_CLOSED"); + public static final CheckId C_GE_S_MULTIPLE_CONNECTED_COMPONENTS = new CheckId( + "C_GE_S_MULTIPLE_CONNECTED_COMPONENTS"); + public static final CheckId C_GE_R_DUPLICATE_POINT = new CheckId("C_GE_R_DUPLICATE_POINT"); + public static final CheckId C_GE_R_SELF_INTERSECTION = new CheckId("C_GE_R_SELF_INTERSECTION"); + public static final CheckId C_GE_P_INTERIOR_DISCONNECTED = new CheckId("C_GE_P_INTERIOR_DISCONNECTED"); + public static final CheckId C_GE_P_INTERSECTING_RINGS = new CheckId("C_GE_P_INTERSECTING_RINGS"); + public static final CheckId C_GE_P_NON_PLANAR = new CheckId("C_GE_P_NON_PLANAR"); + public static final CheckId C_GE_S_TOO_FEW_POLYGONS = new CheckId("C_GE_S_TOO_FEW_POLYGONS"); + public static final CheckId C_GE_R_NULL_AREA = new CheckId("C_GE_R_NULL_AREA"); + public static final CheckId C_GE_S_NON_MANIFOLD_EDGE = new CheckId("C_GE_S_NON_MANIFOLD_EDGE"); + public static final CheckId C_GE_S_POLYGON_WRONG_ORIENTATION = new CheckId("C_GE_S_POLYGON_WRONG_ORIENTATION"); + public static final CheckId C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION = new CheckId( + "C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION"); + public static final CheckId C_GE_S_NON_MANIFOLD_VERTEX = new CheckId("C_GE_S_NON_MANIFOLD_VERTEX"); + public static final CheckId C_GE_S_SELF_INTERSECTION = new CheckId("C_GE_S_SELF_INTERSECTION"); + public static final CheckId C_GE_P_HOLE_OUTSIDE = new CheckId("C_GE_P_HOLE_OUTSIDE"); + public static final CheckId IS_CEILING = new CheckId("IS_CEILING"); + public static final CheckId C_GE_P_INNER_RINGS_NESTED = new CheckId("C_GE_P_INNER_RINGS_NESTED"); + public static final CheckId C_SEM_BS_NOT_CEILING = new CheckId("C_SEM_BS_NOT_CEILING"); + public static final CheckId C_SEM_BS_NOT_FLOOR = new CheckId("C_SEM_BS_NOT_FLOOR"); + public static final CheckId C_SEM_BS_NOT_GROUND = new CheckId("C_SEM_BS_NOT_GROUND"); + public static final CheckId C_SEM_F_MISSING_ID = new CheckId("C_SEM_F_MISSING_ID"); + public static final CheckId C_SEM_BS_GROUND_NOT_FRAGMENTED = new CheckId("C_SEM_BS_GROUND_NOT_FRAGMENTED"); + public static final CheckId C_SEM_BS_IS_WALL = new CheckId("C_SEM_BS_IS_WALL"); + public static final CheckId C_SEM_SCHEMATRON = new CheckId("C_SEM_SCHEMATRON"); + public static final CheckId C_SEM_BS_ROOF_NOT_FRAGMENTED = new CheckId("C_SEM_BS_ROOF_NOT_FRAGMENTED"); + public static final CheckId C_GE_S_NOT_CLOSED = new CheckId("C_GE_S_NOT_CLOSED"); + public static final CheckId C_GE_P_ORIENTATION_RINGS_SAME = new CheckId("C_GE_P_ORIENTATION_RINGS_SAME"); + + private String name; - private static final Map<String, CheckId> ENUM_MAP; - - static { - Map<String, CheckId> map = new TreeMap<>(); - for (CheckId instance : CheckId.values()) { - map.put(instance.toString().toUpperCase(), instance); - } - ENUM_MAP = Collections.unmodifiableMap(map); + public CheckId(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; } - private String id; - - private CheckId(String id) { - this.id = id; + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CheckId other = (CheckId) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; } @Override public String toString() { - return id; + return name; } - /** - * Converts a String to a check id if possible. - * - * @param checkName the string representation of a check - * @return the check id or null if not found. - */ - public static CheckId getIdForName(String checkName) { - return ENUM_MAP.get(checkName.toUpperCase()); - } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java index fa3be69f0d7c62cb1eedfbfea98d487b529aed15..f53e78b7a29767c99d2566e22eebf3703b711f9a 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Checkable.java @@ -19,7 +19,7 @@ package de.hft.stuttgart.citydoctor2.check; import java.io.Serializable; -import java.util.EnumMap; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,7 +40,7 @@ public abstract class Checkable implements Serializable { private static final Logger logger = LogManager.getLogger(Checkable.class); - private EnumMap<CheckId, CheckResult> checkResults = new EnumMap<>(CheckId.class); + private Map<CheckId, CheckResult> checkResults = new HashMap<>(); private boolean isValidated = false; protected void setValidated(boolean validated) { diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java index e9735ebb3a93d85582913c51bc4aa509f324d4be..f0238847c7602a3831becff424244ecb3c150c23 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorId.java @@ -18,6 +18,8 @@ */ package de.hft.stuttgart.citydoctor2.check; +import java.io.Serializable; + /** * The error ids of all checks and their respective name, which is used in * reports and GUI @@ -25,30 +27,75 @@ package de.hft.stuttgart.citydoctor2.check; * @author Matthias Betz * */ -public enum ErrorId { - - DEPENDENCIES_NOT_MET("Dependencies_not_met"), UNKNOWN_ERROR("Unknown_error"), GE_R_NOT_CLOSED("GE_R_NOT_CLOSED"), - GE_S_MULTIPLE_CONNECTED_COMPONENTS("GE_S_MULTIPLE_CONNECTED_COMPONENTS"), - GE_R_CONSECUTIVE_POINTS_SAME("GE_R_CONSECUTIVE_POINTS_SAME"), GE_R_SELF_INTERSECTION("GE_R_SELF_INTERSECTION"), - GE_S_POLYGON_WRONG_ORIENTATION("GE_S_POLYGON_WRONG_ORIENTATION"), - GE_S_ALL_POLYGONS_WRONG_ORIENTATION("GE_S_ALL_POLYGONS_WRONG_ORIENTATION"), GE_P_HOLE_OUTSIDE("GE_P_HOLE_OUTSIDE"), - GE_P_INTERIOR_DISCONNECTED("GE_P_INTERIOR_DISCONNECTED"), GE_S_NON_MANIFOLD_VERTEX("GE_S_NON_MANIFOLD_VERTEX"), - GE_P_INNER_RINGS_NESTED("GE_P_INNER_RINGS_NESTED"), GE_R_NULL_AREA("GE_R_NULL_AREA"), - GE_R_TOO_FEW_POINTS("GE_R_TOO_FEW_POINTS"), GE_S_NON_MANIFOLD_EDGE("GE_S_NON_MANIFOLD_EDGE"), - GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION("GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"), - GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE("GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"), - GE_P_ORIENTATION_RINGS_SAME("GE_P_ORIENTATION_RINGS_SAME"), GE_P_INTERSECTING_RINGS("GE_P_INTERSECTION_RINGS"), - GE_S_NOT_CLOSED("GE_S_NOT_CLOSED"), GE_S_SELF_INTERSECTION("GE_S_SELF_INTERSECTION"), - GE_S_TOO_FEW_POLYGONS("GE_S_TOO_FEW_POLYGONS"), SEM_F_MISSING_ID("SEM_F_MISSING_GML_ID"), - SEM_BS_NOT_CEILING("SEM_BS_NOT_CEILING"), SEM_BS_NOT_WALL("SEM_BS_NOT_WALL"), SEM_BS_NOT_FLOOR("SEM_BS_NOT_FLOOR"), - SEM_BS_NOT_GROUND("SEM_BS_NOT_GROUND"), SEM_SCHEMATRON_ERROR("SEM_SCHEMATRON_ERROR"), SEM_BS_UNFRAGMENTED("SEM_BS_UNFRAGMENTED"), GE_P_TINY_EDGE("GE_P_TINY_EDGE"); +public class ErrorId implements Serializable { + + private static final long serialVersionUID = -2598466667746276560L; + + public static final ErrorId DEPENDENCIES_NOT_MET = new ErrorId("Dependencies_not_met"); + public static final ErrorId UNKNOWN_ERROR = new ErrorId("Unknown_error"); + public static final ErrorId GE_R_NOT_CLOSED = new ErrorId("GE_R_NOT_CLOSED"); + public static final ErrorId GE_S_MULTIPLE_CONNECTED_COMPONENTS = new ErrorId("GE_S_MULTIPLE_CONNECTED_COMPONENTS"); + public static final ErrorId GE_R_CONSECUTIVE_POINTS_SAME = new ErrorId("GE_R_CONSECUTIVE_POINTS_SAME"); + public static final ErrorId GE_R_SELF_INTERSECTION = new ErrorId("GE_R_SELF_INTERSECTION"); + public static final ErrorId GE_S_POLYGON_WRONG_ORIENTATION = new ErrorId("GE_S_POLYGON_WRONG_ORIENTATION"); + public static final ErrorId GE_S_ALL_POLYGONS_WRONG_ORIENTATION = new ErrorId( + "GE_S_ALL_POLYGONS_WRONG_ORIENTATION"); + public static final ErrorId GE_P_HOLE_OUTSIDE = new ErrorId("GE_P_HOLE_OUTSIDE"); + public static final ErrorId GE_P_INTERIOR_DISCONNECTED = new ErrorId("GE_P_INTERIOR_DISCONNECTED"); + public static final ErrorId GE_S_NON_MANIFOLD_VERTEX = new ErrorId("GE_S_NON_MANIFOLD_VERTEX"); + public static final ErrorId GE_P_INNER_RINGS_NESTED = new ErrorId("GE_P_INNER_RINGS_NESTED"); + public static final ErrorId GE_R_NULL_AREA = new ErrorId("GE_R_NULL_AREA"); + public static final ErrorId GE_R_TOO_FEW_POINTS = new ErrorId("GE_R_TOO_FEW_POINTS"); + public static final ErrorId GE_S_NON_MANIFOLD_EDGE = new ErrorId("GE_S_NON_MANIFOLD_EDGE"); + public static final ErrorId GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION = new ErrorId( + "GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"); + public static final ErrorId GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE = new ErrorId( + "GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE"); + public static final ErrorId GE_P_INTERSECTING_RINGS = new ErrorId("GE_P_INTERSECTING_RINGS"); + public static final ErrorId GE_S_SELF_INTERSECTION = new ErrorId("GE_S_SELF_INTERSECTION"); + public static final ErrorId GE_P_ORIENTATION_RINGS_SAME = new ErrorId("GE_P_ORIENTATION_RINGS_SAME"); + public static final ErrorId GE_S_NOT_CLOSED = new ErrorId("GE_S_NOT_CLOSED"); + public static final ErrorId GE_S_TOO_FEW_POLYGONS = new ErrorId("GE_S_TOO_FEW_POLYGONS"); + public static final ErrorId SEM_F_MISSING_ID = new ErrorId("SEM_F_MISSING_ID"); + public static final ErrorId SEM_BS_NOT_CEILING = new ErrorId("SEM_BS_NOT_CEILING"); + public static final ErrorId SEM_BS_NOT_WALL = new ErrorId("SEM_BS_NOT_WALL"); + public static final ErrorId SEM_BS_NOT_FLOOR = new ErrorId("SEM_BS_NOT_FLOOR"); + public static final ErrorId SEM_BS_NOT_GROUND = new ErrorId("SEM_BS_NOT_GROUND"); + public static final ErrorId SEM_SCHEMATRON_ERROR = new ErrorId("SEM_SCHEMATRON_ERROR"); + public static final ErrorId SEM_BS_UNFRAGMENTED = new ErrorId("SEM_BS_UNFRAGMENTED"); + public static final ErrorId GE_P_TINY_EDGE = new ErrorId("GE_P_TINY_EDGE"); private String name; - private ErrorId(String name) { + public ErrorId(String name) { this.name = name; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ErrorId other = (ErrorId) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + @Override public String toString() { return name; diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java index 627e26783b8a48558d27db01ad9aef607c489992..455f0f8fc65e79a20ff923d801a54c76f68aa4f7 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/AllPolygonsWrongOrientationError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; /** * Error when all polygons are oriented wrong. @@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry; * @author Matthias Betz * */ -public class AllPolygonsWrongOrientationError extends CheckError { +public class AllPolygonsWrongOrientationError implements CheckError { private static final long serialVersionUID = 2263993313732858840L; private Geometry geom; public AllPolygonsWrongOrientationError(Geometry geom) { - super(ErrorId.GE_S_ALL_POLYGONS_WRONG_ORIENTATION, ErrorType.ERROR, geom); this.geom = geom; } @@ -68,4 +68,19 @@ public class AllPolygonsWrongOrientationError extends CheckError { report.add(geom); } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_ALL_POLYGONS_WRONG_ORIENTATION; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java index 624e736fca88a51401c8b62bcd8b07757617cf37..687e128c6d652a9386331d3095a6414bc14bb3f1 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/ConsecutivePointSameError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Vertex; @@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; * @author Matthias Betz * */ -public class ConsecutivePointSameError extends CheckError { +public class ConsecutivePointSameError implements CheckError { private static final long serialVersionUID = -6355935751554777494L; @@ -44,7 +45,6 @@ public class ConsecutivePointSameError extends CheckError { private Vertex p2; public ConsecutivePointSameError(LinearRing lr, Vertex p1, Vertex p2) { - super(ErrorId.GE_R_CONSECUTIVE_POINTS_SAME, ErrorType.ERROR, lr); this.lr = lr; this.p1 = p1; this.p2 = p2; @@ -83,4 +83,19 @@ public class ConsecutivePointSameError extends CheckError { report.add("duplicate point 1", p1); report.add("duplicate point 2", p2); } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_R_CONSECUTIVE_POINTS_SAME; + } + + @Override + public GmlElement getFeature() { + return getRing(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java index 8c523e7e356740e3d807cd0e2678b162eceae89e..c7f9bb6a3a6c2aff58431f9b54ab70b1e0c8f941 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/DependenciesNotMetError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; /** * When a check checks if it can be executed but one or more dependency has @@ -36,14 +37,13 @@ import de.hft.stuttgart.citydoctor2.check.ModificationListener; * @author Matthias Betz * */ -public class DependenciesNotMetError extends CheckError { +public class DependenciesNotMetError implements CheckError { private static final long serialVersionUID = -851655185949574160L; private CheckId dependency; public DependenciesNotMetError(CheckId dependency) { - super(ErrorId.DEPENDENCIES_NOT_MET, ErrorType.ERROR, null); this.dependency = dependency; } @@ -70,4 +70,19 @@ public class DependenciesNotMetError extends CheckError { public void report(ErrorReport report) { report.add("dependency", dependency.toString()); } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.DEPENDENCIES_NOT_MET; + } + + @Override + public GmlElement getFeature() { + return null; + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java index bab719100a67837de1cfd353248e643fd5d56a64..1c8bea3106d4ad1966d2e4703cee072c616446e3 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/MultipleConnectedComponentsError.java @@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; /** @@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class MultipleConnectedComponentsError extends CheckError { +public class MultipleConnectedComponentsError implements CheckError { private static final long serialVersionUID = 2152069835068857036L; @@ -45,7 +46,6 @@ public class MultipleConnectedComponentsError extends CheckError { private List<List<Polygon>> components; public MultipleConnectedComponentsError(Geometry geom, List<List<Polygon>> components) { - super(ErrorId.GE_S_MULTIPLE_CONNECTED_COMPONENTS, ErrorType.ERROR, geom); this.geom = geom; this.components = components; } @@ -81,4 +81,19 @@ public class MultipleConnectedComponentsError extends CheckError { public String toString() { return "MultipleConnectedComponentsError [geom=" + geom + ", components=" + components + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_MULTIPLE_CONNECTED_COMPONENTS; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java index e95d8038df89d4d42d02bac66961c69fd8ad52b6..e3473422c67f4b185bb6a5e681acae37329b4b4f 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NestedRingError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; @@ -34,7 +35,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class NestedRingError extends CheckError { +public class NestedRingError implements CheckError { private static final long serialVersionUID = -3396113374745830193L; @@ -43,7 +44,6 @@ public class NestedRingError extends CheckError { private LinearRing withinRing; public NestedRingError(Polygon p, LinearRing innerRing, LinearRing withinRing) { - super(ErrorId.GE_P_INNER_RINGS_NESTED, ErrorType.ERROR, p); this.p = p; this.innerRing = innerRing; this.withinRing = withinRing; @@ -81,4 +81,19 @@ public class NestedRingError extends CheckError { public String toString() { return "NestedRingError [p=" + p + ", innerRing=" + innerRing + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_INNER_RINGS_NESTED; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java index 39645d2150fb1b4370dec0991145a7c78a78b684..53561947311d130b6350be4980ac50539068931c 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldEdgeError.java @@ -29,6 +29,7 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Edge; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; /** * If an edge is an edge in 3 or more polygons this error is created. @@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry; * @author Matthias Betz * */ -public class NonManifoldEdgeError extends CheckError { +public class NonManifoldEdgeError implements CheckError { private static final long serialVersionUID = -6742948557014332402L; @@ -44,7 +45,6 @@ public class NonManifoldEdgeError extends CheckError { private Geometry geom; public NonManifoldEdgeError(Geometry geom, List<Edge> edges) { - super(ErrorId.GE_S_NON_MANIFOLD_EDGE, ErrorType.ERROR, geom); this.edges = edges; this.geom = geom; } @@ -79,4 +79,19 @@ public class NonManifoldEdgeError extends CheckError { public String toString() { return "ManifoldEdgeError [edges=" + edges + ", geom=" + geom + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_NON_MANIFOLD_EDGE; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java index cf5a809cae24c75530f296dd1c65b837ce2925f7..84c01753837ab135ed6d47c990d5e0367c353f90 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonManifoldVertexError.java @@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Vertex; @@ -38,7 +39,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; * @author Matthias Betz * */ -public class NonManifoldVertexError extends CheckError { +public class NonManifoldVertexError implements CheckError { private static final long serialVersionUID = -3915669943428175777L; @@ -47,7 +48,6 @@ public class NonManifoldVertexError extends CheckError { private Vertex v; public NonManifoldVertexError(Geometry geom, List<List<Polygon>> components, Vertex v) { - super(ErrorId.GE_S_NON_MANIFOLD_VERTEX, ErrorType.ERROR, geom); this.geom = geom; this.components = components; this.v = v; @@ -94,4 +94,19 @@ public class NonManifoldVertexError extends CheckError { return "NonManifoldVertexError [components=" + components + ", geom=" + geom + ", v=" + v + "]"; } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_NON_MANIFOLD_VERTEX; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java index 94913d77fdfd606c8e5ea625b917adfeaacd4877..3e3fc27cdf32a9111fe5423d62979a9741c9f3f4 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonDistancePlaneError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.datastructure.Vertex; import de.hft.stuttgart.citydoctor2.math.Plane; @@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.utils.Localization; * @author Matthias Betz * */ -public class NonPlanarPolygonDistancePlaneError extends CheckError { +public class NonPlanarPolygonDistancePlaneError implements CheckError { private static final long serialVersionUID = -3504364055236383519L; @@ -47,7 +48,6 @@ public class NonPlanarPolygonDistancePlaneError extends CheckError { private Plane plane; public NonPlanarPolygonDistancePlaneError(Polygon p, double distance, Vertex v, Plane plane) { - super(ErrorId.GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, ErrorType.ERROR, p); this.p = p; this.distance = distance; this.v = v; @@ -91,4 +91,19 @@ public class NonPlanarPolygonDistancePlaneError extends CheckError { public String toString() { return "DistanceError [p=" + p + ", distance=" + distance + ", v=" + v + ", plane=" + plane + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java index 30e036b33ee6a794000a8555715ae50b10f13e1b..e77bee1869f4b2e9a1c6f0c40aa0f8e45f706e47 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NonPlanarPolygonNormalsDeviation.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; /** @@ -34,7 +35,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class NonPlanarPolygonNormalsDeviation extends CheckError { +public class NonPlanarPolygonNormalsDeviation implements CheckError { private static final long serialVersionUID = 69073161885265794L; @@ -42,7 +43,6 @@ public class NonPlanarPolygonNormalsDeviation extends CheckError { private double deviation; public NonPlanarPolygonNormalsDeviation(Polygon p, double deviation) { - super(ErrorId.GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION, ErrorType.ERROR, p); this.p = p; this.deviation = deviation; } @@ -75,4 +75,19 @@ public class NonPlanarPolygonNormalsDeviation extends CheckError { public String toString() { return "NormalDeviationError [p=" + p + ", deviation=" + deviation + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java index 8d6aeb1ffdfba8fe6225af02e632dab8e3909ee7..4ed6bea9be3872e7e88b8f87b6d50a8d91692b62 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotCeilingError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; /** @@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class NotCeilingError extends CheckError { +public class NotCeilingError implements CheckError { private static final long serialVersionUID = 6725904270389419696L; @@ -43,7 +44,6 @@ public class NotCeilingError extends CheckError { private Polygon p; public NotCeilingError(BoundarySurface bs, Polygon p) { - super(ErrorId.SEM_BS_NOT_CEILING, ErrorType.WARNING, bs); surface = bs; this.p = p; } @@ -72,4 +72,19 @@ public class NotCeilingError extends CheckError { report.add(surface); } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.SEM_BS_NOT_CEILING; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java index 991bfbc962ada85377b5e07df0c71dbcad1c3337..1b8198f1a8148f34037dcad01d074995fbf40fdb 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotFloorError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; /** @@ -34,7 +35,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class NotFloorError extends CheckError { +public class NotFloorError implements CheckError { private static final long serialVersionUID = -3193557053834977449L; @@ -42,7 +43,6 @@ public class NotFloorError extends CheckError { private Polygon p; public NotFloorError(BoundarySurface bs, Polygon p) { - super(ErrorId.SEM_BS_NOT_FLOOR, ErrorType.WARNING, bs); surface = bs; this.p = p; } @@ -70,4 +70,19 @@ public class NotFloorError extends CheckError { report.add(p); } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.SEM_BS_NOT_FLOOR; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java index ec646685e15ee12ee2d9ad735c6a44f5d417ab6b..b810a6f7a04f21b90b3d76c910e3a77561214f54 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotGroundError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; /** @@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class NotGroundError extends CheckError { +public class NotGroundError implements CheckError { private static final long serialVersionUID = 8793224454858861221L; @@ -43,7 +44,6 @@ public class NotGroundError extends CheckError { private Polygon p; public NotGroundError(BoundarySurface bs, Polygon p) { - super(ErrorId.SEM_BS_NOT_GROUND, ErrorType.WARNING, bs); surface = bs; this.p = p; } @@ -72,4 +72,19 @@ public class NotGroundError extends CheckError { report.add(surface); } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.SEM_BS_NOT_GROUND; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java index 1bb2aa689164a4132829f15b75e38e18af6808d5..44a3efa741fe553639fd034f3b2ecc6d218220aa 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NotWallError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.math.Vector3d; @@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; * @author Matthias Betz * */ -public class NotWallError extends CheckError { +public class NotWallError implements CheckError { private static final long serialVersionUID = 406429139625558232L; @@ -44,7 +45,6 @@ public class NotWallError extends CheckError { private Vector3d normal; public NotWallError(BoundarySurface bs, Polygon p, Vector3d normal) { - super(ErrorId.SEM_BS_NOT_WALL, ErrorType.WARNING, bs); surface = bs; this.p = p; this.normal = normal; @@ -75,4 +75,19 @@ public class NotWallError extends CheckError { report.add("normal", normal); } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.SEM_BS_NOT_WALL; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java index 3e3438bdeda2db93e348b8b319af5515eaca3658..e0bf8d9b5824f89b8270b3cefdb2e05db7c5f143 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/NullAreaError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; /** @@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; * @author Matthias Betz * */ -public class NullAreaError extends CheckError { +public class NullAreaError implements CheckError { private static final long serialVersionUID = 1358910429039553687L; private LinearRing lr; public NullAreaError(LinearRing lr) { - super(ErrorId.GE_R_NULL_AREA, ErrorType.ERROR, lr); this.lr = lr; } @@ -67,4 +67,19 @@ public class NullAreaError extends CheckError { public String toString() { return "NullAreaError [lr=" + lr + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_R_NULL_AREA; + } + + @Override + public GmlElement getFeature() { + return getRing(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java index 2695ce1cc42f06d886cc3a591a76163b352c91da..a50f87a3c89e4d5ed5f7f268b7fc92058bc797a9 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PointTouchesEdgeError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Edge; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Vertex; @@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; * @author Matthias Betz * */ -public class PointTouchesEdgeError extends CheckError { +public class PointTouchesEdgeError implements CheckError { private static final long serialVersionUID = 3277456707271748954L; @@ -45,7 +46,6 @@ public class PointTouchesEdgeError extends CheckError { private Vertex v; public PointTouchesEdgeError(LinearRing lr, Edge e, Vertex v) { - super(ErrorId.GE_R_SELF_INTERSECTION, ErrorType.ERROR, lr); this.lr = lr; this.e = e; this.v = v; @@ -86,4 +86,19 @@ public class PointTouchesEdgeError extends CheckError { return "PointTouchesEdgeError [lr=" + lr + ", e=" + e + ", v=" + v + "]"; } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_R_SELF_INTERSECTION; + } + + @Override + public GmlElement getFeature() { + return getRing(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java index f46064b7480756106747e1b6b87b9f20f252da44..13506ede91a5d03165e8c9ffc5a94881c10b502a 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonHoleOutsideError.java @@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; @@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class PolygonHoleOutsideError extends CheckError { +public class PolygonHoleOutsideError implements CheckError { private static final long serialVersionUID = -4522153084655775231L; @@ -45,7 +46,6 @@ public class PolygonHoleOutsideError extends CheckError { private Polygon p; public PolygonHoleOutsideError(Polygon p, List<LinearRing> holesOutside) { - super(ErrorId.GE_P_HOLE_OUTSIDE, ErrorType.ERROR, p); this.p = p; this.holesOutside = holesOutside; } @@ -80,4 +80,19 @@ public class PolygonHoleOutsideError extends CheckError { public String toString() { return "HoleOutsideError [holesOutside=" + holesOutside + ", p=" + p + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_HOLE_OUTSIDE; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java index f4f786890db85fc8b7609916558485ed2a3e833e..47fa5c91ab484ad718690304599057e46bf4bc10 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonInteriorDisconnectedError.java @@ -27,6 +27,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; @@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class PolygonInteriorDisconnectedError extends CheckError { +public class PolygonInteriorDisconnectedError implements CheckError { private static final long serialVersionUID = 511849016699842395L; @@ -45,7 +46,6 @@ public class PolygonInteriorDisconnectedError extends CheckError { private List<LinearRing> connectedRings; public PolygonInteriorDisconnectedError(Polygon p, List<LinearRing> connectedRings) { - super(ErrorId.GE_P_INTERIOR_DISCONNECTED, ErrorType.ERROR, p); this.p = p; this.connectedRings = connectedRings; } @@ -81,4 +81,19 @@ public class PolygonInteriorDisconnectedError extends CheckError { public String toString() { return "InteriorDisconnectedError [p=" + p + ", connectedRings=" + connectedRings + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_INTERIOR_DISCONNECTED; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java index aa28919227138649310584c3f358bfb7c5841103..a23581f7bcfd52ff39c3e205996516f5dd74aa91 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonIntersectingRingsError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.utils.SerializablePair; @@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.utils.SerializablePair; * @author Matthias Betz * */ -public class PolygonIntersectingRingsError extends CheckError { +public class PolygonIntersectingRingsError implements CheckError { private static final long serialVersionUID = -7043521697085991901L; @@ -44,7 +45,6 @@ public class PolygonIntersectingRingsError extends CheckError { private SerializablePair<LinearRing, LinearRing> intersectingRings; public PolygonIntersectingRingsError(Polygon p, SerializablePair<LinearRing, LinearRing> intersectingRings) { - super(ErrorId.GE_P_INTERSECTING_RINGS, ErrorType.ERROR, p); this.p = p; this.intersectingRings = intersectingRings; } @@ -78,4 +78,19 @@ public class PolygonIntersectingRingsError extends CheckError { public String toString() { return "PolygonSelfIntError [p=" + p + ", intersectingRings=" + intersectingRings + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_INTERSECTING_RINGS; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java index 4e06e8a8ca53df3707e641793852a829061ea57f..fd4d6ecd9f6516a870036632d8ee1797a5bba6c0 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonSameOrientationError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; @@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class PolygonSameOrientationError extends CheckError { +public class PolygonSameOrientationError implements CheckError { private static final long serialVersionUID = -6192337889977667459L; @@ -43,7 +44,6 @@ public class PolygonSameOrientationError extends CheckError { private LinearRing innerRing; public PolygonSameOrientationError(Polygon p, LinearRing inner) { - super(ErrorId.GE_P_ORIENTATION_RINGS_SAME, ErrorType.ERROR, p); this.p = p; this.innerRing = inner; } @@ -76,4 +76,19 @@ public class PolygonSameOrientationError extends CheckError { public String toString() { return "SameOrientationError [p=" + p + ", innerRing=" + innerRing + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_ORIENTATION_RINGS_SAME; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java index adf5dc574ccebf1aee07dfdd2a088002d6c4327e..7c6ad0025d17a653a2d966b5a90fa5ec6005496c 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/PolygonWrongOrientationError.java @@ -31,6 +31,7 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Edge; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; /** @@ -41,7 +42,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Polygon; * @author Matthias Betz * */ -public class PolygonWrongOrientationError extends CheckError { +public class PolygonWrongOrientationError implements CheckError { private static final long serialVersionUID = -3006643655816847097L; @@ -49,7 +50,6 @@ public class PolygonWrongOrientationError extends CheckError { private Geometry g; public PolygonWrongOrientationError(Geometry g, List<Edge> edges) { - super(ErrorId.GE_S_POLYGON_WRONG_ORIENTATION, ErrorType.ERROR, g); this.edges = edges; this.g = g; } @@ -86,4 +86,19 @@ public class PolygonWrongOrientationError extends CheckError { public String toString() { return "PolygonWrongOrientationError [edges=" + edges + ", g=" + g + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_POLYGON_WRONG_ORIENTATION; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java index d710e489eba466c3ad644768ab0471415533a146..03df78e6dd36514e6f8052df081a35b3db1d9cc9 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingDuplicatePointError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.datastructure.Vertex; @@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; * @author Matthias Betz * */ -public class RingDuplicatePointError extends CheckError { +public class RingDuplicatePointError implements CheckError { private static final long serialVersionUID = 7208982075173209953L; @@ -44,7 +45,6 @@ public class RingDuplicatePointError extends CheckError { private Vertex v2; public RingDuplicatePointError(LinearRing r, Vertex v1, Vertex v2) { - super(ErrorId.GE_R_SELF_INTERSECTION, ErrorType.ERROR, r); this.r = r; this.v1 = v1; this.v2 = v2; @@ -84,4 +84,19 @@ public class RingDuplicatePointError extends CheckError { return "DuplicatePointError [r=" + r + ", v1=" + v1 + ", v2=" + v2 + "]"; } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_R_SELF_INTERSECTION; + } + + @Override + public GmlElement getFeature() { + return getRing(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java index 0992c3516d235b4a903604b2b89680f0c69decec..1be0e9a89dcf2352a406cecd8ba1e7db92d7f92a 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingEdgeIntersectionError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Edge; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; import de.hft.stuttgart.citydoctor2.math.Vector3d; @@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; * @author Matthias Betz * */ -public class RingEdgeIntersectionError extends CheckError { +public class RingEdgeIntersectionError implements CheckError { private static final long serialVersionUID = 4923311259469198172L; @@ -46,7 +47,6 @@ public class RingEdgeIntersectionError extends CheckError { private LinearRing lr; public RingEdgeIntersectionError(LinearRing lr, Edge e1, Edge e2, Vector3d intersection) { - super(ErrorId.GE_R_SELF_INTERSECTION, ErrorType.ERROR, lr); if (e1 == null || e2 == null || lr == null || intersection == null) { throw new IllegalArgumentException("Parameters may not be null"); } @@ -96,4 +96,19 @@ public class RingEdgeIntersectionError extends CheckError { return "EdgeIntersectionError [e1=" + e1 + ", e2=" + e2 + ", intersection=" + intersection + ", lr=" + lr + "]"; } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_R_SELF_INTERSECTION; + } + + @Override + public GmlElement getFeature() { + return getRing(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java index 5e2c07d5687c81ed1c6668ef09882aab5f0ae189..a29542230df6529d2a2c236872c9f646ff2d8d0b 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingNotClosedError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; /** @@ -34,14 +35,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; * @author Matthias Betz * */ -public class RingNotClosedError extends CheckError { +public class RingNotClosedError implements CheckError { private static final long serialVersionUID = 2554099996830579201L; private LinearRing ring; public RingNotClosedError(LinearRing ring) { - super(ErrorId.GE_R_NOT_CLOSED, ErrorType.ERROR, ring); this.ring = ring; } @@ -68,4 +68,19 @@ public class RingNotClosedError extends CheckError { public String toString() { return "RingNotClosedError [ring=" + ring + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_R_NOT_CLOSED; + } + + @Override + public GmlElement getFeature() { + return getRing(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java index 41df5974e8d0c281b590b79e3e34252dc8dc07e2..b7a08a726bf9d7c800e7ecef67ae99aee8b56898 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/RingTooFewPointsError.java @@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; /** @@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; * @author Matthias Betz * */ -public class RingTooFewPointsError extends CheckError { +public class RingTooFewPointsError implements CheckError { private static final long serialVersionUID = 7207518573842743261L; private LinearRing lr; public RingTooFewPointsError(LinearRing lr) { - super(ErrorId.GE_R_TOO_FEW_POINTS, ErrorType.ERROR, lr); this.lr = lr; } @@ -67,4 +67,19 @@ public class RingTooFewPointsError extends CheckError { public String toString() { return "TooFewPointsError [lr=" + lr + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_R_TOO_FEW_POINTS; + } + + @Override + public GmlElement getFeature() { + return getRing(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java index b9a17a9d03ea3b3e7f39886051fe84b2a63aba7d..e682d3fe87d77c16fb7728ba6c21e8a261091ce7 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SchematronError.java @@ -25,15 +25,15 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; -public class SchematronError extends CheckError { +public class SchematronError implements CheckError { private static final long serialVersionUID = -2964084500589868928L; private String text; public SchematronError(String text) { - super(ErrorId.SEM_SCHEMATRON_ERROR, ErrorType.ERROR, null); this.text = text; } @@ -61,4 +61,19 @@ public class SchematronError extends CheckError { return text; } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.SEM_SCHEMATRON_ERROR; + } + + @Override + public GmlElement getFeature() { + return null; + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java index 78ac4af853072c62eac2c9e9982dafae39a1819d..f0e7152c95082a5bbb6f69fcc5e35cfd99d868e0 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidNotClosedError.java @@ -29,6 +29,7 @@ import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Edge; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; /** * If a geometry has holes in it, it results in edges being traversed only once. @@ -37,7 +38,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry; * @author Matthias Betz * */ -public class SolidNotClosedError extends CheckError { +public class SolidNotClosedError implements CheckError { private static final long serialVersionUID = 8256385219885788891L; @@ -45,7 +46,6 @@ public class SolidNotClosedError extends CheckError { private Geometry g; public SolidNotClosedError(Geometry g, List<Edge> errorEdges) { - super(ErrorId.GE_S_NOT_CLOSED, ErrorType.ERROR, g); this.errorEdges = errorEdges; this.g = g; } @@ -78,4 +78,19 @@ public class SolidNotClosedError extends CheckError { public String toString() { return "SolidNotClosedError [errorEdges=" + errorEdges + ", g=" + g + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_NOT_CLOSED; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java index 0b29cb2bf483f811d6b516892d0d01d1721ba11c..63cc91c0b2ca99958c3f86dbfb5dc8b7c25f66b2 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SolidSelfIntError.java @@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection; /** @@ -36,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection; * @author Matthias Betz * */ -public class SolidSelfIntError extends CheckError { +public class SolidSelfIntError implements CheckError { private static final long serialVersionUID = -4479936555545861422L; @@ -45,7 +46,6 @@ public class SolidSelfIntError extends CheckError { private List<PolygonIntersection> intersections; public SolidSelfIntError(Geometry g, List<PolygonIntersection> intersections) { - super(ErrorId.GE_S_SELF_INTERSECTION, ErrorType.ERROR, g); this.g = g; this.intersections = intersections; } @@ -77,4 +77,19 @@ public class SolidSelfIntError extends CheckError { public String toString() { return "SolidSelfIntError [g=" + g + ", intersection=" + intersections + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_SELF_INTERSECTION; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java index 9ca015e48477c28f5f893d781a72fbd96e794cb2..55d02c6d25f16724fb77c5f954dc6470b3f1670e 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/SurfaceUnfragmentedError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; /** * Container object for an unfragmented error @@ -33,7 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; * @author Matthias Betz * */ -public class SurfaceUnfragmentedError extends CheckError { +public class SurfaceUnfragmentedError implements CheckError { private static final long serialVersionUID = 3146243879393474196L; @@ -41,7 +42,6 @@ public class SurfaceUnfragmentedError extends CheckError { private double angleDeviation; public SurfaceUnfragmentedError(BoundarySurface bs, double angleDerivation) { - super(ErrorId.SEM_BS_UNFRAGMENTED, ErrorType.ERROR, bs); this.bs = bs; this.angleDeviation = angleDerivation; } @@ -70,4 +70,19 @@ public class SurfaceUnfragmentedError extends CheckError { report.add("angleDerivation", angleDeviation); } + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.SEM_BS_UNFRAGMENTED; + } + + @Override + public GmlElement getFeature() { + return getBoundarySurface(); + } + } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java index 41ffd8bcfd5e16f6ce41252efd756b230ce19428..45f5860b63f7ad01a66f4db5854a54a20f368451 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TinyEdgeError.java @@ -25,21 +25,21 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; -public class TinyEdgeError extends CheckError { +public class TinyEdgeError implements CheckError { - /** - * - */ private static final long serialVersionUID = 865493182529055651L; + private Polygon p; + public TinyEdgeError(Polygon p) { - super(ErrorId.GE_P_TINY_EDGE, ErrorType.ERROR, p); + this.p = p; } public Polygon getPolygon() { - return (Polygon) getFeature(); + return p; } @Override @@ -56,5 +56,20 @@ public class TinyEdgeError extends CheckError { public void report(ErrorReport report) { report.add(getPolygon()); } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_P_TINY_EDGE; + } + + @Override + public GmlElement getFeature() { + return getPolygon(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java index 13c01e1293f8724b420f4712be217bfd109500c2..3b65d139ba36e7f2eaac71ee569dac000f6c58ce 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/TooFewPolygonsError.java @@ -26,6 +26,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; /** * When a geometry has less than 4 polygons, it cannot form a valid solid. @@ -33,14 +34,13 @@ import de.hft.stuttgart.citydoctor2.datastructure.Geometry; * @author Matthias Betz * */ -public class TooFewPolygonsError extends CheckError { +public class TooFewPolygonsError implements CheckError { private static final long serialVersionUID = 5800732409355221678L; private Geometry g; public TooFewPolygonsError(Geometry g) { - super(ErrorId.GE_S_TOO_FEW_POLYGONS, ErrorType.ERROR, g); this.g = g; } @@ -68,4 +68,19 @@ public class TooFewPolygonsError extends CheckError { public String toString() { return "TooFewPolygonsError [g=" + g + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.GE_S_TOO_FEW_POLYGONS; + } + + @Override + public GmlElement getFeature() { + return getGeometry(); + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java index 8c160f3f9b6b1fffb2aaf63c24423a4b44151ed3..e583cc5fc738d6dabda33ff85bbbe4bfcf5069b3 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/UnknownCheckError.java @@ -28,6 +28,7 @@ import de.hft.stuttgart.citydoctor2.check.ErrorType; import de.hft.stuttgart.citydoctor2.check.ErrorVisitor; import de.hft.stuttgart.citydoctor2.check.HealingMethod; import de.hft.stuttgart.citydoctor2.check.ModificationListener; +import de.hft.stuttgart.citydoctor2.datastructure.GmlElement; /** * This error is created when an unexpected exception is thrown by the code. @@ -35,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.check.ModificationListener; * @author Matthias Betz * */ -public class UnknownCheckError extends CheckError { +public class UnknownCheckError implements CheckError { private static final long serialVersionUID = -6554097632341055596L; @@ -44,7 +45,6 @@ public class UnknownCheckError extends CheckError { private CheckId checkId; public UnknownCheckError(Checkable c, Exception e, Check check) { - super(ErrorId.UNKNOWN_ERROR, ErrorType.ERROR, null); this.c = c; this.e = e; checkId = check.getCheckId(); @@ -83,4 +83,19 @@ public class UnknownCheckError extends CheckError { public String toString() { return "UnknownCheckError [c=" + c + ", e=" + e + "]"; } + + @Override + public ErrorType getType() { + return ErrorType.ERROR; + } + + @Override + public ErrorId getErrorId() { + return ErrorId.UNKNOWN_ERROR; + } + + @Override + public GmlElement getFeature() { + return null; + } } diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java index b1730d404f6a4fb5e11dd07b8831e6b1de28c75d..3c28df77ccd2e0a098acfce66c760fcdf7a19ba6 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java @@ -73,6 +73,9 @@ public class Vertex extends Vector3d { } public Set<LinearRing> getAdjacentRings(Geometry geom) { + if (adjacentRings == null) { + return Collections.emptySet(); + } for (SerializablePair<Geometry, HashSet<LinearRing>> adjacency : adjacentRings) { if (adjacency.getValue0() == geom) { if (neighbors == null || neighbors.isEmpty()) { @@ -91,6 +94,9 @@ public class Vertex extends Vector3d { } void addAdjacentRing(LinearRing ring, Geometry geom) { + if (adjacentRings == null) { + adjacentRings = new ArrayList<>(2); + } findAdjacentRingsForGeometry(geom).add(ring); } @@ -122,6 +128,9 @@ public class Vertex extends Vector3d { } public Set<Polygon> getAdjacentPolygons(Geometry geom) { + if (adjacentRings == null) { + return Collections.emptySet(); + } for (SerializablePair<Geometry, HashSet<LinearRing>> adjecency : adjacentRings) { if (adjecency.getValue0() == geom) { Set<Polygon> polygons = new HashSet<>(); @@ -163,6 +172,9 @@ public class Vertex extends Vector3d { } public void clearAdjacentRings(Geometry geometry) { + if (adjacentRings == null) { + return; + } findAdjacentRingsForGeometry(geometry).clear(); } @@ -202,6 +214,6 @@ public class Vertex extends Vector3d { * Remove all adjacent rings from this vertex, ignoring geometry association */ void clearAdjacentRings() { - adjacentRings = new ArrayList<>(2); + adjacentRings = null; } } diff --git a/CityDoctorParent/CityDoctorValidation/pom.xml b/CityDoctorParent/CityDoctorValidation/pom.xml index 54a4c5afcfb1aff7f9c17c461744ebc3ff78b861..f9c22c36c02f2648ef60ddf536f396581ea48bb8 100644 --- a/CityDoctorParent/CityDoctorValidation/pom.xml +++ b/CityDoctorParent/CityDoctorValidation/pom.xml @@ -19,7 +19,6 @@ <groupId>de.hft.stuttgart</groupId> <artifactId>CityDoctorCheckResult</artifactId> </dependency> - <dependency> <groupId>net.sf.saxon</groupId> <artifactId>Saxon-HE</artifactId> @@ -67,17 +66,6 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> - <configuration> - <archive> - <manifest> - <addClasspath>true</addClasspath> - <classpathPrefix>libs/</classpathPrefix> - <mainClass> - de.hft.stuttgart.citydoctor2.CityDoctorValidation - </mainClass> - </manifest> - </archive> - </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> diff --git a/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat b/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat index d846eaf12f9adbf10db41141c70f141d8ed10b61..be1476f93431ac8f554f879d46cc8ce136ab5ef9 100644 --- a/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat +++ b/CityDoctorParent/CityDoctorValidation/src/assembly/start.bat @@ -1,2 +1,2 @@ -java -jar ${project.artifactId}-${project.version}.jar -in REKaiserwall.gml -config testConfigWithStreaming.yml -xmlReport output.xml +java -classpath libs/*;plugins/*;${project.artifactId}-${project.version}.jar de.hft.stuttgart.citydoctor2.CityDoctorValidation -in REKaiserwall.gml -config testConfigWithStreaming.yml -xmlReport output.xml pause \ No newline at end of file diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java index 2097d02424ba5e5258991631aa352827ddc7d264..35fbe42c794824fa680a2123e4eb673efe617f68 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/ValidationConfiguration.java @@ -26,7 +26,6 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; -import java.util.EnumMap; import java.util.HashMap; import java.util.Map; @@ -82,7 +81,7 @@ public class ValidationConfiguration implements Serializable { public static ValidationConfiguration loadStandardValidationConfig() { ValidationConfiguration config = new ValidationConfiguration(); - config.checks = new EnumMap<>(CheckId.class); + config.checks = new HashMap<>(); for (CheckPrototype c : Checks.getCheckPrototypes()) { CheckConfiguration cConfig = new CheckConfiguration(); cConfig.setEnabled(true); @@ -144,7 +143,7 @@ public class ValidationConfiguration implements Serializable { public Map<CheckId, CheckConfiguration> getChecks() { if (checks == null) { - checks = new EnumMap<>(CheckId.class); + checks = new HashMap<>(); } return checks; } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java index af875d30427a7d8f2f2cd3e79d0264c00c98c409..e60d8ec13dea80c9cfc96d8bbeaf62098086d736 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/CheckContainer.java @@ -66,7 +66,6 @@ public class CheckContainer extends Check { private final Check check; public CheckContainer(Check check) { - super(null); this.check = check; } @@ -81,7 +80,7 @@ public class CheckContainer extends Check { } @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { + public List<Class<Checkable>> getApplicableToClasses() { return check.getApplicableToClasses(); } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java index 6d1507525355190036040f3afcc4718abacf0ec6..cbae54fd03436c3afc344c491fe7a0880a9224a1 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java @@ -19,29 +19,30 @@ package de.hft.stuttgart.citydoctor2.checks; import java.util.ArrayList; -import java.util.EnumMap; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.ServiceLoader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; -import de.hft.stuttgart.citydoctor2.checks.geometry.RingNotClosedCheck; -import de.hft.stuttgart.citydoctor2.checks.geometry.MultipleConnectedComponentCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.DuplicatePointsCheck; -import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonWrongOrientationCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.FaceOutCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.HoleOutsideCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.InteriorDisconnectedCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.ManifoldVertexCheck; +import de.hft.stuttgart.citydoctor2.checks.geometry.MultipleConnectedComponentCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.NestedRingsCheck; -import de.hft.stuttgart.citydoctor2.checks.geometry.NumPointsCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.NonManifoldEdgeCheck; +import de.hft.stuttgart.citydoctor2.checks.geometry.NumPointsCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.PlanarCheck; -import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonSameOrientationCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonIntersectingRingsCheck; +import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonSameOrientationCheck; +import de.hft.stuttgart.citydoctor2.checks.geometry.PolygonWrongOrientationCheck; +import de.hft.stuttgart.citydoctor2.checks.geometry.RingNotClosedCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.RingSelfIntCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.SolidNotClosedCheck; import de.hft.stuttgart.citydoctor2.checks.geometry.SolidSelfIntCheck; @@ -71,7 +72,7 @@ public class Checks { static { checkPrototypes = new ArrayList<>(); - prototypeMap = new EnumMap<>(CheckId.class); + prototypeMap = new HashMap<>(); // add new checks here publish(new NumPointsCheck()); @@ -99,6 +100,12 @@ public class Checks { publish(new IsCeilingCheck()); publish(new IsGroundCheck()); publish(new RoofSurfaceUnfragmentedCheck()); + + // load checks from service loader + ServiceLoader<Check> checkLoader = ServiceLoader.load(Check.class); + for (Check c : checkLoader) { + publish(c); + } } /** @@ -106,7 +113,7 @@ public class Checks { * this container. Access the checks with {@link Checks#getCheckForId(CheckId)}. */ public Checks() { - checkMap = new EnumMap<>(CheckId.class); + checkMap = new HashMap<>(); for (CheckPrototype proto : checkPrototypes) { Check check = proto.createCheck(); diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java index 7836e9ccb26572964797936a15febbf68743bf54..d564b8365d7611e56aa2127d526100f61bac4f9b 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/DuplicatePointsCheck.java @@ -52,7 +52,6 @@ public class DuplicatePointsCheck extends Check { private static final String EPSILON_NAME = "minVertexDistance"; private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -62,8 +61,6 @@ public class DuplicatePointsCheck extends Check { ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); classes.add(LinearRing.class); - applicableToClasses = Collections.unmodifiableList(classes); - } private double epsilon = 0.0001; @@ -78,20 +75,11 @@ public class DuplicatePointsCheck extends Check { } } - public DuplicatePointsCheck() { - super(CheckId.C_GE_R_DUPLICATE_POINT); - } - @Override public List<CheckId> getDependencies() { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public void check(LinearRing lr) { List<Vertex> pointList = lr.getVertices(); @@ -137,4 +125,9 @@ public class DuplicatePointsCheck extends Check { return new DuplicatePointsCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_GE_R_DUPLICATE_POINT; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java index c1d8fb719da89529627d59a258b836a4dca56714..00799cd3200d6f2d96c3355678954fc388aaf43c 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.AllPolygonsWrongOrientationError; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; @@ -46,7 +45,6 @@ import de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon; public class FaceOutCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -65,14 +63,6 @@ public class FaceOutCheck extends Check { deps.add(CheckId.C_GE_S_SELF_INTERSECTION); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public FaceOutCheck() { - super(CheckId.C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION); } @Override @@ -182,11 +172,6 @@ public class FaceOutCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -197,4 +182,9 @@ public class FaceOutCheck extends Check { return new FaceOutCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java index e00b6ef5aec750beb2519eb101991bc4241de061..68f60a14186571f533a6cdb89a503e8eb108bb24 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/HoleOutsideCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.PolygonHoleOutsideError; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; @@ -37,7 +36,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; public class HoleOutsideCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -48,16 +46,8 @@ public class HoleOutsideCheck extends Check { deps.add(CheckId.C_GE_P_NON_PLANAR); deps.add(CheckId.C_GE_P_ORIENTATION_RINGS_SAME); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Polygon.class); - applicableToClasses = Collections.unmodifiableList(classes); } - public HoleOutsideCheck() { - super(CheckId.C_GE_P_HOLE_OUTSIDE); - } - @Override public void check(Polygon p) { List<LinearRing> holesOutside = new ArrayList<>(); @@ -85,11 +75,6 @@ public class HoleOutsideCheck extends Check { } } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -104,4 +89,9 @@ public class HoleOutsideCheck extends Check { public Check createNewInstance() { return new HoleOutsideCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_P_HOLE_OUTSIDE; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java index aaa0e14bdab53d34a7d0bb40e133efff3b1ab1fb..e659b8589809ed821e1d65611bf5c6680860333e 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/InteriorDisconnectedCheck.java @@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.DefaultParameter; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.Unit; @@ -46,7 +45,6 @@ public class InteriorDisconnectedCheck extends Check { private static final String EPSILON_NAME = "Epsilon"; private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<DefaultParameter> defaultParameters; static { @@ -58,10 +56,6 @@ public class InteriorDisconnectedCheck extends Check { deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Polygon.class); - applicableToClasses = Collections.unmodifiableList(classes); - ArrayList<DefaultParameter> defaultParameter = new ArrayList<>(); defaultParameter.add(new DefaultParameter(EPSILON_NAME, "0.0001", Unit.METER)); defaultParameters = Collections.unmodifiableList(defaultParameter); @@ -79,10 +73,6 @@ public class InteriorDisconnectedCheck extends Check { } } - public InteriorDisconnectedCheck() { - super(CheckId.C_GE_P_INTERIOR_DISCONNECTED); - } - @Override public void check(Polygon p) { if (p.getInnerRings().isEmpty()) { @@ -175,11 +165,6 @@ public class InteriorDisconnectedCheck extends Check { return defaultParameters; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -194,4 +179,9 @@ public class InteriorDisconnectedCheck extends Check { public Check createNewInstance() { return new InteriorDisconnectedCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_P_INTERIOR_DISCONNECTED; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java index 75fec3f3942d29d1d1d188b43da6511b615ac628..5a2c1c928e266b5b6c1d420ed6686ff069a78ed4 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/ManifoldVertexCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.NonManifoldVertexError; import de.hft.stuttgart.citydoctor2.datastructure.Edge; @@ -47,7 +46,6 @@ import de.hft.stuttgart.citydoctor2.math.graph.PolygonGraph; public class ManifoldVertexCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -64,15 +62,8 @@ public class ManifoldVertexCheck extends Check { dependencies = Collections.unmodifiableList(deps); - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); } - public ManifoldVertexCheck() { - super(CheckId.C_GE_S_NON_MANIFOLD_VERTEX); - } - @Override public void check(Geometry geom) { // only for solids @@ -102,11 +93,6 @@ public class ManifoldVertexCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -116,4 +102,9 @@ public class ManifoldVertexCheck extends Check { public Check createNewInstance() { return new ManifoldVertexCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_NON_MANIFOLD_VERTEX; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java index fffd7617645a519140de1835646a2424ab6d6f90..0caf422718a704e99ffbd5eaa1c16eca38b8406f 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/MultipleConnectedComponentCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.MultipleConnectedComponentsError; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; @@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.math.graph.PolygonGraph; public class MultipleConnectedComponentCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -59,16 +57,8 @@ public class MultipleConnectedComponentCheck extends Check { deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); } - public MultipleConnectedComponentCheck() { - super(CheckId.C_GE_S_MULTIPLE_CONNECTED_COMPONENTS); - } - @Override public void check(Geometry g) { // only for solids @@ -97,11 +87,6 @@ public class MultipleConnectedComponentCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -111,4 +96,9 @@ public class MultipleConnectedComponentCheck extends Check { public Check createNewInstance() { return new MultipleConnectedComponentCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_MULTIPLE_CONNECTED_COMPONENTS; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java index 44dccbee78b018bbca9b9ba9c250379232e21a19..7d5f9cc388ae96c6eb091513776b21a733c413a2 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NestedRingsCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.NestedRingError; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; @@ -37,7 +36,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; public class NestedRingsCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -48,14 +46,6 @@ public class NestedRingsCheck extends Check { deps.add(CheckId.C_GE_P_NON_PLANAR); deps.add(CheckId.C_GE_P_ORIENTATION_RINGS_SAME); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Polygon.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public NestedRingsCheck() { - super(CheckId.C_GE_P_INNER_RINGS_NESTED); } @Override @@ -91,11 +81,6 @@ public class NestedRingsCheck extends Check { return isInside; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -111,4 +96,9 @@ public class NestedRingsCheck extends Check { return new NestedRingsCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_GE_P_INNER_RINGS_NESTED; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java index fdaea689992eb1abb4d5daadba3c3a476992da3d..2f634d42d8d93ab0bd94b30f16997fb184136e36 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NonManifoldEdgeCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.NonManifoldEdgeError; import de.hft.stuttgart.citydoctor2.datastructure.Edge; @@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType; public class NonManifoldEdgeCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -57,14 +55,6 @@ public class NonManifoldEdgeCheck extends Check { deps.add(CheckId.C_GE_P_NON_PLANAR); deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public NonManifoldEdgeCheck() { - super(CheckId.C_GE_S_NON_MANIFOLD_EDGE); } @Override @@ -96,11 +86,6 @@ public class NonManifoldEdgeCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -110,4 +95,9 @@ public class NonManifoldEdgeCheck extends Check { public Check createNewInstance() { return new NonManifoldEdgeCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_NON_MANIFOLD_EDGE; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java index 26e3ee31ff2304519d6484dacb8ff1fbf3a43add..8f3a2c40c8878b18315adceaa8d021d758e86957 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NullAreaCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.DefaultParameter; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.Unit; @@ -46,7 +45,6 @@ public class NullAreaCheck extends Check { private static final String DELTA_NAME = "delta"; private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<DefaultParameter> defaultParameters; static { @@ -55,10 +53,6 @@ public class NullAreaCheck extends Check { deps.add(CheckId.C_GE_R_NOT_CLOSED); deps.add(CheckId.C_GE_R_DUPLICATE_POINT); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(LinearRing.class); - applicableToClasses = Collections.unmodifiableList(classes); ArrayList<DefaultParameter> defParameters = new ArrayList<>(); defParameters.add(new DefaultParameter(DELTA_NAME, "0.0001", Unit.SQUARE_METER)); @@ -67,11 +61,6 @@ public class NullAreaCheck extends Check { private double delta = 0.0001; - public NullAreaCheck() { - super(CheckId.NULL_AREA); - } - - @Override public void init(Map<String, String> parameters, ParserConfiguration config) { if (parameters.containsKey(DELTA_NAME)) { @@ -123,12 +112,6 @@ public class NullAreaCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -140,4 +123,9 @@ public class NullAreaCheck extends Check { return new NullAreaCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_GE_R_NULL_AREA; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java index b894c21174a5dcfa93cf517a2809fdae03a636e0..f2e7cbe8b0754eefcef7e4c53231b6cbfac1a96d 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheck.java @@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.RingTooFewPointsError; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; @@ -47,23 +46,14 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; */ public class NumPointsCheck extends Check { - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<CheckId> dependencies; static { - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(LinearRing.class); - applicableToClasses = Collections.unmodifiableList(classes); - ArrayList<CheckId> temp = new ArrayList<>(); temp.add(CheckId.C_GE_R_NOT_CLOSED); dependencies = Collections.unmodifiableList(temp); } - public NumPointsCheck() { - super(CheckId.C_GE_R_TOO_FEW_POINTS); - } - /** * checks if every linear ring has at least 3 distinct points */ @@ -101,12 +91,6 @@ public class NumPointsCheck extends Check { lr.addCheckResult(cr); } - - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -121,4 +105,9 @@ public class NumPointsCheck extends Check { public Check createNewInstance() { return new NumPointsCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_R_TOO_FEW_POINTS; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java index 3e0e2c7a9ae780597cb1d04a1f0a7c1111413291..bd0801a37b2ec3b445cc1cf70fe391b3979e7bd6 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PlanarCheck.java @@ -29,7 +29,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.DefaultParameter; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.Unit; @@ -63,7 +62,6 @@ public class PlanarCheck extends Check { private static final String TINY_EDGE_TOLERANCE = "tinyEdgeTolerance"; private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<DefaultParameter> defaultParameters; static { @@ -74,10 +72,6 @@ public class PlanarCheck extends Check { deps.add(CheckId.C_GE_R_SELF_INTERSECTION); dependencies = Collections.unmodifiableList(deps); - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(1); - classes.add(Polygon.class); - applicableToClasses = Collections.unmodifiableList(classes); - ArrayList<DefaultParameter> defParameters = new ArrayList<>(3); defParameters.add(new DefaultParameter(TYPE, DISTANCE, Unit.NONE)); defParameters.add(new DefaultParameter(DISTANCE_TOLERANCE, "0.01", Unit.METER)); @@ -93,10 +87,6 @@ public class PlanarCheck extends Check { private double delta = 0.01; private double tinyEdgeTolerance = 0.00000; - public PlanarCheck() { - super(CheckId.C_GE_P_NON_PLANAR); - } - @Override public void init(Map<String, String> parameters, ParserConfiguration config) { if (parameters.containsKey(TYPE)) { @@ -253,11 +243,6 @@ public class PlanarCheck extends Check { return false; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -272,4 +257,9 @@ public class PlanarCheck extends Check { public Check createNewInstance() { return new PlanarCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_P_NON_PLANAR; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java index d15f34fb6c82013db18578a0b42e72841e545366..9eb7c24ff7e746ef9a546ee1e834fbc6a2f36b81 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonIntersectingRingsCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.PolygonIntersectingRingsError; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; @@ -43,7 +42,6 @@ public class PolygonIntersectingRingsCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -55,16 +53,8 @@ public class PolygonIntersectingRingsCheck extends Check { deps.add(CheckId.C_GE_P_HOLE_OUTSIDE); deps.add(CheckId.C_GE_P_INNER_RINGS_NESTED); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Polygon.class); - applicableToClasses = Collections.unmodifiableList(classes); } - public PolygonIntersectingRingsCheck() { - super(CheckId.C_GE_P_INTERSECTING_RINGS); - } - @Override public void check(Polygon p) { if (p.getInnerRings().isEmpty()) { @@ -128,11 +118,6 @@ public class PolygonIntersectingRingsCheck extends Check { return false; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -147,4 +132,9 @@ public class PolygonIntersectingRingsCheck extends Check { public Check createNewInstance() { return new PolygonIntersectingRingsCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_P_INTERSECTING_RINGS; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java index d5bc2066b85ac0e086cad1702d041e36d358f263..7257585efbe6f275644c7945af9f49b11495952d 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonSameOrientationCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.PolygonSameOrientationError; import de.hft.stuttgart.citydoctor2.checks.util.Orientation; @@ -39,7 +38,6 @@ import de.hft.stuttgart.citydoctor2.math.Ring2d; public class PolygonSameOrientationCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -49,14 +47,6 @@ public class PolygonSameOrientationCheck extends Check { deps.add(CheckId.C_GE_R_SELF_INTERSECTION); deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Polygon.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public PolygonSameOrientationCheck() { - super(CheckId.C_GE_P_ORIENTATION_RINGS_SAME); } @Override @@ -84,11 +74,6 @@ public class PolygonSameOrientationCheck extends Check { } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -104,4 +89,9 @@ public class PolygonSameOrientationCheck extends Check { return new PolygonSameOrientationCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_GE_P_ORIENTATION_RINGS_SAME; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java index 89ed425d71c6d147b5c234c3e500dc2e80239578..c0e8fd9a2f4a1aa3808513ae84bf575f2fdfc158 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/PolygonWrongOrientationCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.PolygonWrongOrientationError; import de.hft.stuttgart.citydoctor2.datastructure.Edge; @@ -43,7 +42,6 @@ public class PolygonWrongOrientationCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -58,14 +56,6 @@ public class PolygonWrongOrientationCheck extends Check { deps.add(CheckId.C_GE_S_NOT_CLOSED); deps.add(CheckId.C_GE_S_NON_MANIFOLD_EDGE); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public PolygonWrongOrientationCheck() { - super(CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION); } @Override @@ -96,11 +86,6 @@ public class PolygonWrongOrientationCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -110,4 +95,9 @@ public class PolygonWrongOrientationCheck extends Check { public Check createNewInstance() { return new PolygonWrongOrientationCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION; + } } \ No newline at end of file diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java index 21279bcfd22aaabc7ae6f534246b70b8844221b0..156af281fc8e7f67002339754fff52d4e42bef5c 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingNotClosedCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.RingNotClosedError; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; @@ -43,19 +42,10 @@ import de.hft.stuttgart.citydoctor2.datastructure.Vertex; public class RingNotClosedCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(LinearRing.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public RingNotClosedCheck() { - super(CheckId.C_GE_R_NOT_CLOSED); } @Override @@ -63,11 +53,6 @@ public class RingNotClosedCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public void check(LinearRing lr) { Vertex first = lr.getVertices().get(0); @@ -92,4 +77,9 @@ public class RingNotClosedCheck extends Check { public Check createNewInstance() { return new RingNotClosedCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_R_NOT_CLOSED; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java index f62c3cf61788ba5967726935cf341234c433db95..a3e49ebfdba85d019a323cde98a61845b57e2498 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/RingSelfIntCheck.java @@ -28,10 +28,9 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; -import de.hft.stuttgart.citydoctor2.check.error.RingEdgeIntersectionError; import de.hft.stuttgart.citydoctor2.check.error.PointTouchesEdgeError; +import de.hft.stuttgart.citydoctor2.check.error.RingEdgeIntersectionError; import de.hft.stuttgart.citydoctor2.datastructure.Edge; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; import de.hft.stuttgart.citydoctor2.datastructure.LinearRing; @@ -46,7 +45,6 @@ public class RingSelfIntCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { @@ -55,19 +53,10 @@ public class RingSelfIntCheck extends Check { deps.add(CheckId.C_GE_R_NOT_CLOSED); deps.add(CheckId.C_GE_R_DUPLICATE_POINT); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(LinearRing.class); - applicableToClasses = Collections.unmodifiableList(classes); - } private double epsilon = 0.0001; - public RingSelfIntCheck() { - super(CheckId.C_GE_R_SELF_INTERSECTION); - } - @Override public void init(Map<String, String> parameters, ParserConfiguration config) { String epsilonString = parameters.get(EPSILON_NAME); @@ -151,11 +140,6 @@ public class RingSelfIntCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -165,4 +149,9 @@ public class RingSelfIntCheck extends Check { public Check createNewInstance() { return new RingSelfIntCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_R_SELF_INTERSECTION; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java index 6e996f244d9d2c990808c3241e4010375f0191af..2239d9459280456ffc13f02cd5a21eae320315d2 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidNotClosedCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError; import de.hft.stuttgart.citydoctor2.datastructure.Edge; @@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType; public class SolidNotClosedCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -58,16 +56,8 @@ public class SolidNotClosedCheck extends Check { deps.add(CheckId.C_GE_S_TOO_FEW_POLYGONS); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); } - public SolidNotClosedCheck() { - super(CheckId.C_GE_S_NOT_CLOSED); - } - @Override public void check(Geometry g) { // only for solids @@ -98,11 +88,6 @@ public class SolidNotClosedCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -112,4 +97,9 @@ public class SolidNotClosedCheck extends Check { public Check createNewInstance() { return new SolidNotClosedCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_NOT_CLOSED; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java index 5878d8a3b8ea0807e376f3380868aa34403ade25..ed5f7d065fef919c7dd54a91455f896e47be60d6 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.GeometrySelfIntersection; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError; @@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.utils.PolygonIntersection; public class SolidSelfIntCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -66,14 +64,6 @@ public class SolidSelfIntCheck extends Check { deps.add(CheckId.C_GE_S_NON_MANIFOLD_EDGE); deps.add(CheckId.C_GE_S_NON_MANIFOLD_VERTEX); deps.add(CheckId.C_GE_S_POLYGON_WRONG_ORIENTATION); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public SolidSelfIntCheck() { - super(CheckId.C_GE_S_SELF_INTERSECTION); } @Override @@ -104,11 +94,6 @@ public class SolidSelfIntCheck extends Check { return cr; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -123,4 +108,9 @@ public class SolidSelfIntCheck extends Check { public Check createNewInstance() { return new SolidSelfIntCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_SELF_INTERSECTION; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java index 778cd2621d6a9c5579255a5def7c4685f4d1f5a1..f2ea49e5c169825705af3bb0da494118c8d2f145 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.CheckError; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError; import de.hft.stuttgart.citydoctor2.datastructure.Geometry; @@ -41,7 +40,6 @@ import de.hft.stuttgart.citydoctor2.datastructure.GeometryType; public class TooFewPolygonsCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); @@ -54,16 +52,8 @@ public class TooFewPolygonsCheck extends Check { deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(Geometry.class); - applicableToClasses = Collections.unmodifiableList(classes); } - public TooFewPolygonsCheck() { - super(CheckId.C_GE_S_TOO_FEW_POLYGONS); - } - /** * This method does the main check whether the solid have at least 4 faces or * not. @@ -93,11 +83,6 @@ public class TooFewPolygonsCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.GEOMETRY; @@ -107,4 +92,9 @@ public class TooFewPolygonsCheck extends Check { public Check createNewInstance() { return new TooFewPolygonsCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_S_TOO_FEW_POLYGONS; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java index f58ca417b31ab3f61940aed681226bc10ae392f6..55bcad728d5ebd9cf4f7a2b8b649b60812af1f5a 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java @@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.checks.util.UnfragmentedCheck; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; @@ -41,20 +40,11 @@ import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType; public class GroundSurfaceUnfragmented extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; static { ArrayList<CheckId> deps = new ArrayList<>(); deps.add(CheckId.C_GE_R_TOO_FEW_POINTS); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(BoundarySurface.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public GroundSurfaceUnfragmented() { - super(CheckId.C_SEM_BS_GROUND_NOT_FRAGMENTED); } @Override @@ -77,11 +67,6 @@ public class GroundSurfaceUnfragmented extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.SEMANTIC; @@ -92,4 +77,9 @@ public class GroundSurfaceUnfragmented extends Check { return new GroundSurfaceUnfragmented(); } + @Override + public CheckId getCheckId() { + return CheckId.C_SEM_BS_GROUND_NOT_FRAGMENTED; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java index 202aa5bcd26a003678ed6fe4d2ef1f55276b10b5..c825c04b401dfaa6e73f340fdaf594c0fe7eaa83 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java @@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.NotCeilingError; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; @@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; */ public class IsCeilingCheck extends Check { - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<CheckId> dependencies; static { @@ -55,14 +53,6 @@ public class IsCeilingCheck extends Check { deps.add(CheckId.C_GE_R_SELF_INTERSECTION); deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(BoundarySurface.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public IsCeilingCheck() { - super(CheckId.C_SEM_BS_NOT_CEILING); } @Override @@ -86,11 +76,6 @@ public class IsCeilingCheck extends Check { bs.addCheckResult(cr); } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -106,4 +91,9 @@ public class IsCeilingCheck extends Check { return new IsCeilingCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_SEM_BS_NOT_CEILING; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java index ac09d8a0700247e8c6b05b79dd4063c2c9d8cce2..e2e0017fd6e235adeb5f257c8ce911e0d41ed1c7 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java @@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.NotFloorError; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; @@ -45,7 +44,6 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; */ public class IsFloorCheck extends Check { - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<CheckId> dependencies; static { @@ -56,14 +54,6 @@ public class IsFloorCheck extends Check { deps.add(CheckId.C_GE_R_SELF_INTERSECTION); deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(BoundarySurface.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public IsFloorCheck() { - super(CheckId.C_SEM_BS_NOT_FLOOR); } @Override @@ -92,11 +82,6 @@ public class IsFloorCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public CheckType getType() { return CheckType.SEMANTIC; @@ -107,4 +92,9 @@ public class IsFloorCheck extends Check { return new IsFloorCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_SEM_BS_NOT_FLOOR; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java index 8e7f6f7e6c80d182a88407f372789c3a43831813..0d4e46fe261551e203a13ff356c58427cd1939e3 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java @@ -26,7 +26,6 @@ import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.error.NotGroundError; import de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface; @@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d; */ public class IsGroundCheck extends Check { - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<CheckId> dependencies; static { @@ -55,14 +53,6 @@ public class IsGroundCheck extends Check { deps.add(CheckId.C_GE_R_SELF_INTERSECTION); deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(BoundarySurface.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public IsGroundCheck() { - super(CheckId.C_SEM_BS_NOT_GROUND); } @Override @@ -86,11 +76,6 @@ public class IsGroundCheck extends Check { bs.addCheckResult(cr); } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -105,4 +90,9 @@ public class IsGroundCheck extends Check { public Check createNewInstance() { return new IsGroundCheck(); } + + @Override + public CheckId getCheckId() { + return CheckId.C_SEM_BS_NOT_GROUND; + } } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java index e99f934bd2aa65748b9832a34d1d9fcd9be472e8..85437c59efb7778b1306475203d870440c05c690 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.DefaultParameter; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.check.Unit; @@ -52,7 +51,6 @@ public class IsWallCheck extends Check { private static final String LOWER_ANGLE_NAME = "lowerAngle"; private static final String UPPER_ANGLE_NAME = "upperAngle"; - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<CheckId> dependencies; private static final List<DefaultParameter> defaultParameters; @@ -65,10 +63,6 @@ public class IsWallCheck extends Check { deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(BoundarySurface.class); - applicableToClasses = Collections.unmodifiableList(classes); - ArrayList<DefaultParameter> defParameters = new ArrayList<>(3); defParameters.add(new DefaultParameter(LOWER_ANGLE_NAME, "45", Unit.DEGREE)); defParameters.add(new DefaultParameter(UPPER_ANGLE_NAME, "135", Unit.DEGREE)); @@ -84,10 +78,6 @@ public class IsWallCheck extends Check { private double lowerAngleCos = Math.cos(45 * Math.PI / 180); private double upperAngleCos = Math.cos(135 * Math.PI / 180); - public IsWallCheck() { - super(CheckId.C_SEM_BS_IS_WALL); - } - @Override public void init(Map<String, String> params, ParserConfiguration config) { String lowerAngleString = params.get(LOWER_ANGLE_NAME); @@ -137,11 +127,6 @@ public class IsWallCheck extends Check { bs.addCheckResult(cr); } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<CheckId> getDependencies() { return dependencies; @@ -162,4 +147,9 @@ public class IsWallCheck extends Check { return new IsWallCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_SEM_BS_IS_WALL; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java index 60d0fd8520f3b0ec2ad180ac7c8052026bed1db5..692ed2ee4f0839641c9b67d5b157d5452327c57c 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java @@ -27,7 +27,6 @@ import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.DefaultParameter; import de.hft.stuttgart.citydoctor2.check.Unit; import de.hft.stuttgart.citydoctor2.checks.util.UnfragmentedCheck; @@ -44,7 +43,6 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; public class RoofSurfaceUnfragmentedCheck extends Check { private static final List<CheckId> dependencies; - private static final List<Class<? extends Checkable>> applicableToClasses; private static final List<DefaultParameter> defaultParameters; private static final String MAX_ANGLE_DEVIATION = "maxAngleDeviation"; @@ -63,14 +61,6 @@ public class RoofSurfaceUnfragmentedCheck extends Check { deps.add(CheckId.C_GE_R_SELF_INTERSECTION); deps.add(CheckId.C_GE_P_NON_PLANAR); dependencies = Collections.unmodifiableList(deps); - - ArrayList<Class<? extends Checkable>> classes = new ArrayList<>(); - classes.add(BoundarySurface.class); - applicableToClasses = Collections.unmodifiableList(classes); - } - - public RoofSurfaceUnfragmentedCheck() { - super(CheckId.C_SEM_BS_ROOF_NOT_FRAGMENTED); } @Override @@ -97,11 +87,6 @@ public class RoofSurfaceUnfragmentedCheck extends Check { return dependencies; } - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return applicableToClasses; - } - @Override public List<DefaultParameter> getDefaultParameter() { return defaultParameters; @@ -117,4 +102,9 @@ public class RoofSurfaceUnfragmentedCheck extends Check { return new RoofSurfaceUnfragmentedCheck(); } + @Override + public CheckId getCheckId() { + return CheckId.C_SEM_BS_ROOF_NOT_FRAGMENTED; + } + } diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java index efa73c8cd1f2bec92a7ef51c229f05d497e5b1ce..0b72d2d165675eb6621dc3dc7eb1fdb1c7a47533 100644 --- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java +++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java @@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.reporting.pdf; import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; -import java.util.EnumMap; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -113,7 +112,7 @@ public class PdfStreamReporter implements StreamReporter { public PdfStreamReporter(OutputStream pdfOutputFile, String fileName, ValidationConfiguration config, String logoPath) { this.config = config; - errorStatistics = new EnumMap<>(ErrorId.class); + errorStatistics = new HashMap<>(); outFile = pdfOutputFile; report = new PdfReport(logoPath); report.writeSourceFileName(fileName); diff --git a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java index 05a10fb57861fe70906e45393162166f6c565479..be6ff0a7c5ff3e541d4883f349b9cee68adbf124 100644 --- a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java +++ b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java @@ -20,15 +20,12 @@ package de.hft.stuttgart.citydoctor2.checks; import static org.junit.Assert.assertEquals; -import java.util.List; - import org.junit.Test; import de.hft.stuttgart.citydoctor2.check.Check; import de.hft.stuttgart.citydoctor2.check.CheckId; import de.hft.stuttgart.citydoctor2.check.CheckResult; import de.hft.stuttgart.citydoctor2.check.CheckType; -import de.hft.stuttgart.citydoctor2.check.Checkable; import de.hft.stuttgart.citydoctor2.check.ErrorId; import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.datastructure.AbstractBuilding; @@ -38,13 +35,8 @@ public class CheckContainerTest { @Test public void testExceptionCheck() { - Check c = new Check(CheckId.C_GE_P_HOLE_OUTSIDE) { + Check c = new Check() { - @Override - public List<Class<? extends Checkable>> getApplicableToClasses() { - return null; - } - @Override public void check(AbstractBuilding ab) { throw new RuntimeException(); @@ -59,6 +51,11 @@ public class CheckContainerTest { public Check createNewInstance() { return null; } + + @Override + public CheckId getCheckId() { + return CheckId.C_GE_P_HOLE_OUTSIDE; + } }; CheckContainer cc = new CheckContainer(c); diff --git a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java index 9528e5088ea087556652d59a49cde0b20c71fb10..f5a5885afba3ab1e7395a8b13f981fb76671afa4 100644 --- a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java +++ b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java @@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.systemtest; import static org.junit.Assert.assertEquals; import java.io.IOException; -import java.util.EnumMap; import java.util.HashMap; import java.util.Map; @@ -53,7 +52,7 @@ public class NonManifoldEdgeSystemTest { @Test public void testNonManifoldEdge2() throws CityGmlParseException, IOException, InvalidGmlFileException { - Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class); + Map<CheckId, Map<String, String>> paramMap = new HashMap<>(); Map<String, String> parameter = new HashMap<>(); parameter.put("distanceTolerance", "0.1"); paramMap.put(CheckId.C_GE_P_NON_PLANAR, parameter); diff --git a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java index 7230df5eae40e455043e3369a292f2dcf00f681d..24199737d5efc5bd79e0b71b1f15ceeff2defa87 100644 --- a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java +++ b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java @@ -21,7 +21,6 @@ package de.hft.stuttgart.citydoctor2.systemtest; import static org.junit.Assert.assertEquals; import java.io.IOException; -import java.util.EnumMap; import java.util.HashMap; import java.util.Map; @@ -35,9 +34,9 @@ import de.hft.stuttgart.citydoctor2.check.ResultStatus; import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel; import de.hft.stuttgart.citydoctor2.datastructure.Polygon; import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException; -import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; import de.hft.stuttgart.citydoctor2.parser.CityGmlParser; import de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException; +import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration; /** * @@ -114,7 +113,7 @@ public class PlanarTest { @Test public void testPlanarPolygon4() throws CityGmlParseException, IOException, InvalidGmlFileException { - Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class); + Map<CheckId, Map<String, String>> paramMap = new HashMap<>(); Map<String, String> parameter = new HashMap<>(); parameter.put("distanceTolerance", "0.01"); paramMap.put(CheckId.C_GE_P_NON_PLANAR, parameter); @@ -127,7 +126,7 @@ public class PlanarTest { @Test public void testPlanarPolygon5() throws CityGmlParseException, IOException, InvalidGmlFileException { - Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class); + Map<CheckId, Map<String, String>> paramMap = new HashMap<>(); Map<String, String> parameter = new HashMap<>(); parameter.put("type", "distance"); parameter.put("distanceTolerance", "0.5"); @@ -140,7 +139,7 @@ public class PlanarTest { @Test public void testPlanarPolygon6() throws CityGmlParseException, IOException, InvalidGmlFileException { - Map<CheckId, Map<String, String>> paramMap = new EnumMap<>(CheckId.class); + Map<CheckId, Map<String, String>> paramMap = new HashMap<>(); Map<String, String> parameter = new HashMap<>(); parameter.put("type", "both"); paramMap.put(CheckId.C_GE_P_NON_PLANAR, parameter);