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
3563658f
Commit
3563658f
authored
3 months ago
by
Riegel
Browse files
Options
Download
Email Patches
Plain Diff
Refactor: Use new FactoryMethods for parsing
parent
e1e08ee0
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
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/zip/CityGmlZipArchive.java
+14
-35
...a/de/hft/stuttgart/citydoctor2/zip/CityGmlZipArchive.java
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/zip/CityGmlZipEntry.java
+6
-5
...ava/de/hft/stuttgart/citydoctor2/zip/CityGmlZipEntry.java
with
20 additions
and
40 deletions
+20
-40
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/zip/CityGmlZipArchive.java
+
14
-
35
View file @
3563658f
...
...
@@ -12,7 +12,6 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipException
;
import
java.util.zip.ZipFile
;
import
java.util.zip.ZipInputStream
;
...
...
@@ -25,36 +24,14 @@ public class CityGmlZipArchive implements Serializable {
private
List
<
CityGmlZipEntry
>
entries
;
private
final
Path
archivePath
;
private
final
String
archiveNameRE
;
private
ZipFile
zipFile
;
public
static
CityGmlZipArchive
fromZipFile
(
String
zipFile
,
ParserConfiguration
config
)
{
ArrayList
<
CityGmlZipEntry
>
archiveEntries
=
new
ArrayList
<>();
ZipFile
zip
=
null
;
try
(
ZipInputStream
zis
=
new
ZipInputStream
(
new
FileInputStream
(
zipFile
)))
{
zip
=
new
ZipFile
(
zipFile
);
ZipEntry
ze
;
while
((
ze
=
zis
.
getNextEntry
())
!=
null
)
{
if
(
ze
.
isDirectory
())
{
continue
;
}
if
(
ze
.
getName
().
endsWith
(
".gml"
))
{
archiveEntries
.
add
(
CityGmlZipEntry
.
of
(
ze
,
config
));
}
}
}
catch
(
IOException
e
)
{
logger
.
error
(
e
);
}
finally
{
if
(
zip
!=
null
){
try
{
zip
.
close
();
}
catch
(
IOException
e
)
{
logger
.
error
(
e
);
}
}
}
logger
.
info
(
"Zip-archive successfully uncompressed, {} CityGml files detected"
,
archiveEntries
.
size
());
return
new
CityGmlZipArchive
(
archiveEntries
,
Path
.
of
(
zipFile
));
CityGmlZipArchive
archive
=
CityGmlZipArchive
.
register
(
zipFile
);
archive
.
mountArchive
(
config
);
logger
.
info
(
"Zip-archive successfully uncompressed, {} CityGml files detected"
,
archive
.
getEntries
().
size
());
return
archive
;
}
public
static
CityGmlZipArchive
register
(
String
zipFile
)
{
...
...
@@ -68,7 +45,7 @@ public class CityGmlZipArchive implements Serializable {
continue
;
}
if
(
ze
.
getName
().
endsWith
(
".gml"
))
{
archiveEntries
.
add
(
CityGmlZipEntry
.
register
(
ze
));
archiveEntries
.
add
(
CityGmlZipEntry
.
register
(
ze
,
cgmlArchive
));
}
}
cgmlArchive
.
setEntries
(
archiveEntries
);
...
...
@@ -93,11 +70,7 @@ public class CityGmlZipArchive implements Serializable {
private
CityGmlZipArchive
(
Path
archivePath
){
this
.
archivePath
=
archivePath
;
}
private
CityGmlZipArchive
(
List
<
CityGmlZipEntry
>
entries
,
Path
archivePath
)
{
setEntries
(
entries
);
this
.
archivePath
=
archivePath
;
this
.
archiveNameRE
=
archivePath
.
getFileName
().
toString
().
replace
(
".zip"
,
""
)
+
File
.
separator
;
}
private
void
setEntries
(
List
<
CityGmlZipEntry
>
entries
)
{
...
...
@@ -111,14 +84,20 @@ public class CityGmlZipArchive implements Serializable {
public
CityGmlZipEntry
getEntry
(
String
fileName
)
{
fileName
=
stripArchivePath
(
fileName
);
for
(
CityGmlZipEntry
entry
:
entries
){
if
(
entry
.
getFileName
().
equals
(
fileName
)){
String
entryName
=
stripArchivePath
(
entry
.
getFileName
());
if
(
entryName
.
equals
(
fileName
)){
return
entry
;
}
}
return
null
;
}
private
String
stripArchivePath
(
String
path
)
{
Path
systemPath
=
Path
.
of
(
path
);
return
systemPath
.
toString
().
replace
(
archiveNameRE
,
""
);
}
public
Path
getArchivePath
()
{
return
archivePath
;
...
...
This diff is collapsed.
Click to expand it.
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/zip/CityGmlZipEntry.java
+
6
-
5
View file @
3563658f
...
...
@@ -27,8 +27,8 @@ public class CityGmlZipEntry {
private
static
final
long
MB
=
1024
*
1024L
;
private
ZipEntryErrorType
errorType
=
null
;
public
static
CityGmlZipEntry
of
(
ZipEntry
entry
,
ParserConfiguration
config
){
CityGmlZipEntry
ze
=
CityGmlZipEntry
.
register
(
entry
);
public
static
CityGmlZipEntry
of
(
ZipEntry
entry
,
CityGmlZipArchive
parentArchive
,
ParserConfiguration
config
){
CityGmlZipEntry
ze
=
CityGmlZipEntry
.
register
(
entry
,
parentArchive
);
ze
.
loadEntry
(
config
);
return
ze
;
}
...
...
@@ -53,8 +53,8 @@ public class CityGmlZipEntry {
}
}
public
static
CityGmlZipEntry
register
(
ZipEntry
entry
){
CityGmlZipEntry
cgzEntry
=
new
CityGmlZipEntry
(
entry
,
false
);
public
static
CityGmlZipEntry
register
(
ZipEntry
entry
,
CityGmlZipArchive
parentArchive
){
CityGmlZipEntry
cgzEntry
=
new
CityGmlZipEntry
(
entry
,
parentArchive
,
false
);
try
{
if
(!
cgzEntry
.
entrySizeWithinMemoryLimits
())
{
cgzEntry
.
errorType
=
ZipEntryErrorType
.
EXCESSIVE_FILESIZE
;
...
...
@@ -85,10 +85,11 @@ public class CityGmlZipEntry {
}
protected
CityGmlZipEntry
(
ZipEntry
entry
,
boolean
decompressed
)
{
protected
CityGmlZipEntry
(
ZipEntry
entry
,
CityGmlZipArchive
parentArchive
,
boolean
decompressed
)
{
this
.
fileName
=
entry
.
getName
();
this
.
model
=
null
;
this
.
decompressed
=
decompressed
;
this
.
parentArchive
=
parentArchive
;
}
protected
CityGmlZipEntry
(
String
fileName
,
boolean
decompressed
)
{
...
...
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