Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Commits
e1e08ee0
Commit
e1e08ee0
authored
3 months ago
by
Riegel
Browse files
Options
Download
Email Patches
Plain Diff
Feat: Implement parsing of LibraryObjects in zip-files
parent
a8265bea
master
dev
dev_cpp_code_conversion
dev_gui_features_zip_loading
3.17.0
archive/dev_gui_features_zip_loading
2 merge requests
!28
Version 3.17.0 Release
,
!26
Add ZIP-archive support
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/LibraryObject.java
+28
-17
...ft/stuttgart/citydoctor2/datastructure/LibraryObject.java
with
28 additions
and
17 deletions
+28
-17
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/LibraryObject.java
+
28
-
17
View file @
e1e08ee0
...
...
@@ -74,14 +74,7 @@ public class LibraryObject extends Geometry {
if
(
path
.
toFile
().
exists
())
{
try
{
CityGmlParser
.
gagLogger
(
true
);
CityDoctorModel
model
=
CityGmlParser
.
parseCityGmlFile
(
path
.
toString
(),
config
);
List
<
CityObject
>
objects
=
model
.
createFeatureStream
().
toList
();
if
(
objects
.
isEmpty
())
{
throw
new
InvalidGmlFileException
(
"Referenced library-object's gml file does not contain a CityGML object!"
);
}
else
if
(
objects
.
size
()
>
1
)
{
throw
new
InvalidGmlFileException
(
"Referenced library-object's gml file contains more than one CityGML object!"
);
}
geo
=
objects
.
get
(
0
).
getHighestLodGeometry
();
geo
=
getProtoGeometry
(
CityGmlParser
.
parseCityGmlFile
(
path
.
toString
(),
config
));
}
catch
(
CityGmlParseException
e
)
{
logger
.
error
(
String
.
format
(
"Encountered an error while parsing library object %s"
,
path
));
...
...
@@ -89,7 +82,6 @@ public class LibraryObject extends Geometry {
}
catch
(
InvalidGmlFileException
e
)
{
logger
.
error
(
e
.
getStackTrace
());
}
finally
{
// Failsafe to remove gag should parsing fail
CityGmlParser
.
gagLogger
(
false
);
}
}
else
{
...
...
@@ -99,15 +91,34 @@ public class LibraryObject extends Geometry {
}
private
static
Geometry
parseZipEntry
(
CityGmlZipEntry
entry
,
ParserConfiguration
config
)
{
Geometry
geom
=
null
;
try
(
CityGmlZipInputStream
cgis
=
new
CityGmlZipInputStream
(
entry
))
{
InputStream
is
=
cgis
.
getInputStream
();
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
Geometry
geo
=
null
;
try
{
entry
.
loadEntry
(
config
);
geo
=
getProtoGeometry
(
entry
.
getModel
());
}
catch
(
InvalidGmlFileException
e
)
{
logger
.
error
(
e
.
getStackTrace
());
}
catch
(
CityGmlParseException
e
)
{
logger
.
error
(
String
.
format
(
"Encountered an error while parsing library object %s"
,
entry
.
getFileName
()));
logger
.
error
(
e
.
getStackTrace
());
}
finally
{
//Gag logger again for next entry
CityGmlParser
.
gagLogger
(
true
);
}
return
geo
;
}
private
static
Geometry
getProtoGeometry
(
CityDoctorModel
model
)
throws
InvalidGmlFileException
,
CityGmlParseException
{
if
(
model
==
null
)
{
throw
new
CityGmlParseException
(
"CityDoctorModel of referenced LibraryObject is null"
);
}
List
<
CityObject
>
objects
=
model
.
createFeatureStream
().
toList
();
if
(
objects
.
isEmpty
())
{
throw
new
InvalidGmlFileException
(
"Referenced library-object's gml file does not contain a CityGML object!"
);
}
else
if
(
objects
.
size
()
>
1
)
{
throw
new
InvalidGmlFileException
(
"Referenced library-object's gml file contains more than one CityGML object!"
);
}
return
geom
;
return
objects
.
get
(
0
).
getHighestLodGeometry
()
;
}
}
This diff is collapsed.
Click to expand it.
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
Menu
Explore
Projects
Groups
Snippets