Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Commits
85cf93b6
Commit
85cf93b6
authored
Mar 12, 2021
by
Matthias Betz
Browse files
reworked check engine now working on requirements
parent
35577785
Pipeline
#2108
passed with stage
in 3 minutes and 6 seconds
Changes
66
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/SolidSelfIntCheck.java
View file @
85cf93b6
...
...
@@ -21,15 +21,18 @@ package de.hft.stuttgart.citydoctor2.checks.geometry;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
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.
Check
Type
;
import
de.hft.stuttgart.citydoctor2.check.
Requirement
Type
;
import
de.hft.stuttgart.citydoctor2.check.GeometrySelfIntersection
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.checks.util.SelfIntersectionUtil
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
import
de.hft.stuttgart.citydoctor2.datastructure.GeometryType
;
...
...
@@ -98,10 +101,15 @@ public class SolidSelfIntCheck extends Check {
public
List
<
CheckId
>
getDependencies
()
{
return
dependencies
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_GE_S_SELF_INTERSECTION
);
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
GEOMETRY
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
GEOMETRY
;
}
@Override
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/
Num
PointsCheck.java
→
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/
TooFew
PointsCheck.java
View file @
85cf93b6
...
...
@@ -28,23 +28,25 @@ import de.hft.stuttgart.citydoctor2.check.Check;
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.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.RingTooFewPointsError
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing
;
import
de.hft.stuttgart.citydoctor2.datastructure.Vertex
;
/**
* C
P_NUM
POINTS checks the minimum number of point in a linear ring. At least
* C
_GE_R_TOO_FEW_
POINTS checks the minimum number of point in a linear ring. At least
* three vertices are minimum for a linear ring. <br/>
* <br/>
* <b>Dependency:</b> <br/>
* <dd>
* <dd>
none
</dd></dd>
* <dd>
C_GE_R_NOT_CLOSED
</dd></dd>
*
* @author Matthias Betz
- 12bema1bif@hft-stuttgart.de
* @author Matthias Betz
*/
public
class
Num
PointsCheck
extends
Check
{
public
class
TooFew
PointsCheck
extends
Check
{
private
static
final
List
<
CheckId
>
dependencies
;
...
...
@@ -95,15 +97,20 @@ public class NumPointsCheck extends Check {
public
List
<
CheckId
>
getDependencies
()
{
return
dependencies
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_GE_R_TOO_FEW_POINTS
);
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
GEOMETRY
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
GEOMETRY
;
}
@Override
public
Check
createNewInstance
()
{
return
new
Num
PointsCheck
();
return
new
TooFew
PointsCheck
();
}
@Override
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/geometry/TooFewPolygonsCheck.java
View file @
85cf93b6
...
...
@@ -21,21 +21,24 @@ package de.hft.stuttgart.citydoctor2.checks.geometry;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
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.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
import
de.hft.stuttgart.citydoctor2.datastructure.GeometryType
;
/**
* This class checks minimum number of p
lane
s for a solid
* This class checks minimum number of p
olygon
s for a solid
*
* @author Matthias Betz
12bema1bif@hft-stuttgart.de
* @author Matthias Betz
*/
public
class
TooFewPolygonsCheck
extends
Check
{
...
...
@@ -59,7 +62,6 @@ public class TooFewPolygonsCheck extends Check {
* not.
*
* @param toBeCheckedGeometry The ViewableGeometry that has to be checked.
* @return Vector of CDErrors
*/
@Override
public
void
check
(
Geometry
g
)
{
...
...
@@ -81,10 +83,15 @@ public class TooFewPolygonsCheck extends Check {
public
List
<
CheckId
>
getDependencies
()
{
return
dependencies
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_GE_S_TOO_FEW_POLYGONS
);
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
GEOMETRY
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
GEOMETRY
;
}
@Override
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/GroundSurfaceUnfragmented.java
View file @
85cf93b6
...
...
@@ -21,12 +21,15 @@ package de.hft.stuttgart.citydoctor2.checks.semantics;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
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.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.checks.util.UnfragmentedCheck
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType
;
...
...
@@ -66,10 +69,15 @@ public class GroundSurfaceUnfragmented extends Check {
public
List
<
CheckId
>
getDependencies
()
{
return
dependencies
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_SE_BS_GROUND_UNFRAGMENTED
);
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
SEMANTIC
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
SEMANTIC
;
}
@Override
...
...
@@ -79,7 +87,7 @@ public class GroundSurfaceUnfragmented extends Check {
@Override
public
CheckId
getCheckId
()
{
return
CheckId
.
C_SE
M
_BS_GROUND_NOT_FRAGMENTED
;
return
CheckId
.
C_SE_BS_GROUND_NOT_FRAGMENTED
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsCeilingCheck.java
View file @
85cf93b6
...
...
@@ -21,13 +21,16 @@ package de.hft.stuttgart.citydoctor2.checks.semantics;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
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.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.NotCeilingError
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
...
...
@@ -80,10 +83,15 @@ public class IsCeilingCheck extends Check {
public
List
<
CheckId
>
getDependencies
()
{
return
dependencies
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_SE_BS_IS_CEILING
);
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
SEMANTIC
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
SEMANTIC
;
}
@Override
...
...
@@ -93,7 +101,7 @@ public class IsCeilingCheck extends Check {
@Override
public
CheckId
getCheckId
()
{
return
CheckId
.
C_SE
M
_BS_
NOT
_CEILING
;
return
CheckId
.
C_SE_BS_
IS
_CEILING
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsFloorCheck.java
View file @
85cf93b6
...
...
@@ -21,13 +21,16 @@ package de.hft.stuttgart.citydoctor2.checks.semantics;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
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.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.NotFloorError
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
...
...
@@ -83,8 +86,13 @@ public class IsFloorCheck extends Check {
}
@Override
public
CheckType
getType
()
{
return
CheckType
.
SEMANTIC
;
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_SE_BS_IS_FLOOR
);
}
@Override
public
RequirementType
getType
()
{
return
RequirementType
.
SEMANTIC
;
}
@Override
...
...
@@ -94,7 +102,7 @@ public class IsFloorCheck extends Check {
@Override
public
CheckId
getCheckId
()
{
return
CheckId
.
C_SE
M
_BS_
NOT
_FLOOR
;
return
CheckId
.
C_SE_BS_
IS
_FLOOR
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsGroundCheck.java
View file @
85cf93b6
...
...
@@ -21,13 +21,16 @@ package de.hft.stuttgart.citydoctor2.checks.semantics;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
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.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.NotGroundError
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
...
...
@@ -80,10 +83,15 @@ public class IsGroundCheck extends Check {
public
List
<
CheckId
>
getDependencies
()
{
return
dependencies
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_SE_BS_IS_GROUND
);
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
SEMANTIC
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
SEMANTIC
;
}
@Override
...
...
@@ -93,6 +101,6 @@ public class IsGroundCheck extends Check {
@Override
public
CheckId
getCheckId
()
{
return
CheckId
.
C_SE
M
_BS_
NOT
_GROUND
;
return
CheckId
.
C_SE_BS_
IS
_GROUND
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/IsWallCheck.java
View file @
85cf93b6
...
...
@@ -22,15 +22,18 @@ import java.util.ArrayList;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
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.
Check
Type
;
import
de.hft.stuttgart.citydoctor2.check.
Requirement
Type
;
import
de.hft.stuttgart.citydoctor2.check.DefaultParameter
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.Unit
;
import
de.hft.stuttgart.citydoctor2.check.error.NotWallError
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
...
...
@@ -132,14 +135,19 @@ public class IsWallCheck extends Check {
return
dependencies
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_SE_BS_IS_WALL
);
}
@Override
public
List
<
DefaultParameter
>
getDefaultParameter
()
{
return
defaultParameters
;
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
SEMANTIC
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
SEMANTIC
;
}
@Override
...
...
@@ -149,7 +157,7 @@ public class IsWallCheck extends Check {
@Override
public
CheckId
getCheckId
()
{
return
CheckId
.
C_SE
M
_BS_IS_WALL
;
return
CheckId
.
C_SE_BS_IS_WALL
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java
View file @
85cf93b6
...
...
@@ -22,13 +22,16 @@ import java.util.ArrayList;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
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.
Check
Type
;
import
de.hft.stuttgart.citydoctor2.check.
Requirement
Type
;
import
de.hft.stuttgart.citydoctor2.check.DefaultParameter
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.Unit
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.checks.util.UnfragmentedCheck
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurfaceType
;
...
...
@@ -91,10 +94,15 @@ public class RoofSurfaceUnfragmentedCheck extends Check {
public
List
<
DefaultParameter
>
getDefaultParameter
()
{
return
defaultParameters
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
CollectionUtils
.
singletonSet
(
Requirement
.
R_SE_BS_ROOF_UNFRAGMENTED
);
}
@Override
public
Check
Type
getType
()
{
return
Check
Type
.
SEMANTIC
;
public
Requirement
Type
getType
()
{
return
Requirement
Type
.
SEMANTIC
;
}
@Override
...
...
@@ -104,7 +112,7 @@ public class RoofSurfaceUnfragmentedCheck extends Check {
@Override
public
CheckId
getCheckId
()
{
return
CheckId
.
C_SE
M
_BS_ROOF_N
OT_
FRAGMENTED
;
return
CheckId
.
C_SE_BS_ROOF_
U
NFRAGMENTED
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/util/CollectionUtils.java
0 → 100644
View file @
85cf93b6
/*-
* Copyright 2020 Beuth Hochschule für Technik Berlin, Hochschule für Technik Stuttgart
*
* This file is part of CityDoctor2.
*
* CityDoctor2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (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
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with CityDoctor2. If not, see <https://www.gnu.org/licenses/>.
*/
package
de.hft.stuttgart.citydoctor2.checks.util
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.Set
;
public
class
CollectionUtils
{
private
CollectionUtils
()
{
}
public
static
<
T
>
Set
<
T
>
singletonSet
(
T
v
)
{
HashSet
<
T
>
set
=
new
HashSet
<>(
2
);
set
.
add
(
v
);
return
set
;
}
@SafeVarargs
public
static
<
T
>
Set
<
T
>
asSet
(
T
...
values
)
{
HashSet
<
T
>
set
=
new
HashSet
<>((
int
)
(
values
.
length
*
1.25
));
set
.
addAll
(
Arrays
.
asList
(
values
));
return
set
;
}
}
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/XmlStreamReporter.java
View file @
85cf93b6
...
...
@@ -32,10 +32,9 @@ import java.util.concurrent.atomic.AtomicInteger;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
de.hft.stuttgart.citydoctor2.check.CheckConfiguration
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.check.ErrorType
;
import
de.hft.stuttgart.citydoctor2.check.RequirementConfiguration
;
import
de.hft.stuttgart.citydoctor2.check.ValidationConfiguration
;
import
de.hft.stuttgart.citydoctor2.checkresult.CheckReport
;
import
de.hft.stuttgart.citydoctor2.checkresult.Environment
;
...
...
@@ -115,10 +114,10 @@ public class XmlStreamReporter implements StreamReporter {
plan
.
setNumberOfRoundingPlaces
(
config
.
getNumberOfRoundingPlaces
());
List
<
PlanCheck
>
checkConfigs
=
new
ArrayList
<>();
plan
.
setChecks
(
checkConfigs
);
for
(
Entry
<
CheckId
,
Check
Configuration
>
e
:
config
.
get
Check
s
().
entrySet
())
{
for
(
Entry
<
String
,
Requirement
Configuration
>
e
:
config
.
get
Requirement
s
().
entrySet
())
{
PlanCheck
checkConfig
=
new
PlanCheck
();
checkConfigs
.
add
(
checkConfig
);
checkConfig
.
setName
(
e
.
getKey
()
.
toString
()
);
checkConfig
.
setName
(
e
.
getKey
());
if
(
e
.
getValue
().
isEnabled
())
{
checkConfig
.
setActivated
(
true
);
Map
<
String
,
String
>
checkParams
=
e
.
getValue
().
getParameters
();
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/reporting/pdf/PdfStreamReporter.java
View file @
85cf93b6
...
...
@@ -32,7 +32,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
de.hft.stuttgart.citydoctor2.check.
Check
Configuration
;
import
de.hft.stuttgart.citydoctor2.check.
Requirement
Configuration
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.check.CheckResult
;
...
...
@@ -133,8 +133,8 @@ public class PdfStreamReporter implements StreamReporter {
if
(
config
.
getSchematronFilePath
()
!=
null
&&
!
config
.
getSchematronFilePath
().
isEmpty
())
{
vp
.
addTextElement
(
"Schematron file: "
+
config
.
getSchematronFilePath
());
}
for
(
Entry
<
CheckId
,
Check
Configuration
>
e
:
config
.
get
Check
s
().
entrySet
())
{
String
text
=
e
.
getKey
()
.
toString
()
;
for
(
Entry
<
String
,
Requirement
Configuration
>
e
:
config
.
get
Requirement
s
().
entrySet
())
{
String
text
=
e
.
getKey
();
String
color
;
if
(
e
.
getValue
().
isEnabled
())
{
text
=
text
+
" = enabled"
;
...
...
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/check/CheckerTest.java
View file @
85cf93b6
...
...
@@ -51,8 +51,8 @@ public class CheckerTest {
@Test
public
void
testSchematron
()
throws
CityGmlParseException
,
InvalidGmlFileException
{
ValidationConfiguration
config
=
ValidationConfiguration
.
loadStandardValidationConfig
();
config
.
get
Checks
().
get
(
CheckId
.
C
_SE
M
_BS_ROOF_N
OT_
FRAGMENTED
).
setEnabled
(
false
);
config
.
setSchematronFilePath
(
"src/test/resources/schematronTest.xml"
);
config
.
get
Requirements
().
get
(
Requirement
.
R
_SE_BS_ROOF_
U
NFRAGMENTED
.
toString
()
).
setEnabled
(
false
);
config
.
setSchematronFilePath
InGlobalParameters
(
"src/test/resources/schematronTest.xml"
);
CityDoctorModel
model
=
CityGmlParser
.
parseCityGmlFile
(
"src/test/resources/SimpleSolid_SrefBS_SchematronTest.gml"
,
config
.
getParserConfiguration
());
Checker
checker
=
new
Checker
(
config
,
model
);
...
...
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/check/ValidationConfigurationTest.java
View file @
85cf93b6
...
...
@@ -25,6 +25,7 @@ import java.io.FileNotFoundException;
import
org.junit.Test
;
import
de.hft.stuttgart.citydoctor2.datastructure.FeatureType
;
import
de.hft.stuttgart.quality.model.jaxb.RequirementId
;
public
class
ValidationConfigurationTest
{
...
...
@@ -33,33 +34,33 @@ public class ValidationConfigurationTest {
String
file
=
"src/test/resources/testConfig.yml"
;
ValidationConfiguration
config
=
ValidationConfiguration
.
loadValidationConfig
(
file
);
assertEquals
(
8
,
config
.
getNumberOfRoundingPlaces
());
assertTrue
(
config
.
get
Check
s
().
containsKey
(
Check
Id
.
C
_GE_R_TOO_FEW_POINTS
));
assert
Tru
e
(
config
.
get
Checks
().
get
(
Check
Id
.
C
_GE_P_NON_PLANAR
).
isEnabled
());
assertTrue
(
config
.
get
Requirement
s
().
containsKey
(
Requirement
Id
.
R
_GE_R_TOO_FEW_POINTS
.
toString
()
));
assert
Fals
e
(
config
.
get
Requirements
().
get
(
Requirement
Id
.
R
_GE_P_NON_PLANAR
.
toString
()
).
isEnabled
());
assertNull
(
config
.
getFilter
());
}
@Test
public
void
testLoadingConfigWithFilter
()
throws
FileNotFoundException
{
String
file
=
"src/test/resources/testConfigWithFilter.yml"
;
ValidationConfiguration
config
=
ValidationConfiguration
.
loadValidationConfig
(
file
);
assertEquals
(
8
,
config
.
getNumberOfRoundingPlaces
());
assertTrue
(
config
.
get
Check
s
().
containsKey
(
Check
Id
.
C
_GE_R_TOO_FEW_POINTS
));
assert
Tru
e
(
config
.
get
Checks
().
get
(
Check
Id
.
C
_GE_P_NON_PLANAR
).
isEnabled
());
assertTrue
(
config
.
get
Requirement
s
().
containsKey
(
Requirement
Id
.
R
_GE_R_TOO_FEW_POINTS
.
toString
()
));
assert
Fals
e
(
config
.
get
Requirements
().
get
(
Requirement
Id
.
R
_GE_P_NON_PLANAR
.
toString
()
).
isEnabled
());
FilterConfiguration
filterConfig
=
config
.
getFilter
();
assertNotNull
(
filterConfig
);
ExcludeFilterConfiguration
excludeFilter
=
filterConfig
.
getExclude
();
assertNotNull
(
excludeFilter
);
assertTrue
(
excludeFilter
.
getIds
().
contains
(
"UUID-8972-kghf-asgv"
));
assertTrue
(
excludeFilter
.
getIds
().
contains
(
"UUID.*"
));
assertTrue
(
excludeFilter
.
getTypes
().
contains
(
FeatureType
.
BUILDING
));
assertTrue
(
excludeFilter
.
getTypes
().
contains
(
FeatureType
.
VEGETATION
));
IncludeFilterConfiguration
includeFilter
=
filterConfig
.
getInclude
();
assertNotNull
(
includeFilter
);
assertTrue
(
includeFilter
.
getIds
().
contains
(
".*"
));
assertTrue
(
includeFilter
.
getTypes
().
contains
(
FeatureType
.
BUILDING
));
assertTrue
(
includeFilter
.
getTypes
().
contains
(
FeatureType
.
VEGETATION
));
...
...
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/CheckContainerTest.java
View file @
85cf93b6
...
...
@@ -20,13 +20,16 @@ package de.hft.stuttgart.citydoctor2.checks;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
java.util.Set
;
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.
Check
Type
;
import
de.hft.stuttgart.citydoctor2.check.
Requirement
Type
;
import
de.hft.stuttgart.citydoctor2.check.ErrorId
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.datastructure.AbstractBuilding
;
import
de.hft.stuttgart.citydoctor2.datastructure.Building
;
...
...
@@ -43,7 +46,7 @@ public class CheckContainerTest {
}
@Override
public
Check
Type
getType
()
{
public
Requirement
Type
getType
()
{
return
null
;
}
...
...
@@ -56,6 +59,11 @@ public class CheckContainerTest {
public
CheckId
getCheckId
()
{
return
CheckId
.
C_GE_P_HOLE_OUTSIDE
;
}
@Override
public
Set
<
Requirement
>
appliesToRequirements
()
{
return
null
;
}
};
CheckContainer
cc
=
new
CheckContainer
(
c
);
...
...
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/geometry/DegeneratedPolygonCheckTest.java
View file @
85cf93b6
...
...
@@ -18,7 +18,7 @@
*/
package
de.hft.stuttgart.citydoctor2.checks.geometry
;
import
static
org
.
junit
.
Assert
.
assert
Equals
;
import
static
org
.
junit
.
Assert
.
assert
True
;
import
java.io.File
;
import
java.util.ArrayList
;
...
...
@@ -29,9 +29,7 @@ import java.util.Map;
import
org.junit.Test
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.check.Checker
;
import
de.hft.stuttgart.citydoctor2.check.ErrorId
;
import
de.hft.stuttgart.citydoctor2.check.ValidationConfiguration
;
import
de.hft.stuttgart.citydoctor2.datastructure.Building
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel
;
...
...
@@ -43,10 +41,10 @@ import de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType;
import
de.hft.stuttgart.citydoctor2.datastructure.Lod
;
import
de.hft.stuttgart.citydoctor2.datastructure.Vertex
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.quality.model.jaxb.RequirementId
;
public
class
DegeneratedPolygonCheckTest
{
@Test
public
void
testDegeneratedPolygon
()
{
Geometry
geom
=
new
Geometry
(
GeometryType
.
MULTI_SURFACE
,
Lod
.
LOD1
);
...
...
@@ -65,38 +63,25 @@ public class DegeneratedPolygonCheckTest {
lr
.
getVertices
().
add
(
v4
);
lr
.
getVertices
().
add
(
v1
);
geom
.
updateEdgesAndVertices
();
Building
b
=
new
Building
();
b
.
addGeometry
(
geom
);
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
CityDoctorModel
model
=
new
CityDoctorModel
(
config
,
new
File
(
""
));
model
.
addBuilding
(
b
);
// model
// Edge [from=Vertex [x=427583.301, y=6003502.571, z=9.711], to=Vertex [x=427583.304, y=6003502.574, z=9.713]],
// Edge [from=Vertex [x=427583.304, y=6003502.574, z=9.713], to=Vertex [x=427583.304, y=6003502.574, z=4.097]],
// Edge [from=Vertex [x=427583.304, y=6003502.574, z=4.097], to=Vertex [x=427583.301, y=6003502.571, z=4.097]],
// Edge [from=Vertex [x=427583.301, y=6003502.571, z=4.097], to=Vertex [x=427583.301, y=6003502.571, z=9.711]]]
// test
// Edge [from=Vertex [x=427583.301, y=6003502.571, z=9.711], to=Vertex [x=427583.304, y=6003502.574, z=9.713]],
// Edge [from=Vertex [x=427583.304, y=6003502.574, z=9.713], to=Vertex [x=427583.304, y=6003502.574, z=4.097]],
// Edge [from=Vertex [x=427583.304, y=6003502.574, z=4.097], to=Vertex [x=427583.301, y=6003502.571, z=4.097]],
// Edge [from=Vertex [x=427583.301, y=6003502.571, z=4.097], to=Vertex [x=427583.301, y=6003502.571, z=9.711]]]
// Segment3d [pointA=Vertex [x=427583.301, y=6003502.571, z=9.711], pointB=Vertex [x=427583.304, y=6003502.574, z=9.713]]
// Vertex [x=427583.301, y=6003502.571, z=9.711]
ValidationConfiguration
valConfig
=
ValidationConfiguration
.
loadStandardValidationConfig
();
valConfig
.
setMinVertexDistanceInGlobalParameters
(
0.004
);
Map
<
String
,
String
>
parameters
=
new
HashMap
<>();
parameters
.
put
(
"degeneratedPolygonTolerance"
,
"0.00
01
"
);
valConfig
.
get
Checks
().
get
(
Check
Id
.
C
_GE_P_NON_PLANAR
).
s
etParameters
(
parameters
);
parameters
.
put
(
"degeneratedPolygonTolerance"
,
"0.00
4
"
);
valConfig
.
get
Requirements
().
get
(
Requirement
Id
.
R
_GE_P_NON_PLANAR
.
toString
()
).
g
etParameters
(
).
putAll
(
parameters
);
Checker
c
=
new
Checker
(
valConfig
,
model
);
c
.
runChecks
();
List
<
CheckError
>
errors
=
new
ArrayList
<>();
b
.
collectContainedErrors
(
errors
);
CheckError
checkError
=
errors
.
get
(
0
);
assertEquals
(
ErrorId
.
GE_P_DEGENERATED_POLYGON
,
checkError
.
getErrorId
());
assertTrue
(
errors
.
isEmpty
());
}
}
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/geometry/FaceOutCheckTest.java
View file @
85cf93b6
...
...
@@ -107,7 +107,7 @@ public class FaceOutCheckTest {
public
void
testGoodGeometry
()
{
Geometry
geom
=
createGoodGeometry
();
FaceOutCheck
foc
=
new
FaceOut
Check
();
AllPolygonsWrongOrientationCheck
foc
=
new
AllPolygonsWrongOrientation
Check
();
foc
.
check
(
geom
);
Assert
.
assertEquals
(
ResultStatus
.
OK
,
geom
.
getCheckResult
(
foc
).
getResultStatus
());
...
...
@@ -117,7 +117,7 @@ public class FaceOutCheckTest {
public
void
testBadGeometry
()
{
Geometry
geom
=
createBadGeometry
();
FaceOutCheck
foc
=
new
FaceOut
Check
();
AllPolygonsWrongOrientationCheck
foc
=
new
AllPolygonsWrongOrientation
Check
();
foc
.
check
(
geom
);
Assert
.
assertEquals
(
ResultStatus
.
ERROR
,
geom
.
getCheckResult
(
foc
).
getResultStatus
());
...
...
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/checks/geometry/NumPointsCheckTest.java
View file @
85cf93b6
...
...
@@ -53,7 +53,7 @@ public class NumPointsCheckTest {
lr
.
addVertex
(
v2
);
lr
.
addVertex
(
v0
);
Num
PointsCheck
check
=
new
Num
PointsCheck
();
TooFew
PointsCheck
check
=
new
TooFew
PointsCheck
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
check
.
init
(
Collections
.
emptyMap
(),
config
);
check
.
check
(
lr
);
...
...
@@ -79,7 +79,7 @@ public class NumPointsCheckTest {
lr
.
addVertex
(
v3
);
lr
.
addVertex
(
v0
);
Num
PointsCheck
check
=
new
Num
PointsCheck
();
TooFew
PointsCheck
check
=
new
TooFew
PointsCheck
();
ParserConfiguration
config
=
new
ParserConfiguration
(
8
,
false
);
check
.
init
(
Collections
.
emptyMap
(),
config
);
check
.
check
(
lr
);
...
...
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/NonManifoldEdgeSystemTest.java
View file @
85cf93b6
...
...
@@ -34,6 +34,7 @@ import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
import
de.hft.stuttgart.citydoctor2.parser.CityGmlParseException
;
import
de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException
;
import
de.hft.stuttgart.quality.model.jaxb.RequirementId
;
/**
*
...
...
@@ -52,10 +53,10 @@ public class NonManifoldEdgeSystemTest {
@Test
public
void
testNonManifoldEdge2
()
throws
CityGmlParseException
,
IOException
,
InvalidGmlFileException
{
Map
<
CheckId
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
String
>
parameter
=
new
HashMap
<>();
parameter
.
put
(
"distanceTolerance"
,
"0.1"
);
paramMap
.
put
(
Check
Id
.
C
_GE_P_NON_PLANAR
,
parameter
);
paramMap
.
put
(
Requirement
Id
.
R
_GE_P_NON_PLANAR
.
toString
()
,
parameter
);
CityDoctorModel
c
=
TestUtil
.
loadAndCheckCityModel
(
"src/test/resources/SimpleSolid_SrefBS-GE-gml-SO-0004-T0001.gml"
,
paramMap
);
Geometry
g
=
c
.
getBuildings
().
get
(
0
).
getGeometries
().
get
(
0
);
...
...
CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/systemtest/PlanarTest.java
View file @
85cf93b6
...
...
@@ -37,6 +37,7 @@ import de.hft.stuttgart.citydoctor2.parser.CityGmlParseException;
import
de.hft.stuttgart.citydoctor2.parser.CityGmlParser
;
import
de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.quality.model.jaxb.RequirementId
;
/**
*
...
...
@@ -113,10 +114,10 @@ public class PlanarTest {
@Test
public
void
testPlanarPolygon4
()
throws
CityGmlParseException
,
IOException
,
InvalidGmlFileException
{
Map
<
CheckId
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
String
>
parameter
=
new
HashMap
<>();
parameter
.
put
(
"distanceTolerance"
,
"0.01"
);
paramMap
.
put
(
Check
Id
.
C
_GE_P_NON_PLANAR
,
parameter
);
paramMap
.
put
(
Requirement
Id
.
R
_GE_P_NON_PLANAR
.
toString
()
,
parameter
);
CityDoctorModel
c
=
TestUtil
.
loadAndCheckCityModel
(
"src/test/resources/SimpleSolid_SrefBS-GE-gml-PO-0002-T0001.gml"
,
paramMap
);
Polygon
p
=
TestUtil
.
getPolygonById
(
"_Simple_BD.1_PG.2"
,
c
);
CheckResult
cr
=
p
.
getCheckResult
(
CheckId
.
C_GE_P_NON_PLANAR
);
...
...
@@ -126,11 +127,11 @@ public class PlanarTest {
@Test
public
void
testPlanarPolygon5
()
throws
CityGmlParseException
,
IOException
,
InvalidGmlFileException
{
Map
<
CheckId
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
String
>
parameter
=
new
HashMap
<>();
parameter
.
put
(
"type"
,
"distance"
);
parameter
.
put
(
"distanceTolerance"
,
"0.5"
);
paramMap
.
put
(
Check
Id
.
C
_GE_P_NON_PLANAR
,
parameter
);
paramMap
.
put
(
Requirement
Id
.
R
_GE_P_NON_PLANAR
.
toString
()
,
parameter
);
CityDoctorModel
c
=
TestUtil
.
loadAndCheckCityModel
(
"src/test/resources/SimpleSolid_SrefBS-GE-gml-PO-0002-T0001.gml"
,
paramMap
);
Polygon
p
=
TestUtil
.
getPolygonById
(
"_Simple_BD.1_PG.2"
,
c
);
CheckResult
cr
=
p
.
getCheckResult
(
CheckId
.
C_GE_P_NON_PLANAR
);
...
...
@@ -139,10 +140,10 @@ public class PlanarTest {
@Test
public
void
testPlanarPolygon6
()
throws
CityGmlParseException
,
IOException
,
InvalidGmlFileException
{
Map
<
CheckId
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
Map
<
String
,
String
>>
paramMap
=
new
HashMap
<>();
Map
<
String
,
String
>
parameter
=
new
HashMap
<>();
parameter
.
put
(
"type"
,
"both"
);
paramMap
.
put
(
Check
Id
.
C
_GE_P_NON_PLANAR
,
parameter
);
paramMap
.
put
(
Requirement
Id
.
R
_GE_P_NON_PLANAR
.
toString
()
,
parameter
);
CityDoctorModel
c
=
TestUtil
.
loadAndCheckCityModel
(
"src/test/resources/SimpleSolid_SrefBS-GE-gml-PO-0002-T0002.gml"
,
paramMap
);
Polygon
p
=
TestUtil
.
getPolygonById
(
"_Simple_BD.1_PG.1"
,
c
);
CheckResult
cr
=
p
.
getCheckResult
(
CheckId
.
C_GE_P_NON_PLANAR
);
...
...
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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