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
d1ff5020
Commit
d1ff5020
authored
May 24, 2025
by
Beuster
Browse files
Merge remote-tracking branch 'origin/dev' into dev_cpp_code_conversion
parents
06ad5a8e
b50c5f13
Pipeline
#11130
passed with stage
in 1 minute and 28 seconds
Changes
179
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/EdgeNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
EdgeNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormatSymbols
;
...
...
@@ -6,6 +6,7 @@ import java.text.DecimalFormatSymbols;
import
de.hft.stuttgart.citydoctor2.datastructure.Edge
;
import
de.hft.stuttgart.citydoctor2.datastructure.Vertex
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
EdgeNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/ErrorNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
ErrorNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
ErrorNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/GenericAttributeNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
GenericAttributeNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.datastructure.GenericAttribute
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
GenericAttributeNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/GeometryNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
GeometryNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
import
de.hft.stuttgart.citydoctor2.datastructure.ImplicitGeometryHolder
;
import
de.hft.stuttgart.citydoctor2.gui.CheckStatus
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
GeometryNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/LinearRingNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
LinearRingNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing
;
import
de.hft.stuttgart.citydoctor2.gui.CheckStatus
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
LinearRingNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/OpeningNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
OpeningNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.datastructure.Opening
;
import
de.hft.stuttgart.citydoctor2.gui.CheckStatus
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
OpeningNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/PolygonNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
PolygonNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.datastructure.Polygon
;
import
de.hft.stuttgart.citydoctor2.gui.CheckStatus
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
PolygonNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/TextNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
TextNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
TextNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/node/TopLevelCityObjectNode.java
0 → 100644
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree.node
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityObject
;
import
de.hft.stuttgart.citydoctor2.gui.MainWindow
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
javafx.scene.input.Clipboard
;
import
javafx.scene.input.ClipboardContent
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
static
javafx
.
scene
.
input
.
Clipboard
.
getSystemClipboard
;
public
class
TopLevelCityObjectNode
extends
CityObjectNode
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
TopLevelCityObjectNode
.
class
);
public
TopLevelCityObjectNode
(
CityObject
co
)
{
super
(
co
);
}
@Override
public
void
getClipboardAction
(
MainWindow
mainWindow
)
{
Clipboard
clipboard
=
getSystemClipboard
();
ClipboardContent
content
=
new
ClipboardContent
();
content
.
putString
(
this
.
getFeature
().
getGmlId
().
toString
());
if
(!
clipboard
.
setContent
(
content
))
{
if
(
logger
.
isWarnEnabled
())
{
logger
.
warn
(
Localization
.
getText
(
"MainWindow.warnCopyIdFailed"
));
}
}
}
@Override
public
void
getFeatureExportAction
(
MainWindow
mainWindow
)
{
try
{
mainWindow
.
getController
().
export
(
this
.
getFeature
());
if
(
logger
.
isWarnEnabled
())
{
logger
.
info
(
Localization
.
getText
(
"CityDoctorController.exportSuccess"
));
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"Export failed: Unexpected error occurred"
);
logger
.
error
(
e
);
}
}
}
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/VertexNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
VertexNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormatSymbols
;
import
de.hft.stuttgart.citydoctor2.datastructure.Vertex
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
public
class
VertexNode
extends
Renderable
{
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/ZipEntryNode.java
→
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/
node/
ZipEntryNode.java
View file @
d1ff5020
package
de.hft.stuttgart.citydoctor2.gui.tree
;
package
de.hft.stuttgart.citydoctor2.gui.tree
.node
;
import
de.hft.stuttgart.citydoctor2.zip.CityGmlZipEntry
;
import
javafx.scene.paint.Color
;
...
...
CityDoctorParent/Extensions/CityDoctorHealer/pom.xml
View file @
d1ff5020
...
...
@@ -6,7 +6,7 @@
<parent>
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
CityDoctorParent
</artifactId>
<version>
3.17.
0
</version>
<version>
3.17.
2
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<artifactId>
CityDoctorHealer
</artifactId>
...
...
CityDoctorParent/Extensions/CityDoctorHealer/src/main/java/de/hft/stuttgart/citydoctor2/healer/Healer.java
View file @
d1ff5020
...
...
@@ -26,7 +26,7 @@ import org.citygml4j.xml.writer.CityGMLWriteException;
import
org.citygml4j.xml.writer.CityGMLWriter
;
import
de.hft.stuttgart.citydoctor2.CityDoctorValidation
;
import
de.hft.stuttgart.citydoctor2.check.
AbstractCheck
;
import
de.hft.stuttgart.citydoctor2.check.
CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.Checker
;
import
de.hft.stuttgart.citydoctor2.check.HealingMethod
;
...
...
@@ -263,7 +263,7 @@ public class Healer {
co
.
reCreateGeometries
(
factory
,
checker
.
getConfig
().
getParserConfiguration
());
byte
[]
gml
=
writeCityGml
(
co
.
getGmlObject
());
// remove them again to save memory
co
.
unset
GmlGeometries
();
co
.
clear
GmlGeometries
();
SvrlContentHandler
handler
=
Checker
.
executeSchematronValidationIfAvailable
(
config
,
new
ByteArrayInputStream
(
gml
));
if
(
handler
!=
null
)
{
...
...
@@ -353,7 +353,7 @@ public class Healer {
private
void
filterOutDuplicateVertices
(
CityObject
co
)
{
Map
<
Vertex
,
Vertex
>
map
=
new
HashMap
<>();
co
.
accept
(
new
AbstractCheck
()
{
co
.
accept
(
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
LinearRing
ring
)
{
for
(
int
i
=
0
;
i
<
ring
.
getVertices
().
size
();
i
++)
{
...
...
CityDoctorParent/Extensions/CityDoctorHealer/src/main/java/de/hft/stuttgart/citydoctor2/healing/HealMissingSolid.java
View file @
d1ff5020
...
...
@@ -24,7 +24,7 @@ import java.util.List;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
de.hft.stuttgart.citydoctor2.check.
AbstractCheck
;
import
de.hft.stuttgart.citydoctor2.check.
CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.HealingID
;
import
de.hft.stuttgart.citydoctor2.check.HealingMethod
;
import
de.hft.stuttgart.citydoctor2.check.ModificationListener
;
...
...
@@ -103,7 +103,7 @@ public class HealMissingSolid implements HealingMethod {
private
List
<
Polygon
>
collectPolygons
(
CityObject
co
)
{
List
<
Polygon
>
polygons
=
new
ArrayList
<>();
AbstractCheck
polygonCheck
=
new
AbstractCheck
()
{
CheckableUtilsVisitor
polygonCheck
=
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
Polygon
p
)
{
if
(!
p
.
isLink
())
{
...
...
CityDoctorParent/Extensions/CityDoctorHealer/src/test/java/de/hft/stuttgart/citydoctor2/healing/HealHoleOutsideErrorTest.java
View file @
d1ff5020
...
...
@@ -2,6 +2,8 @@ package de.hft.stuttgart.citydoctor2.healing;
import
java.io.IOException
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.Building
;
import
org.junit.Assert
;
import
org.junit.Test
;
...
...
@@ -24,14 +26,14 @@ public class HealHoleOutsideErrorTest {
Checker
c
=
new
Checker
(
config
,
model
);
c
.
runChecks
();
Geometry
geom
=
model
.
getBuildings
().
get
(
0
)
.
getGeometries
().
get
(
0
)
;
Assert
.
assertTrue
(
geom
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
Building
building
=
model
.
getBuildings
().
get
(
0
);
Assert
.
assertTrue
(
building
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
Healer
healer
=
new
Healer
(
c
);
healer
.
healCityObject
(
model
.
getBuildings
().
get
(
0
));
Assert
.
assertFalse
(
geom
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
Assert
.
assertFalse
(
building
.
containsError
(
CheckId
.
C_GE_P_HOLE_OUTSIDE
));
}
}
CityDoctorParent/Extensions/CityDoctorHealerGUI/pom.xml
View file @
d1ff5020
...
...
@@ -7,7 +7,7 @@
<parent>
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
CityDoctorParent
</artifactId>
<version>
3.17.
0
</version>
<version>
3.17.
2
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<artifactId>
CityDoctorHealerGUI
</artifactId>
...
...
@@ -26,14 +26,14 @@
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
CityDoctorAutoPro
</artifactId>
</dependency>
<dependency>
<groupId>
org.openjfx
</groupId>
<artifactId>
javafx-controls
</artifactId>
</dependency>
<dependency>
<groupId>
org.openjfx
</groupId>
<artifactId>
javafx-fxml
</artifactId>
</dependency>
<dependency>
<groupId>
org.openjfx
</groupId>
<artifactId>
javafx-controls
</artifactId>
</dependency>
<dependency>
<groupId>
org.openjfx
</groupId>
<artifactId>
javafx-fxml
</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
...
...
CityDoctorParent/Extensions/CityDoctorHealerGenetic/pom.xml
View file @
d1ff5020
...
...
@@ -4,7 +4,7 @@
<parent>
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
CityDoctorParent
</artifactId>
<version>
3.17.
0
</version>
<version>
3.17.
2
</version>
<relativePath>
../../pom.xml
</relativePath>
</parent>
<artifactId>
CityDoctorHealerGenetic
</artifactId>
...
...
CityDoctorParent/Extensions/CityDoctorHealerGenetic/src/test/java/de/hft/stuttgart/citydoctor2/healer/genetic/NonPlanarGenetic.java
View file @
d1ff5020
...
...
@@ -36,10 +36,8 @@ import java.util.Map.Entry;
import
java.util.Random
;
import
java.util.Set
;
import
org.junit.Test
;
import
Jama.EigenvalueDecomposition
;
import
de.hft.stuttgart.citydoctor2.check.
AbstractCheck
;
import
de.hft.stuttgart.citydoctor2.check.
CheckableUtilsVisitor
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.Checker
;
import
de.hft.stuttgart.citydoctor2.check.ValidationConfiguration
;
...
...
@@ -66,9 +64,9 @@ public class NonPlanarGenetic {
private
static
final
int
ERROR_PENALTY
=
100000
;
private
Random
r
=
new
Random
();
private
Map
<
Integer
,
List
<
Long
>>
durationMap
=
new
HashMap
<>();
private
Map
<
Integer
,
List
<
Long
>>
durationMap
=
new
HashMap
<>();
@Test
//
@Test
public
void
findVerticesForNonPlanarTest
()
throws
CityGmlParseException
,
InvalidGmlFileException
,
IOException
{
ValidationConfiguration
config
=
ValidationConfiguration
.
loadStandardValidationConfig
();
config
.
setNumberOfRoundingPlacesInGlobalParameters
(
8
);
...
...
@@ -448,7 +446,7 @@ public class NonPlanarGenetic {
private
Polygon
findPolygonInFeature
(
CityObject
copy
,
Polygon
polygon
)
{
Polygon
[]
result
=
new
Polygon
[
1
];
copy
.
accept
(
new
AbstractCheck
()
{
copy
.
accept
(
new
CheckableUtilsVisitor
()
{
@Override
public
void
check
(
Polygon
p
)
{
...
...
CityDoctorParent/pom.xml
View file @
d1ff5020
...
...
@@ -5,7 +5,7 @@
<modelVersion>
4.0.0
</modelVersion>
<groupId>
de.hft.stuttgart
</groupId>
<artifactId>
CityDoctorParent
</artifactId>
<version>
3.17.
0
</version>
<version>
3.17.
2
</version>
<packaging>
pom
</packaging>
<name>
CityDoctorParent
</name>
<properties>
...
...
@@ -15,8 +15,8 @@
<log4j.version>
2.18.0
</log4j.version>
<revision>
${project.version}
</revision>
<nonMavenLibsPath>
${project.baseUri}../non-maven-libs
</nonMavenLibsPath>
<jre-version-short>
17.0.1
0
</jre-version-short>
<jre-version>
${jre-version-short}+1
3
</jre-version>
<jre-version-short>
17.0.1
4
</jre-version-short>
<jre-version>
${jre-version-short}+1
0
</jre-version>
<jfx-version>
17.0.12
</jfx-version>
</properties>
<repositories>
...
...
@@ -115,6 +115,12 @@
<artifactId>
CityDoctorHealer
</artifactId>
<version>
${revision}
</version>
</dependency>
<dependency>
<groupId>
commons-io
</groupId>
<artifactId>
commons-io
</artifactId>
<version>
2.16.1
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
net.sf.saxon
</groupId>
<artifactId>
Saxon-HE
</artifactId>
...
...
@@ -143,7 +149,7 @@
<dependency>
<groupId>
org.apache.xmlgraphics
</groupId>
<artifactId>
fop
</artifactId>
<version>
2.
7
</version>
<version>
2.
10
</version>
</dependency>
<dependency>
<groupId>
org.jdom
</groupId>
...
...
@@ -248,22 +254,18 @@
<dependency>
<groupId>
org.openjfx
</groupId>
<artifactId>
javafx-controls
</artifactId>
<version>
${jfx-version}
</version>
</dependency>
<dependency>
<groupId>
org.openjfx
</groupId>
<artifactId>
javafx-fxml
</artifactId>
<version>
${jfx-version}
</version>
</dependency>
<dependency>
<groupId>
org.openjfx
</groupId>
<artifactId>
javafx-swing
</artifactId>
<version>
${jfx-version}
</version>
</dependency>
<dependency>
<groupId>
info.picocli
</groupId>
<artifactId>
picocli
</artifactId>
<version>
4.7.6
</version>
</dependency>
</dependencies>
<modules>
...
...
Prev
1
…
5
6
7
8
9
Next
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