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
5d40c7b6
Commit
5d40c7b6
authored
Sep 30, 2020
by
Matthias Betz
Browse files
CityDoctor2 validation open source release
parents
Changes
413
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/.gitignore
0 → 100644
View file @
5d40c7b6
# Created by https://www.gitignore.io/api/java,maven,macos,linux,eclipse,windows,netbeans,intellij
# Edit at https://www.gitignore.io/?templates=java,maven,macos,linux,eclipse,windows,netbeans,intellij
# User specific
.sonarlint/
Servers/
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
### Eclipse Patch ###
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Annotation Processing
.apt_generated
.sts4-cache/
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
### NetBeans ###
**/nbproject/private/
**/nbproject/Makefile-*.mk
**/nbproject/Package-*.bash
build/
nbbuild/
dist/
nbdist/
.nb-gradle/
### Windows ###
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.gitignore.io/api/java,maven,macos,linux,eclipse,windows,netbeans,intellij
CityDoctorParent/CityDoctorCheckResult/pom.xml
0 → 100644
View file @
5d40c7b6
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
CityDoctorParent
</artifactId>
<version>
3.7.0-SNAPSHOT
</version>
</parent>
<artifactId>
CityDoctorCheckResult
</artifactId>
<dependencies>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<scope>
test
</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core -->
<dependency>
<groupId>
com.sun.xml.bind
</groupId>
<artifactId>
jaxb-core
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
CityDoctorParent/CityDoctorCheckResult/src/main/java/de/hft/stuttgart/citydoctor2/checkresult/CheckReport.java
0 → 100644
View file @
5d40c7b6
/*-
* 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.checkresult
;
import
java.io.BufferedReader
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.xml.bind.JAXBContext
;
import
javax.xml.bind.JAXBException
;
import
javax.xml.bind.Marshaller
;
import
javax.xml.bind.annotation.XmlAccessType
;
import
javax.xml.bind.annotation.XmlAccessorType
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlRootElement
;
import
javax.xml.stream.XMLOutputFactory
;
import
javax.xml.stream.XMLStreamException
;
import
javax.xml.stream.XMLStreamWriter
;
import
org.xml.sax.InputSource
;
import
de.hft.stuttgart.citydoctor2.checkresult.utility.CheckReportParseException
;
import
de.hft.stuttgart.citydoctor2.checkresult.utility.CheckReportWriteException
;
import
de.hft.stuttgart.citydoctor2.checkresult.utility.IndentationXmlStreamWriter
;
@XmlRootElement
(
name
=
"error_report"
)
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
class
CheckReport
{
private
static
JAXBContext
context
;
private
static
final
Object
lock
=
new
Object
();
@XmlElement
(
name
=
"header"
,
required
=
true
)
private
Header
header
;
@XmlElement
(
name
=
"global_statistics"
,
required
=
true
)
private
GlobalStatistics
globalStatistics
;
@XmlElement
(
name
=
"validation_plan"
,
required
=
true
)
private
ValidationPlan
validationPlan
;
@XmlElement
(
name
=
"validation_results"
,
required
=
true
)
private
ValidationResults
validationResults
;
private
Map
<
String
,
FeatureReport
>
featureReports
;
public
static
CheckReport
load
(
String
file
)
throws
CheckReportParseException
{
try
(
BufferedReader
reader
=
new
BufferedReader
(
new
FileReader
(
file
)))
{
CheckReport
report
=
(
CheckReport
)
getContext
().
createUnmarshaller
().
unmarshal
(
new
InputSource
(
reader
));
enrichReportStructure
(
report
);
return
report
;
}
catch
(
JAXBException
|
IOException
e
)
{
throw
new
CheckReportParseException
(
e
);
}
}
private
static
JAXBContext
getContext
()
throws
JAXBException
{
synchronized
(
lock
)
{
if
(
context
==
null
)
{
context
=
JAXBContext
.
newInstance
(
CheckReport
.
class
);
}
}
return
context
;
}
public
void
saveAs
(
OutputStream
output
)
throws
CheckReportWriteException
{
try
{
Marshaller
marshaller
=
getContext
().
createMarshaller
();
XMLOutputFactory
factory
=
XMLOutputFactory
.
newInstance
();
XMLStreamWriter
writer
=
factory
.
createXMLStreamWriter
(
output
,
"UTF-8"
);
writer
=
new
IndentationXmlStreamWriter
(
writer
);
marshaller
.
marshal
(
this
,
writer
);
}
catch
(
JAXBException
|
XMLStreamException
e
)
{
throw
new
CheckReportWriteException
(
e
);
}
}
private
static
void
enrichReportStructure
(
CheckReport
report
)
{
report
.
featureReports
=
new
HashMap
<>();
ValidationResults
valResults
=
report
.
getValidationResults
();
if
(
valResults
!=
null
)
{
addFeatureReports
(
report
,
valResults
.
getBridgeReports
());
addFeatureReports
(
report
,
valResults
.
getBuildingReports
());
addFeatureReports
(
report
,
valResults
.
getLandReports
());
addFeatureReports
(
report
,
valResults
.
getTransportationReports
());
addFeatureReports
(
report
,
valResults
.
getVegetationReports
());
addFeatureReports
(
report
,
valResults
.
getWaterReports
());
}
}
private
static
void
addFeatureReports
(
CheckReport
report
,
List
<?
extends
FeatureReport
>
reportList
)
{
if
(
reportList
==
null
)
{
return
;
}
for
(
FeatureReport
fr
:
reportList
)
{
if
(
fr
.
getGmlId
()
!=
null
)
{
report
.
featureReports
.
put
(
fr
.
getGmlId
(),
fr
);
}
}
}
public
FeatureReport
getFeatureReportForId
(
String
gmlId
)
{
return
featureReports
.
get
(
gmlId
);
}
public
Header
getHeader
()
{
return
header
;
}
public
void
setHeader
(
Header
header
)
{
this
.
header
=
header
;
}
public
GlobalStatistics
getGlobalStatistics
()
{
return
globalStatistics
;
}
public
void
setGlobalStatistics
(
GlobalStatistics
globalStatistics
)
{
this
.
globalStatistics
=
globalStatistics
;
}
public
ValidationPlan
getValidationPlan
()
{
return
validationPlan
;
}
public
void
setValidationPlan
(
ValidationPlan
validationPlan
)
{
this
.
validationPlan
=
validationPlan
;
}
public
ValidationResults
getValidationResults
()
{
return
validationResults
;
}
public
void
setValidationResults
(
ValidationResults
validationResults
)
{
this
.
validationResults
=
validationResults
;
}
}
CityDoctorParent/CityDoctorCheckResult/src/main/java/de/hft/stuttgart/citydoctor2/checkresult/EdgeReport.java
0 → 100644
View file @
5d40c7b6
/*-
* 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.checkresult
;
import
javax.xml.bind.annotation.XmlAccessType
;
import
javax.xml.bind.annotation.XmlAccessorType
;
import
javax.xml.bind.annotation.XmlAttribute
;
import
javax.xml.bind.annotation.XmlElement
;
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
class
EdgeReport
{
@XmlAttribute
(
name
=
"name"
,
required
=
false
)
private
String
name
;
@XmlElement
(
name
=
"from"
,
required
=
false
)
private
VertexReport
from
;
@XmlElement
(
name
=
"to"
,
required
=
false
)
private
VertexReport
to
;
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
void
setFrom
(
VertexReport
from
)
{
this
.
from
=
from
;
}
public
void
setTo
(
VertexReport
to
)
{
this
.
to
=
to
;
}
public
VertexReport
getFrom
()
{
return
from
;
}
public
String
getName
()
{
return
name
;
}
public
VertexReport
getTo
()
{
return
to
;
}
}
CityDoctorParent/CityDoctorCheckResult/src/main/java/de/hft/stuttgart/citydoctor2/checkresult/EdgesReport.java
0 → 100644
View file @
5d40c7b6
/*-
* 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.checkresult
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlAccessType
;
import
javax.xml.bind.annotation.XmlAccessorType
;
import
javax.xml.bind.annotation.XmlAttribute
;
import
javax.xml.bind.annotation.XmlElement
;
@XmlAccessorType
(
XmlAccessType
.
FIELD
)
public
class
EdgesReport
{
@XmlAttribute
(
name
=
"name"
,
required
=
false
)
private
String
name
;
@XmlElement
(
name
=
"edge"
,
required
=
true
)
private
List
<
EdgeReport
>
edges
;
public
void
setEdges
(
List
<
EdgeReport
>
edges
)
{
this
.
edges
=
edges
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
List
<
EdgeReport
>
getEdges
()
{
if
(
edges
==
null
)
{
edges
=
new
ArrayList
<>();
}
return
edges
;
}
public
String
getName
()
{
return
name
;
}
}
CityDoctorParent/CityDoctorCheckResult/src/main/java/de/hft/stuttgart/citydoctor2/checkresult/Environment.java
0 → 100644
View file @
5d40c7b6
/*-
* 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