From 934b4f1900192c2eb9906700a5d64cd9d91a110c Mon Sep 17 00:00:00 2001 From: Matthias Betz Date: Tue, 1 Dec 2020 12:01:07 +0100 Subject: [PATCH] fixed an issue with checks that apply to superclasses instead of actual instances --- .../de/hft/stuttgart/citydoctor2/check/Check.java | 11 ++++++++++- .../de/hft/stuttgart/citydoctor2/check/Checkable.java | 5 +++++ .../citydoctor2/datastructure/GmlElement.java | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) 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 66d2c5cc..2610cc12 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 @@ -126,7 +126,7 @@ public abstract class Check { */ public boolean canExecute(Checkable c) { // ignore objects where this check doesn't apply to - if (!getApplicableToClasses().contains(c.getCheckClass())) { + if (!canBeApplied(c)) { return false; } // check that object doesn't have errors for dependencies of this check @@ -145,6 +145,15 @@ public abstract class Check { } return true; } + + private boolean canBeApplied(Checkable c) { + for (Class checkableClass : getApplicableToClasses()) { + if (checkableClass.isAssignableFrom(c.getCheckClass())) { + return true; + } + } + return false; + } /** * check anything 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 f53e78b7..1349baef 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 @@ -74,6 +74,11 @@ public abstract class Checkable implements Serializable { * @return the GML-ID */ public abstract GmlId getGmlId(); + + public boolean hasGmlId() { + return false; + } + /** * This should be called before executing a check if low memory consumption diff --git a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/GmlElement.java b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/GmlElement.java index 1e5c118e..ea50cf22 100644 --- a/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/GmlElement.java +++ b/CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/GmlElement.java @@ -73,4 +73,9 @@ public abstract class GmlElement extends Checkable { } return gmlId; } + + @Override + public boolean hasGmlId() { + return gmlId != null; + } } -- GitLab