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
ecd6316a
Commit
ecd6316a
authored
Apr 08, 2025
by
Riegel
Browse files
Refactor: Simplify Feature-TreeList construction
parent
38c8db7d
Changes
1
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
View file @
ecd6316a
...
@@ -24,6 +24,7 @@ import javafx.scene.control.ButtonType;
...
@@ -24,6 +24,7 @@ import javafx.scene.control.ButtonType;
import
javafx.scene.control.Dialog
;
import
javafx.scene.control.Dialog
;
import
javafx.scene.control.TreeItem
;
import
javafx.scene.control.TreeItem
;
import
javafx.scene.control.TreeView
;
import
javafx.scene.control.TreeView
;
import
javafx.scene.paint.Color
;
import
javafx.stage.FileChooser
;
import
javafx.stage.FileChooser
;
import
javafx.stage.FileChooser.ExtensionFilter
;
import
javafx.stage.FileChooser.ExtensionFilter
;
import
org.apache.commons.io.FileUtils
;
import
org.apache.commons.io.FileUtils
;
...
@@ -462,9 +463,10 @@ public class CityDoctorController {
...
@@ -462,9 +463,10 @@ public class CityDoctorController {
TreeView
<
Renderable
>
buildingsView
=
mainWindow
.
getBuildingsView
();
TreeView
<
Renderable
>
buildingsView
=
mainWindow
.
getBuildingsView
();
TreeItem
<
Renderable
>
root
=
new
TreeItem
<>(
new
AllBuildingsNode
(
model
.
getBuildings
()));
TreeItem
<
Renderable
>
root
=
new
TreeItem
<>(
new
AllBuildingsNode
(
model
.
getBuildings
()));
root
.
setExpanded
(
true
);
root
.
setExpanded
(
true
);
buildingsView
.
setRoot
(
root
);
buildBuildingTreeFromList
(
model
.
getBuildings
(),
root
);
buildBuildingTreeFromList
(
model
.
getBuildings
(),
root
);
addMoreButtonToBuildingsIfNecessary
(
model
.
getBuildings
(),
buildingsView
,
root
,
buildingChunkNr
);
addMoreButtonToBuildingsIfNecessary
(
model
.
getBuildings
(),
buildingsView
,
root
,
buildingChunkNr
);
buildingsView
.
setRoot
(
root
);
}
}
private
void
addMoreButtonToBuildingsIfNecessary
(
List
<
Building
>
list
,
TreeView
<
Renderable
>
view
,
private
void
addMoreButtonToBuildingsIfNecessary
(
List
<
Building
>
list
,
TreeView
<
Renderable
>
view
,
...
@@ -557,17 +559,46 @@ public class CityDoctorController {
...
@@ -557,17 +559,46 @@ public class CityDoctorController {
mainWindow
.
getVertexView
().
getRoot
().
getChildren
().
clear
();
mainWindow
.
getVertexView
().
getRoot
().
getChildren
().
clear
();
}
}
private
TreeItem
<
Renderable
>
buildTopLevelCityObjectNode
(
CityObject
co
,
TreeItem
<
Renderable
>
root
)
{
return
buildTopLevelCityObjectNode
(
co
,
root
,
Collections
.
emptyList
());
}
private
TreeItem
<
Renderable
>
buildTopLevelCityObjectNode
(
CityObject
co
,
TreeItem
<
Renderable
>
root
,
List
<
BoundarySurface
>
surfaces
)
{
TopLevelCityObjectNode
node
=
new
TopLevelCityObjectNode
(
co
);
TreeItem
<
Renderable
>
nodeItem
=
new
TreeItem
<>(
node
);
nodeItem
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
nodeItem
);
createGeometryNodes
(
co
,
nodeItem
);
if
(!
surfaces
.
isEmpty
())
{
createBoundarySurfaceNodes
(
surfaces
,
nodeItem
);
}
return
nodeItem
;
}
private
TreeItem
<
Renderable
>
buildCityObjectNode
(
CityObject
co
,
TreeItem
<
Renderable
>
root
)
{
return
buildCityObjectNode
(
co
,
root
,
Collections
.
emptyList
());
}
private
TreeItem
<
Renderable
>
buildCityObjectNode
(
CityObject
co
,
TreeItem
<
Renderable
>
root
,
List
<
BoundarySurface
>
surfaces
)
{
CityObjectNode
node
=
new
CityObjectNode
(
co
);
TreeItem
<
Renderable
>
nodeItem
=
new
TreeItem
<>(
node
);
nodeItem
.
setExpanded
(
false
);
root
.
getChildren
().
add
(
nodeItem
);
createGeometryNodes
(
co
,
nodeItem
);
if
(!
surfaces
.
isEmpty
())
{
createBoundarySurfaceNodes
(
surfaces
,
nodeItem
);
}
return
nodeItem
;
}
private
void
buildBuildingTreeFromList
(
List
<
Building
>
list
,
TreeItem
<
Renderable
>
root
)
{
private
void
buildBuildingTreeFromList
(
List
<
Building
>
list
,
TreeItem
<
Renderable
>
root
)
{
int
buildingChunk
=
buildingChunkNr
.
get
();
int
buildingChunk
=
buildingChunkNr
.
get
();
for
(
int
i
=
buildingChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
buildingChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
for
(
int
i
=
buildingChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
buildingChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
&&
i
<
list
.
size
();
i
++)
{
Building
b
=
list
.
get
(
i
);
Building
b
=
list
.
get
(
i
);
BuildingNode
node
=
new
BuildingNode
(
b
);
TreeItem
<
Renderable
>
item
=
buildTopLevelCityObjectNode
(
b
,
root
,
b
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
b
,
item
);
createBoundarySurfaceNodes
(
b
.
getBoundarySurfaces
(),
item
);
createBuildingInstallationNodes
(
b
,
item
);
createBuildingInstallationNodes
(
b
,
item
);
createBuildingRoomNodes
(
b
,
item
);
createBuildingRoomNodes
(
b
,
item
);
createBuildingFurnitureNodes
(
b
,
item
);
createBuildingFurnitureNodes
(
b
,
item
);
...
@@ -582,12 +613,8 @@ public class CityDoctorController {
...
@@ -582,12 +613,8 @@ public class CityDoctorController {
for
(
int
i
=
bridgeChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
bridgeChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
for
(
int
i
=
bridgeChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
bridgeChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
&&
i
<
list
.
size
();
i
++)
{
BridgeObject
bridge
=
list
.
get
(
i
);
BridgeObject
bridge
=
list
.
get
(
i
);
BridgeNode
node
=
new
BridgeNode
(
bridge
);
TreeItem
<
Renderable
>
item
=
buildTopLevelCityObjectNode
(
bridge
,
root
,
bridge
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
bridge
,
item
);
createBoundarySurfaceNodes
(
bridge
.
getBoundarySurfaces
(),
item
);
createBridgeRoomNodes
(
bridge
,
item
);
createBridgeRoomNodes
(
bridge
,
item
);
createBridgeInstallationNodes
(
bridge
,
item
);
createBridgeInstallationNodes
(
bridge
,
item
);
createBridgeFurnitureNodes
(
bridge
,
item
);
createBridgeFurnitureNodes
(
bridge
,
item
);
...
@@ -602,11 +629,7 @@ public class CityDoctorController {
...
@@ -602,11 +629,7 @@ public class CityDoctorController {
for
(
int
i
=
transportChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
transportChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
for
(
int
i
=
transportChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
transportChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
&&
i
<
list
.
size
();
i
++)
{
TransportationObject
t
=
list
.
get
(
i
);
TransportationObject
t
=
list
.
get
(
i
);
TransportationObjectNode
node
=
new
TransportationObjectNode
(
t
);
TreeItem
<
Renderable
>
item
=
buildTopLevelCityObjectNode
(
t
,
root
);
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
t
,
item
);
createTransportSectionNodes
(
t
,
item
);
createTransportSectionNodes
(
t
,
item
);
createTrafficSpacesNodes
(
t
,
item
);
createTrafficSpacesNodes
(
t
,
item
);
}
}
...
@@ -617,11 +640,7 @@ public class CityDoctorController {
...
@@ -617,11 +640,7 @@ public class CityDoctorController {
for
(
int
i
=
vegetationChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
vegetationChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
for
(
int
i
=
vegetationChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
vegetationChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
&&
i
<
list
.
size
();
i
++)
{
Vegetation
v
=
list
.
get
(
i
);
Vegetation
v
=
list
.
get
(
i
);
VegetationNode
node
=
new
VegetationNode
(
v
);
buildTopLevelCityObjectNode
(
v
,
root
);
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
v
,
item
);
}
}
}
}
...
@@ -630,11 +649,7 @@ public class CityDoctorController {
...
@@ -630,11 +649,7 @@ public class CityDoctorController {
for
(
int
i
=
waterChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
waterChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
for
(
int
i
=
waterChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
waterChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
&&
i
<
list
.
size
();
i
++)
{
WaterObject
w
=
list
.
get
(
i
);
WaterObject
w
=
list
.
get
(
i
);
CityObjectNode
node
=
new
CityObjectNode
(
w
);
buildTopLevelCityObjectNode
(
w
,
root
);
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
w
,
item
);
}
}
}
}
...
@@ -643,11 +658,7 @@ public class CityDoctorController {
...
@@ -643,11 +658,7 @@ public class CityDoctorController {
for
(
int
i
=
cityFurnChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
cityFurnChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
for
(
int
i
=
cityFurnChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
cityFurnChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
&&
i
<
list
.
size
();
i
++)
{
CityFurniture
cf
=
list
.
get
(
i
);
CityFurniture
cf
=
list
.
get
(
i
);
CityObjectNode
node
=
new
CityObjectNode
(
cf
);
buildTopLevelCityObjectNode
(
cf
,
root
);
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
cf
,
item
);
}
}
}
}
...
@@ -656,44 +667,32 @@ public class CityDoctorController {
...
@@ -656,44 +667,32 @@ public class CityDoctorController {
for
(
int
i
=
genericObjectChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
genericObjectChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
for
(
int
i
=
genericObjectChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
genericObjectChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
&&
i
<
list
.
size
();
i
++)
{
GenericCityObject
goc
=
list
.
get
(
i
);
GenericCityObject
goc
=
list
.
get
(
i
);
CityObjectNode
node
=
new
CityObjectNode
(
goc
);
buildTopLevelCityObjectNode
(
goc
,
root
);
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
goc
,
item
);
}
}
}
}
private
void
createTransportSectionNodes
(
TransportationObject
t
,
TreeItem
<
Renderable
>
root
)
{
private
void
createTransportSectionNodes
(
TransportationObject
t
,
TreeItem
<
Renderable
>
root
)
{
if
(
t
instanceof
TopLevelTransportFeature
top
)
{
if
(
t
instanceof
TopLevelTransportFeature
top
)
{
if
(!
top
.
getSections
().
isEmpty
())
{
if
(!
top
.
getSections
().
isEmpty
())
{
AllTransportSection
Node
allS
ectionsNode
=
new
AllTransportSection
Node
(
top
.
getSections
(),
CityObjectGroup
Node
s
ections
Group
Node
=
new
CityObjectGroup
Node
(
top
.
getSections
(),
TransportSection
.
SectionType
.
SECTION
);
"Sections"
,
Color
.
YELLOW
);
TreeItem
<
Renderable
>
allS
ections
NodeText
Item
=
new
TreeItem
<>(
allS
ectionsNode
);
TreeItem
<
Renderable
>
s
ections
Group
Item
=
new
TreeItem
<>(
s
ections
Group
Node
);
root
.
getChildren
().
add
(
allS
ections
NodeText
Item
);
root
.
getChildren
().
add
(
s
ections
Group
Item
);
for
(
TransportSection
ts
:
top
.
getSections
())
{
for
(
TransportSection
ts
:
top
.
getSections
())
{
TransportationObjectNode
tsNode
=
new
TransportationObjectNode
(
ts
);
TreeItem
<
Renderable
>
tsNodeItem
=
buildCityObjectNode
(
ts
,
sectionsGroupItem
);
TreeItem
<
Renderable
>
tsNodeItem
=
new
TreeItem
<>(
tsNode
);
tsNodeItem
.
setExpanded
(
false
);
allSectionsNodeTextItem
.
getChildren
().
add
(
tsNodeItem
);
createGeometryNodes
(
ts
,
tsNodeItem
);
createTrafficSpacesNodes
(
ts
,
tsNodeItem
);
createTrafficSpacesNodes
(
ts
,
tsNodeItem
);
}
}
}
}
if
(!
top
.
getIntersections
().
isEmpty
())
{
if
(!
top
.
getIntersections
().
isEmpty
())
{
AllTransportSection
Node
allI
ntersectionsNode
=
new
AllTransportSection
Node
(
top
.
get
Inters
ections
(),
CityObjectGroup
Node
i
ntersections
Group
Node
=
new
CityObjectGroup
Node
(
top
.
get
S
ections
(),
TransportSection
.
SectionType
.
INTERSECTION
);
"Intersections"
,
Color
.
YELLOW
);
TreeItem
<
Renderable
>
allI
ntersections
NodeText
Item
=
new
TreeItem
<>(
allI
ntersectionsNode
);
TreeItem
<
Renderable
>
i
ntersections
Group
Item
=
new
TreeItem
<>(
i
ntersections
Group
Node
);
root
.
getChildren
().
add
(
allI
ntersections
NodeText
Item
);
root
.
getChildren
().
add
(
i
ntersections
Group
Item
);
for
(
TransportSection
ts
:
top
.
getIntersections
())
{
for
(
TransportSection
ts
:
top
.
getIntersections
())
{
TransportationObjectNode
tsNode
=
new
TransportationObjectNode
(
ts
);
TreeItem
<
Renderable
>
tsNodeItem
=
buildCityObjectNode
(
ts
,
intersectionsGroupItem
);
TreeItem
<
Renderable
>
tsNodeItem
=
new
TreeItem
<>(
tsNode
);
tsNodeItem
.
setExpanded
(
false
);
allIntersectionsNodeTextItem
.
getChildren
().
add
(
tsNodeItem
);
createGeometryNodes
(
ts
,
tsNodeItem
);
createTrafficSpacesNodes
(
ts
,
tsNodeItem
);
createTrafficSpacesNodes
(
ts
,
tsNodeItem
);
}
}
}
}
...
@@ -703,34 +702,26 @@ public class CityDoctorController {
...
@@ -703,34 +702,26 @@ public class CityDoctorController {
private
void
createTrafficSpacesNodes
(
TransportationObject
t
,
TreeItem
<
Renderable
>
root
)
{
private
void
createTrafficSpacesNodes
(
TransportationObject
t
,
TreeItem
<
Renderable
>
root
)
{
if
(
t
instanceof
TransportationSpace
space
)
{
if
(
t
instanceof
TransportationSpace
space
)
{
if
(!
space
.
getTrafficSpaces
().
isEmpty
())
{
if
(!
space
.
getTrafficSpaces
().
isEmpty
())
{
AllT
rafficSpaces
Node
allTS
Node
=
new
AllTrafficSpaces
Node
(
space
.
getTrafficSpaces
(),
CityObjectGroupNode
t
rafficSpaces
Group
Node
=
new
CityObjectGroup
Node
(
space
.
getTrafficSpaces
(),
TrafficSpaceObject
.
TrafficSpaceType
.
TRAFFIC_SPACE
);
"TRAFFIC_SPACE"
,
Color
.
YELLOW
);
TreeItem
<
Renderable
>
allTSNodeText
Item
=
new
TreeItem
<>(
allTS
Node
);
TreeItem
<
Renderable
>
trafficSpacesGroup
Item
=
new
TreeItem
<>(
trafficSpacesGroup
Node
);
root
.
getChildren
().
add
(
allTSNodeText
Item
);
root
.
getChildren
().
add
(
trafficSpacesGroup
Item
);
allTSNodeText
Item
.
setExpanded
(
true
);
trafficSpacesGroup
Item
.
setExpanded
(
true
);
for
(
TrafficSpaceObject
tso
:
space
.
getTrafficSpaces
())
{
for
(
TrafficSpaceObject
tso
:
space
.
getTrafficSpaces
())
{
TransportationObjectNode
tsoNode
=
new
TransportationObjectNode
(
tso
);
TreeItem
<
Renderable
>
tsoNodeItem
=
buildCityObjectNode
(
tso
,
trafficSpacesGroupItem
);
TreeItem
<
Renderable
>
tsoNodeItem
=
new
TreeItem
<>(
tsoNode
);
tsoNodeItem
.
setExpanded
(
false
);
allTSNodeTextItem
.
getChildren
().
add
(
tsoNodeItem
);
createGeometryNodes
(
tso
,
tsoNodeItem
);
createTrafficAreaNodes
(
tso
,
tsoNodeItem
,
TrafficAreaObject
.
TrafficAreaType
.
TRAFFIC_AREA
);
createTrafficAreaNodes
(
tso
,
tsoNodeItem
,
TrafficAreaObject
.
TrafficAreaType
.
TRAFFIC_AREA
);
}
}
}
}
if
(!
space
.
getAuxTrafficSpaces
().
isEmpty
())
{
if
(!
space
.
getAuxTrafficSpaces
().
isEmpty
())
{
All
TrafficSpaces
Node
allTS
Node
=
new
AllTrafficSpaces
Node
(
space
.
get
Aux
TrafficSpaces
(),
CityObjectGroupNode
aux
TrafficSpaces
Group
Node
=
new
CityObjectGroup
Node
(
space
.
getTrafficSpaces
(),
TrafficSpaceObject
.
TrafficSpaceType
.
AUXILIARY_TRAFFIC_SPACE
);
"
AUXILIARY_TRAFFIC_SPACE
"
,
Color
.
YELLOW
);
TreeItem
<
Renderable
>
a
llTSNodeText
Item
=
new
TreeItem
<>(
a
llTS
Node
);
TreeItem
<
Renderable
>
a
uxTrafficSpacesGroup
Item
=
new
TreeItem
<>(
a
uxTrafficSpacesGroup
Node
);
root
.
getChildren
().
add
(
a
llTSNodeText
Item
);
root
.
getChildren
().
add
(
a
uxTrafficSpacesGroup
Item
);
a
llTSNodeText
Item
.
setExpanded
(
true
);
a
uxTrafficSpacesGroup
Item
.
setExpanded
(
true
);
for
(
TrafficSpaceObject
atso
:
space
.
getAuxTrafficSpaces
())
{
for
(
TrafficSpaceObject
atso
:
space
.
getAuxTrafficSpaces
())
{
TransportationObjectNode
atsoNode
=
new
TransportationObjectNode
(
atso
);
TreeItem
<
Renderable
>
atsoNodeItem
=
buildCityObjectNode
(
atso
,
auxTrafficSpacesGroupItem
);
TreeItem
<
Renderable
>
atsoNodeItem
=
new
TreeItem
<>(
atsoNode
);
atsoNodeItem
.
setExpanded
(
false
);
allTSNodeTextItem
.
getChildren
().
add
(
atsoNodeItem
);
createGeometryNodes
(
atso
,
atsoNodeItem
);
createTrafficAreaNodes
(
atso
,
atsoNodeItem
,
TrafficAreaObject
.
TrafficAreaType
.
AUXILIARY_TRAFFIC_AREA
);
createTrafficAreaNodes
(
atso
,
atsoNodeItem
,
TrafficAreaObject
.
TrafficAreaType
.
AUXILIARY_TRAFFIC_AREA
);
}
}
}
}
...
@@ -739,16 +730,13 @@ public class CityDoctorController {
...
@@ -739,16 +730,13 @@ public class CityDoctorController {
public
void
createTrafficAreaNodes
(
TransportationObject
t
,
TreeItem
<
Renderable
>
root
,
TrafficAreaObject
.
TrafficAreaType
type
)
{
public
void
createTrafficAreaNodes
(
TransportationObject
t
,
TreeItem
<
Renderable
>
root
,
TrafficAreaObject
.
TrafficAreaType
type
)
{
if
(
t
instanceof
TrafficSpaceObject
space
&&
!
space
.
getTrafficAreas
().
isEmpty
())
{
if
(
t
instanceof
TrafficSpaceObject
space
&&
!
space
.
getTrafficAreas
().
isEmpty
())
{
AllTrafficAreaNode
allTANode
=
new
AllTrafficAreaNode
(
space
.
getTrafficAreas
(),
type
);
CityObjectGroupNode
trafficAreaGroupNode
=
new
CityObjectGroupNode
(
space
.
getTrafficAreas
(),
type
.
toString
(),
Color
.
YELLOW
);
TreeItem
<
Renderable
>
allTANodeTextItem
=
new
TreeItem
<>(
allTANode
);
TreeItem
<
Renderable
>
trafficAreaGroupItem
=
new
TreeItem
<>(
trafficAreaGroupNode
);
root
.
getChildren
().
add
(
allTANodeTextItem
);
root
.
getChildren
().
add
(
trafficAreaGroupItem
);
allTANodeTextItem
.
setExpanded
(
true
);
trafficAreaGroupItem
.
setExpanded
(
true
);
for
(
TrafficAreaObject
tao
:
space
.
getTrafficAreas
())
{
for
(
TrafficAreaObject
tao
:
space
.
getTrafficAreas
())
{
TransportationObjectNode
taoNode
=
new
TransportationObjectNode
(
tao
);
buildCityObjectNode
(
tao
,
trafficAreaGroupItem
);
TreeItem
<
Renderable
>
taoNodeTextItem
=
new
TreeItem
<>(
taoNode
);
taoNodeTextItem
.
setExpanded
(
true
);
allTANodeTextItem
.
getChildren
().
add
(
taoNodeTextItem
);
createGeometryNodes
(
tao
,
taoNodeTextItem
);
}
}
}
}
...
@@ -758,12 +746,8 @@ public class CityDoctorController {
...
@@ -758,12 +746,8 @@ public class CityDoctorController {
int
tunnelChunk
=
tunnelChunkNr
.
get
();
int
tunnelChunk
=
tunnelChunkNr
.
get
();
for
(
int
i
=
tunnelChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
tunnelChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
for
(
int
i
=
tunnelChunk
*
MAX_FEATURES_PER_CHUNK
;
i
<
(
tunnelChunk
+
1
)
*
MAX_FEATURES_PER_CHUNK
&&
i
<
list
.
size
();
i
++)
{
Tunnel
tunnel
=
list
.
get
(
i
);
Tunnel
tunnel
=
list
.
get
(
i
);
TunnelNode
node
=
new
TunnelNode
(
tunnel
);
TreeItem
<
Renderable
>
item
=
buildTopLevelCityObjectNode
(
tunnel
,
root
);
TreeItem
<
Renderable
>
item
=
new
TreeItem
<>(
node
);
item
.
setExpanded
(
true
);
root
.
getChildren
().
add
(
item
);
createGeometryNodes
(
tunnel
,
item
);
createBoundarySurfaceNodes
(
tunnel
.
getBoundarySurfaces
(),
item
);
createTunnelHollowNodes
(
tunnel
,
item
);
createTunnelHollowNodes
(
tunnel
,
item
);
createTunnelInstallationNodes
(
tunnel
,
item
);
createTunnelInstallationNodes
(
tunnel
,
item
);
createTunnelFurnitureNodes
(
tunnel
,
item
);
createTunnelFurnitureNodes
(
tunnel
,
item
);
...
@@ -788,17 +772,14 @@ public class CityDoctorController {
...
@@ -788,17 +772,14 @@ public class CityDoctorController {
if
(
tunnel
.
getTunnelConstructiveElements
().
isEmpty
()){
if
(
tunnel
.
getTunnelConstructiveElements
().
isEmpty
()){
return
;
return
;
}
}
AllTunnelConstructiveElementsNode
allTceNode
=
new
AllTunnelConstructiveElementsNode
(
tunnel
.
getTunnelConstructiveElements
());
TreeItem
<
Renderable
>
allTceNodeTextItem
=
new
TreeItem
<>(
allTceNode
);
CityObjectGroupNode
constructiveElementsGroupNode
=
new
CityObjectGroupNode
(
tunnel
.
getTunnelConstructiveElements
(),
root
.
getChildren
().
add
(
allTceNodeTextItem
);
"Constructive Elements"
,
Color
.
DARKGRAY
);
TreeItem
<
Renderable
>
constructiveElementsGroupItem
=
new
TreeItem
<>(
constructiveElementsGroupNode
);
root
.
getChildren
().
add
(
constructiveElementsGroupItem
);
for
(
TunnelConstructiveElement
tce
:
tunnel
.
getTunnelConstructiveElements
())
{
for
(
TunnelConstructiveElement
tce
:
tunnel
.
getTunnelConstructiveElements
())
{
TunnelConstructiveElementNode
tceNode
=
new
TunnelConstructiveElementNode
(
tce
);
buildCityObjectNode
(
tce
,
constructiveElementsGroupItem
,
tce
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
tceNodeItem
=
new
TreeItem
<>(
tceNode
);
tceNodeItem
.
setExpanded
(
true
);
allTceNodeTextItem
.
getChildren
().
add
(
tceNodeItem
);
createGeometryNodes
(
tce
,
tceNodeItem
);
createBoundarySurfaceNodes
(
tce
.
getBoundarySurfaces
(),
tceNodeItem
);
}
}
}
}
...
@@ -806,17 +787,18 @@ public class CityDoctorController {
...
@@ -806,17 +787,18 @@ public class CityDoctorController {
if
(
tunnel
.
getTunnelParts
().
isEmpty
())
{
if
(
tunnel
.
getTunnelParts
().
isEmpty
())
{
return
;
return
;
}
}
AllTunnelPartsNode
allTpsText
=
new
AllTunnelPartsNode
(
tunnel
.
getTunnelParts
());
TreeItem
<
Renderable
>
allTpsTextItem
=
new
TreeItem
<>(
allTpsText
);
CityObjectGroupNode
tunnelPartsGroupNode
=
new
CityObjectGroupNode
(
tunnel
.
getTunnelParts
(),
"Tunnel parts"
,
Color
.
DARKGRAY
);
root
.
getChildren
().
add
(
allTpsTextItem
);
TreeItem
<
Renderable
>
tunnelPartsGroupItem
=
new
TreeItem
<>(
tunnelPartsGroupNode
);
root
.
getChildren
().
add
(
tunnelPartsGroupItem
);
for
(
TunnelPart
tp
:
tunnel
.
getTunnelParts
())
{
for
(
TunnelPart
tp
:
tunnel
.
getTunnelParts
())
{
T
unnelPartNode
tpNode
=
new
TunnelPartNode
(
tp
);
T
reeItem
<
Renderable
>
tpNodeItem
=
buildCityObjectNode
(
tp
,
tunnelPartsGroupItem
,
tp
.
getBoundarySurfaces
()
);
TreeItem
<
Renderable
>
tpNodeItem
=
new
TreeItem
<>(
tpNode
);
tpNodeItem
.
setExpanded
(
true
);
createTunnelHollowNodes
(
tunnel
,
tpNodeItem
);
allTpsTextItem
.
getChildren
().
add
(
tpNodeItem
);
createTunnelInstallationNodes
(
tunnel
,
tpNodeItem
);
create
Geometry
Nodes
(
t
p
,
tpNodeItem
);
create
TunnelFurniture
Nodes
(
t
unnel
,
tpNodeItem
);
create
BoundarySurfaceNodes
(
tp
.
getBoundarySurfaces
()
,
tpNodeItem
);
create
TunnelConstructiveElementsNodes
(
tunnel
,
tpNodeItem
);
}
}
}
}
...
@@ -836,18 +818,14 @@ public class CityDoctorController {
...
@@ -836,18 +818,14 @@ public class CityDoctorController {
if
(
bridge
.
getConstructiveElements
().
isEmpty
())
{
if
(
bridge
.
getConstructiveElements
().
isEmpty
())
{
return
;
return
;
}
}
AllBridgeConstructiveElementsNode
allBceNode
=
new
AllBridgeConstructiveElementsNode
(
bridge
.
getConstructiveElements
());
CityObjectGroupNode
constructiveElementsGroupNode
=
new
CityObjectGroupNode
(
TreeItem
<
Renderable
>
allBceNodeTextItem
=
new
TreeItem
<>(
allBceNode
);
bridge
.
getConstructiveElements
(),
"Constructive Elements"
,
Color
.
CORAL
);
item
.
getChildren
().
add
(
allBceNodeTextItem
);
TreeItem
<
Renderable
>
constructiveElementsGroupItem
=
new
TreeItem
<>(
constructiveElementsGroupNode
);
item
.
getChildren
().
add
(
constructiveElementsGroupItem
);
for
(
BridgeConstructiveElement
bce
:
bridge
.
getConstructiveElements
())
{
for
(
BridgeConstructiveElement
bce
:
bridge
.
getConstructiveElements
())
{
BridgeConstructiveElementNode
bceNode
=
new
BridgeConstructiveElementNode
(
bce
);
buildCityObjectNode
(
bce
,
constructiveElementsGroupItem
,
bce
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
bceNodeItem
=
new
TreeItem
<>(
bceNode
);
bceNodeItem
.
setExpanded
(
true
);
allBceNodeTextItem
.
getChildren
().
add
(
bceNodeItem
);
createGeometryNodes
(
bce
,
bceNodeItem
);
createBoundarySurfaceNodes
(
bce
.
getBoundarySurfaces
(),
bceNodeItem
);
}
}
}
}
...
@@ -855,21 +833,22 @@ public class CityDoctorController {
...
@@ -855,21 +833,22 @@ public class CityDoctorController {
if
(
bridge
.
getParts
().
isEmpty
())
{
if
(
bridge
.
getParts
().
isEmpty
())
{
return
;
return
;
}
}
AllBridgePartsNode
allBpsText
=
new
AllBridgePartsNode
(
bridge
.
getParts
());
TreeItem
<
Renderable
>
allBpsTextItem
=
new
TreeItem
<>(
allBpsText
);
CityObjectGroupNode
bridgePartsGroupNode
=
new
CityObjectGroupNode
(
bridge
.
getParts
(),
"Bridge Parts"
,
Color
.
CORAL
);
item
.
getChildren
().
add
(
allBpsTextItem
);
TreeItem
<
Renderable
>
bridgePartsGroupItem
=
new
TreeItem
<>(
bridgePartsGroupNode
);
item
.
getChildren
().
add
(
bridgePartsGroupItem
);
for
(
BridgeObject
bp
:
bridge
.
getParts
())
{
for
(
BridgeObject
bp
:
bridge
.
getParts
())
{
BridgeNode
bpNode
=
new
BridgeNode
(
bp
);
TreeItem
<
Renderable
>
bpNodeItem
=
buildCityObjectNode
(
bp
,
bridgePartsGroupItem
,
bp
.
getBoundarySurfaces
()
);
TreeItem
<
Renderable
>
bpNodeItem
=
new
TreeItem
<>(
bpNode
);
bpNodeItem
.
setExpanded
(
true
);
createBridgeRoomNodes
(
bp
,
bpNodeItem
);
allBpsTextItem
.
getChildren
().
add
(
bpNodeItem
);
createBridgeInstallationNodes
(
bp
,
bpNodeItem
);
create
Geometry
Nodes
(
bp
,
bpNodeItem
);
create
BridgeFurniture
Nodes
(
bp
,
bpNodeItem
);
createB
oundarySurfaceNodes
(
bp
.
getBoundarySurfaces
()
,
bpNodeItem
);
createB
ridgeConstructiveElementsNodes
(
bp
,
bpNodeItem
);
}
}
}
}
private
void
createBuildingInstallationNodes
(
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
private
void
createBuildingInstallationNodes
(
Abstract
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
createInstallationNodes
(
ab
.
getBuildingInstallations
(),
root
);
createInstallationNodes
(
ab
.
getBuildingInstallations
(),
root
);
}
}
...
@@ -878,20 +857,16 @@ public class CityDoctorController {
...
@@ -878,20 +857,16 @@ public class CityDoctorController {
return
;
return
;
}
}
AllInstallationsNode
allBiNode
=
new
AllInstallationsNode
(
installations
);
CityObjectGroupNode
installationsGroupNode
=
new
CityObjectGroupNode
(
installations
,
"Installations"
,
null
);
TreeItem
<
Renderable
>
allBpsTextItem
=
new
TreeItem
<>(
allBiNode
);
TreeItem
<
Renderable
>
installationsGroupItem
=
new
TreeItem
<>(
installationsGroupNode
);
root
.
getChildren
().
add
(
allBpsTextItem
);
root
.
getChildren
().
add
(
installationsGroupItem
);
for
(
Installation
bi
:
installations
)
{
for
(
Installation
bi
:
installations
)
{
InstallationNode
biNode
=
new
InstallationNode
(
bi
);
buildCityObjectNode
(
bi
,
installationsGroupItem
,
bi
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
biItem
=
new
TreeItem
<>(
biNode
);
biItem
.
setExpanded
(
true
);
allBpsTextItem
.
getChildren
().
add
(
biItem
);
createGeometryNodes
(
bi
,
biItem
);
createBoundarySurfaceNodes
(
bi
.
getBoundarySurfaces
(),
biItem
);
}
}
}
}
private
void
createBuildingRoomNodes
(
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
private
void
createBuildingRoomNodes
(
Abstract
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
createRoomNodes
(
ab
.
getBuildingRooms
(),
root
);
createRoomNodes
(
ab
.
getBuildingRooms
(),
root
);
}
}
...
@@ -900,58 +875,48 @@ public class CityDoctorController {
...
@@ -900,58 +875,48 @@ public class CityDoctorController {
return
;
return
;
}
}
AllRoomsNode
allRoNode
=
new
AllRoomsNode
(
rooms
);
CityObjectGroupNode
roomsGroupNode
=
new
CityObjectGroupNode
(
rooms
,
"Rooms"
,
null
);
TreeItem
<
Renderable
>
allRoNodeTextItem
=
new
TreeItem
<>(
allRoNode
);
TreeItem
<
Renderable
>
roomsGroupItem
=
new
TreeItem
<>(
roomsGroupNode
);
root
.
getChildren
().
add
(
allRoNodeTextItem
);
root
.
getChildren
().
add
(
roomsGroupItem
);
for
(
AbstractRoom
room
:
rooms
)
{
for
(
AbstractRoom
room
:
rooms
)
{
RoomNode
roomNode
=
new
RoomNode
(
room
);
buildCityObjectNode
(
room
,
roomsGroupItem
,
room
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
roomNodeTextItem
=
new
TreeItem
<>(
roomNode
);
roomNodeTextItem
.
setExpanded
(
true
);
allRoNodeTextItem
.
getChildren
().
add
(
roomNodeTextItem
);
createGeometryNodes
(
room
,
roomNodeTextItem
);
createBoundarySurfaceNodes
(
room
.
getBoundarySurfaces
(),
roomNodeTextItem
);
}
}
}
}
private
void
createBuildingStoreyNodes
(
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
private
void
createBuildingStoreyNodes
(
Abstract
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
List
<
Storey
>
storeys
=
ab
.
getBuildingStoreys
();
List
<
Storey
>
storeys
=
ab
.
getBuildingStoreys
();
if
(
storeys
.
isEmpty
())
{
if
(
storeys
.
isEmpty
())
{
return
;
return
;
}
}
AllStoreysNode
allSNode
=
new
AllStoreysNode
(
storeys
);
TreeItem
<
Renderable
>
allSNodeTextItem
=
new
TreeItem
<>(
allSNode
);
CityObjectGroupNode
storeysGroupNode
=
new
CityObjectGroupNode
(
storeys
,
"Storeys"
,
null
);
root
.
getChildren
().
add
(
allSNodeTextItem
);
TreeItem
<
Renderable
>
storeysGroupItem
=
new
TreeItem
<>(
storeysGroupNode
);
root
.
getChildren
().
add
(
storeysGroupItem
);
for
(
Storey
storey
:
storeys
)
{
for
(
Storey
storey
:
storeys
)
{
StoreyNode
storeyNode
=
new
StoreyNode
(
storey
);
buildCityObjectNode
(
storey
,
storeysGroupItem
,
storey
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
storeyNodeTextItem
=
new
TreeItem
<>(
storeyNode
);
storeyNodeTextItem
.
setExpanded
(
true
);
allSNodeTextItem
.
getChildren
().
add
(
storeyNodeTextItem
);
createGeometryNodes
(
storey
,
storeyNodeTextItem
);
createBoundarySurfaceNodes
(
storey
.
getBoundarySurfaces
(),
storeyNodeTextItem
);
}
}
}
}
public
void
createBuildingUnitNodes
(
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
public
void
createBuildingUnitNodes
(
Abstract
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
List
<
BuildingUnit
>
buildingUnits
=
ab
.
getBuildingUnits
();
List
<
BuildingUnit
>
buildingUnits
=
ab
.
getBuildingUnits
();
if
(
buildingUnits
.
isEmpty
())
{
if
(
buildingUnits
.
isEmpty
())
{
return
;
return
;
}
}
AllBuildingUnitsNode
allSNode
=
new
AllBuildingUnitsNode
(
buildingUnits
);
TreeItem
<
Renderable
>
allSNodeTextItem
=
new
TreeItem
<>(
allSNode
);
CityObjectGroupNode
buildingUnitsGroupNode
=
new
CityObjectGroupNode
(
buildingUnits
,
"Building Units"
,
null
);
root
.
getChildren
().
add
(
allSNodeTextItem
);
TreeItem
<
Renderable
>
buildingUnitsGroupItem
=
new
TreeItem
<>(
buildingUnitsGroupNode
);
root
.
getChildren
().
add
(
buildingUnitsGroupItem
);
for
(
BuildingUnit
buildingUnit
:
buildingUnits
)
{
for
(
BuildingUnit
buildingUnit
:
buildingUnits
)
{
BuildingUnitNode
buildingUnitNode
=
new
BuildingUnitNode
(
buildingUnit
);
buildCityObjectNode
(
buildingUnit
,
buildingUnitsGroupItem
,
buildingUnit
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
storeyNodeTextItem
=
new
TreeItem
<>(
buildingUnitNode
);
storeyNodeTextItem
.
setExpanded
(
true
);
allSNodeTextItem
.
getChildren
().
add
(
storeyNodeTextItem
);
createGeometryNodes
(
buildingUnit
,
storeyNodeTextItem
);
createBoundarySurfaceNodes
(
buildingUnit
.
getBoundarySurfaces
(),
storeyNodeTextItem
);
}
}
}
}
private
void
createBuildingFurnitureNodes
(
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
private
void
createBuildingFurnitureNodes
(
Abstract
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
createFurnitureNodes
(
ab
.
getBuildingRoomFurnitureList
(),
root
);
createFurnitureNodes
(
ab
.
getBuildingRoomFurnitureList
(),
root
);
}
}
...
@@ -960,16 +925,12 @@ public class CityDoctorController {
...
@@ -960,16 +925,12 @@ public class CityDoctorController {
return
;
return
;
}
}
AllFurnitureNode
allFnNode
=
new
AllFurnitureNode
(
furniture
);
CityObjectGroupNode
furnitureGroupNode
=
new
CityObjectGroupNode
(
furniture
,
"Furniture"
,
null
);
TreeItem
<
Renderable
>
allFnNodeTextItem
=
new
TreeItem
<>(
allFnNode
);
TreeItem
<
Renderable
>
furnitureGroupItem
=
new
TreeItem
<>(
furnitureGroupNode
);
root
.
getChildren
().
add
(
allFnNodeTextItem
);
root
.
getChildren
().
add
(
furnitureGroupItem
);
for
(
AbstractFurniture
fn
:
furniture
)
{
for
(
AbstractFurniture
fn
:
furniture
)
{
FurnitureNode
fnNode
=
new
FurnitureNode
(
fn
);
buildCityObjectNode
(
fn
,
furnitureGroupItem
,
fn
.
getBoundarySurfaceList
());
TreeItem
<
Renderable
>
fnNodeTextItem
=
new
TreeItem
<>(
fnNode
);
fnNodeTextItem
.
setExpanded
(
true
);
allFnNodeTextItem
.
getChildren
().
add
(
fnNodeTextItem
);
createGeometryNodes
(
fn
,
fnNodeTextItem
);
createBoundarySurfaceNodes
(
fn
.
getBoundarySurfaceList
(),
fnNodeTextItem
);
}
}
}
}
...
@@ -977,25 +938,26 @@ public class CityDoctorController {
...
@@ -977,25 +938,26 @@ public class CityDoctorController {
if
(
bsList
.
isEmpty
())
{
if
(
bsList
.
isEmpty
())
{
return
;
return
;
}
}
AllBoundarySurfacesNode
allBsText
=
new
AllBoundarySurfacesNode
(
bsList
);
TreeItem
<
Renderable
>
allBpsTextItem
=
new
TreeItem
<>(
allBsText
);
root
.
getChildren
().
add
(
allBpsTextItem
);
allBpsTextItem
.
getChildren
().
add
(
new
TreeItem
<>());
CityObjectGroupNode
boundarySurfacesGroupNode
=
new
CityObjectGroupNode
(
bsList
,
"Boundary Surfaces"
,
null
);
TreeItem
<
Renderable
>
boundarySurfacesGroupItem
=
new
TreeItem
<>(
boundarySurfacesGroupNode
);
root
.
getChildren
().
add
(
boundarySurfacesGroupItem
);
allBpsTextItem
.
expandedProperty
().
addListener
((
obs
,
old
,
newV
)
->
{
boundarySurfacesGroupItem
.
getChildren
().
add
(
new
TreeItem
<>());
if
(
Boolean
.
TRUE
.
equals
(
newV
)
&&
allBpsTextItem
.
getChildren
().
size
()
==
1
)
{
boundarySurfacesGroupItem
.
expandedProperty
().
addListener
((
obs
,
old
,
newV
)
->
{
if
(
Boolean
.
TRUE
.
equals
(
newV
)
&&
boundarySurfacesGroupItem
.
getChildren
().
size
()
==
1
)
{
Platform
.
runLater
(()
->
{
Platform
.
runLater
(()
->
{
allBpsText
Item
.
getChildren
().
clear
();
boundarySurfacesGroup
Item
.
getChildren
().
clear
();
for
(
BoundarySurface
bs
:
bsList
)
{
for
(
BoundarySurface
bs
:
bsList
)
{
BoundarySurface
Node
bsText
=
new
BoundarySurface
Node
(
bs
);
CityObject
Node
bsText
=
new
CityObject
Node
(
bs
);
TreeItem
<
Renderable
>
bsTextItem
=
new
TreeItem
<>(
bsText
);
TreeItem
<
Renderable
>
bsTextItem
=
new
TreeItem
<>(
bsText
);
bsTextItem
.
setExpanded
(
true
);
bsTextItem
.
setExpanded
(
true
);
allBpsText
Item
.
getChildren
().
add
(
bsTextItem
);
boundarySurfacesGroup
Item
.
getChildren
().
add
(
bsTextItem
);
createGeometryNodes
(
bs
,
bsTextItem
);
createGeometryNodes
(
bs
,
bsTextItem
);
createOpeningNodes
(
bs
.
getOpenings
(),
bsTextItem
);
createOpeningNodes
(
bs
.
getOpenings
(),
bsTextItem
);
}
}
updateTree
(
allBpsText
Item
);
updateTree
(
boundarySurfacesGroup
Item
);
});
});
}
}
});
});
...
@@ -1005,31 +967,35 @@ public class CityDoctorController {
...
@@ -1005,31 +967,35 @@ public class CityDoctorController {
if
(
openings
==
null
||
openings
.
isEmpty
())
{
if
(
openings
==
null
||
openings
.
isEmpty
())
{
return
;
return
;
}
}
AllOpeningsNode
allOpeningsNode
=
new
AllOpeningsNode
(
openings
);
TreeItem
<
Renderable
>
allOpeningsItem
=
new
TreeItem
<>(
allOpeningsNode
);
CityObjectGroupNode
openingsGroupNode
=
new
CityObjectGroupNode
(
openings
,
"Openings"
,
null
);
TreeItem
<
Renderable
>
openingsGroupItem
=
new
TreeItem
<>(
openingsGroupNode
);
root
.
getChildren
().
add
(
openingsGroupItem
);
for
(
Opening
o
:
openings
)
{
for
(
Opening
o
:
openings
)
{
OpeningNode
openingNode
=
new
OpeningNode
(
o
);
OpeningNode
openingNode
=
new
OpeningNode
(
o
);
TreeItem
<
Renderable
>
opening
s
Item
=
new
TreeItem
<>(
openingNode
);
TreeItem
<
Renderable
>
openingItem
=
new
TreeItem
<>(
openingNode
);
allO
peningsItem
.
getChildren
().
add
(
opening
s
Item
);
o
penings
Group
Item
.
getChildren
().
add
(
openingItem
);
}
}
root
.
getChildren
().
add
(
allOpeningsItem
);
}
}
private
void
createBuildingPartNodes
(
Building
ab
,
TreeItem
<
Renderable
>
item
)
{
private
void
createBuildingPartNodes
(
Building
ab
,
TreeItem
<
Renderable
>
item
)
{
if
(
ab
.
getBuildingParts
().
isEmpty
())
{
if
(
ab
.
getBuildingParts
().
isEmpty
())
{
return
;
return
;
}
}
AllBuildingPartsNode
allBpsText
=
new
AllBuildingParts
Node
(
ab
.
getBuildingParts
());
CityObjectGroupNode
buildingPartsGroupNode
=
new
CityObjectGroup
Node
(
ab
.
getBuildingParts
()
,
"Building Parts"
,
null
);
TreeItem
<
Renderable
>
allBpsText
Item
=
new
TreeItem
<>(
allBpsText
);
TreeItem
<
Renderable
>
buildingPartsGroup
Item
=
new
TreeItem
<>(
buildingPartsGroupNode
);
item
.
getChildren
().
add
(
allBpsText
Item
);
item
.
getChildren
().
add
(
buildingPartsGroup
Item
);
for
(
BuildingPart
bp
:
ab
.
getBuildingParts
())
{
for
(
BuildingPart
bp
:
ab
.
getBuildingParts
())
{
BuildingPartNode
bpNode
=
new
BuildingPartNode
(
bp
);
TreeItem
<
Renderable
>
bpNodeItem
=
buildCityObjectNode
(
bp
,
buildingPartsGroupItem
,
bp
.
getBoundarySurfaces
());
TreeItem
<
Renderable
>
bpNodeItem
=
new
TreeItem
<>(
bpNode
);
bpNodeItem
.
setExpanded
(
true
);
createBuildingInstallationNodes
(
bp
,
bpNodeItem
);
allBpsTextItem
.
getChildren
().
add
(
bpNodeItem
);
createBuildingRoomNodes
(
bp
,
bpNodeItem
);
createGeometryNodes
(
bp
,
bpNodeItem
);
createBuildingFurnitureNodes
(
bp
,
bpNodeItem
);
createBoundarySurfaceNodes
(
bp
.
getBoundarySurfaces
(),
bpNodeItem
);
createBuildingStoreyNodes
(
bp
,
bpNodeItem
);
createBuildingUnitNodes
(
bp
,
bpNodeItem
);
}
}
}
}
...
@@ -1043,11 +1009,15 @@ public class CityDoctorController {
...
@@ -1043,11 +1009,15 @@ public class CityDoctorController {
public
void
startChecks
(
ValidationConfiguration
config
,
ProgressListener
l
)
{
public
void
startChecks
(
ValidationConfiguration
config
,
ProgressListener
l
)
{
if
(
model
==
null
)
{
if
(
model
==
null
)
{
logger
.
warn
(
Localization
.
getText
(
"CityDoctorController.noDatamodel"
));
if
(
logger
.
isWarnEnabled
())
{
logger
.
warn
(
Localization
.
getText
(
"CityDoctorController.noDatamodel"
));
}
return
;
return
;
}
}
if
(
sourceFile
==
null
)
{
if
(
sourceFile
==
null
)
{
logger
.
warn
(
Localization
.
getText
(
"CityDoctorController.noSourceFile"
));
if
(
logger
.
isWarnEnabled
())
{
logger
.
warn
(
Localization
.
getText
(
"CityDoctorController.noSourceFile"
));
}
return
;
return
;
}
}
try
{
try
{
...
@@ -1083,9 +1053,10 @@ public class CityDoctorController {
...
@@ -1083,9 +1053,10 @@ public class CityDoctorController {
public
void
startZipFileChecks
(
ValidationConfiguration
config
,
ProgressListener
l
,
boolean
lowMemoryMode
,
public
void
startZipFileChecks
(
ValidationConfiguration
config
,
ProgressListener
l
,
boolean
lowMemoryMode
,
Path
outputPath
,
boolean
pdfReports
,
boolean
xmlReports
)
{
Path
outputPath
,
boolean
pdfReports
,
boolean
xmlReports
)
{
if
(
zipArchive
==
null
)
{
if
(
zipArchive
==
null
&&
logger
.
isWarnEnabled
()
)
{
logger
.
warn
(
Localization
.
getText
(
"CityDoctorController.noZipFile"
));
logger
.
warn
(
Localization
.
getText
(
"CityDoctorController.noZipFile"
));
}
}
if
(
lowMemoryMode
)
{
if
(
lowMemoryMode
)
{
startZipFileCheckStream
(
config
,
outputPath
,
pdfReports
,
xmlReports
);
startZipFileCheckStream
(
config
,
outputPath
,
pdfReports
,
xmlReports
);
return
;
return
;
...
...
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