Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Commits
4a48c138
Commit
4a48c138
authored
Sep 29, 2026
by
Luna Riegel
Browse files
Refactor: Remove obsolete check
parent
2b7c6936
Changes
2
Show whitespace changes
Inline
Side-by-side
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/Checks.java
View file @
4a48c138
...
@@ -24,7 +24,6 @@ import java.util.List;
...
@@ -24,7 +24,6 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.ServiceLoader
;
import
java.util.ServiceLoader
;
import
de.hft.stuttgart.citydoctor2.checks.topology.DisconnectedIslandCheck
;
import
de.hft.stuttgart.citydoctor2.checks.topology.FeatureCollisionCheck
;
import
de.hft.stuttgart.citydoctor2.checks.topology.FeatureCollisionCheck
;
import
de.hft.stuttgart.citydoctor2.checks.topology.MisalignedUtilityConnectionCheck
;
import
de.hft.stuttgart.citydoctor2.checks.topology.MisalignedUtilityConnectionCheck
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
...
@@ -118,7 +117,6 @@ public class Checks {
...
@@ -118,7 +117,6 @@ public class Checks {
//topology checks
//topology checks
publish
(
new
FeatureCollisionCheck
());
publish
(
new
FeatureCollisionCheck
());
publish
(
new
DisconnectedIslandCheck
());
publish
(
new
MisalignedUtilityConnectionCheck
());
publish
(
new
MisalignedUtilityConnectionCheck
());
// load checks from service loader
// load checks from service loader
ServiceLoader
<
Check
>
checkLoader
=
ServiceLoader
.
load
(
Check
.
class
);
ServiceLoader
<
Check
>
checkLoader
=
ServiceLoader
.
load
(
Check
.
class
);
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/topology/DisconnectedIslandCheck.java
deleted
100644 → 0
View file @
2b7c6936
package
de.hft.stuttgart.citydoctor2.checks.topology
;
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.CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.GlobalParameters
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.FloatingUtilityError
;
import
de.hft.stuttgart.citydoctor2.checks.Checks
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.checks.util.SelfIntersectionUtil
;
import
de.hft.stuttgart.citydoctor2.database.CityObjectCache
;
import
de.hft.stuttgart.citydoctor2.datastructure.Building
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityObject
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
import
de.hft.stuttgart.citydoctor2.datastructure.OtherConstructionObject
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.PolygonIntersection
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
public
class
DisconnectedIslandCheck
extends
Check
{
private
static
final
List
<
CheckId
>
dependencies
;
static
{
ArrayList
<
CheckId
>
deps
=
new
ArrayList
<>();
deps
.
add
(
CheckId
.
C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION
);
dependencies
=
Collections
.
unmodifiableList
(
deps
);
}
private
double
epsilon
=
Checks
.
MIN_VERTEX_DISTANCE_DEFAULT
;
private
double
searchRadius
=
Checks
.
MIN_VERTEX_DISTANCE_DEFAULT
;
private
CityObjectCache
cache
;
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_TO_UTILITY_LINES_DISCONNECTED
);
}
@Override
public
CheckId
getCheckId
()
{
return
CheckId
.
C_TO_FLOATING_UTILITY
;
}
@Override
public
RequirementType
getType
()
{
return
RequirementType
.
TOPOLOGY
;
}
@Override
public
Check
createNewInstance
()
{
return
new
DisconnectedIslandCheck
();
}
@Override
public
List
<
CheckId
>
getDependencies
()
{
return
dependencies
;
}
@Override
public
void
init
(
Map
<
CheckId
,
Map
<
String
,
String
>>
params
,
ParserConfiguration
config
,
CityObjectCache
cache
)
{
Map
<
String
,
String
>
localParameters
=
params
.
get
(
getCheckId
());
this
.
cache
=
cache
;
if
(
localParameters
==
null
)
{
// no parameters
return
;
}
String
epsilonString
=
localParameters
.
get
(
GlobalParameters
.
MIN_VERTEX_DISTANCE
);
if
(
epsilonString
!=
null
)
{
epsilon
=
Double
.
parseDouble
(
epsilonString
);
}
}
@Override
public
void
check
(
Building
b
)
{
checkUtilityLinesConnections
(
b
);
}
@Override
public
void
check
(
OtherConstructionObject
oco
)
{
checkUtilityLinesConnections
(
oco
);
}
private
void
checkUtilityLinesConnections
(
CityObject
subject
){
Collection
<
CityObject
>
candidates
=
cache
.
getCandidates
(
subject
,
searchRadius
);
if
(
candidates
.
isEmpty
())
{
FloatingUtilityError
err
=
new
FloatingUtilityError
(
subject
,
subject
.
getHighestLodGeometry
());
subject
.
addCheckResult
(
new
CheckResult
(
this
,
ResultStatus
.
ERROR
,
err
));
return
;
}
List
<
Geometry
>
subjGeoms
=
new
ArrayList
<>();
subject
.
accept
(
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
Geometry
geom
)
{
subjGeoms
.
add
(
geom
);
}
});
boolean
floating
=
true
;
for
(
Geometry
sGeo
:
subjGeoms
)
{
final
boolean
[]
connected
=
{
false
};
for
(
CityObject
candidate
:
candidates
){
if
(
connected
[
0
])
{
// A connection was found, skip the remaining candidates
break
;
}
candidate
.
accept
(
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
Geometry
cGeo
)
{
if
(
sGeo
.
getLod
()
!=
cGeo
.
getLod
()){
return
;
}
List
<
PolygonIntersection
>
polygonIntersections
=
SelfIntersectionUtil
.
calculateGeometryIntersections
(
sGeo
,
cGeo
,
epsilon
);
if
(!
polygonIntersections
.
isEmpty
())
{
connected
[
0
]
=
true
;
}
}
});
}
if
(
connected
[
0
]){
floating
=
false
;
break
;
}
}
if
(
floating
){
subject
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_TO_FLOATING_UTILITY
,
ResultStatus
.
ERROR
,
new
FloatingUtilityError
(
subject
,
subject
.
getHighestLodGeometry
())));
}
else
{
subject
.
addCheckResult
(
new
CheckResult
(
CheckId
.
C_TO_FLOATING_UTILITY
,
ResultStatus
.
OK
,
null
));
}
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment