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
ead7a434
Commit
ead7a434
authored
3 months ago
by
Riegel
Browse files
Options
Download
Email Patches
Plain Diff
Refactor: Extract faulty entry handling by subclassing
parent
b312c808
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
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/CityGmlZipEntry.java
+14
-38
.../hft/stuttgart/citydoctor2/ziploader/CityGmlZipEntry.java
CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/ErroneousEntry.java
+29
-0
...e/hft/stuttgart/citydoctor2/ziploader/ErroneousEntry.java
CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/ZipEntryErrorType.java
+5
-0
...ft/stuttgart/citydoctor2/ziploader/ZipEntryErrorType.java
with
48 additions
and
38 deletions
+48
-38
CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/CityGmlZipEntry.java
+
14
-
38
View file @
ead7a434
...
...
@@ -9,23 +9,15 @@ import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.util.Enumeration
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipFile
;
import
java.util.zip.ZipInputStream
;
public
class
CityGmlZipEntry
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
CityGmlZipEntry
.
class
);
public
enum
ZipEntryErrorType
{
INVALID_CITY_GML_FILE
,
EXCESSIVE_FILESIZE
,
IO_ERROR
}
private
String
fileName
;
private
String
archivePath
;
private
CityDoctorModel
model
;
...
...
@@ -40,8 +32,7 @@ public class CityGmlZipEntry {
cgzEntry
.
fileName
=
entry
.
getName
();
cgzEntry
.
archivePath
=
archivePath
;
if
((
double
)
entry
.
getSize
()
/
1024
/
1024
>
20
)
{
cgzEntry
.
erroneousEntry
=
true
;
cgzEntry
.
errorType
=
ZipEntryErrorType
.
EXCESSIVE_FILESIZE
;
return
new
ErroneousEntry
(
entry
,
ZipEntryErrorType
.
EXCESSIVE_FILESIZE
);
}
else
{
try
{
Files
.
copy
(
is
,
Path
.
of
(
tempDir
.
toString
(),
entry
.
getName
()));
...
...
@@ -49,21 +40,25 @@ public class CityGmlZipEntry {
cgzEntry
.
model
=
CityGmlParser
.
parseCityGmlFile
(
tempDir
.
toString
()
+
File
.
separator
+
entry
.
getName
(),
config
);
}
catch
(
CityGmlParseException
|
InvalidGmlFileException
e
)
{
logger
.
error
(
e
);
cgzEntry
.
erroneousEntry
=
true
;
cgzEntry
.
errorType
=
ZipEntryErrorType
.
INVALID_CITY_GML_FILE
;
return
new
ErroneousEntry
(
entry
,
ZipEntryErrorType
.
INVALID_CITY_GML_FILE
);
}
catch
(
IOException
e
){
logger
.
error
(
e
);
cgzEntry
.
erroneousEntry
=
true
;
cgzEntry
.
errorType
=
ZipEntryErrorType
.
IO_ERROR
;
return
new
ErroneousEntry
(
entry
,
ZipEntryErrorType
.
IO_ERROR
);
}
}
return
cgzEntry
;
}
private
CityGmlZipEntry
(
String
filename
,
CityDoctorModel
model
){
this
.
fileName
=
filename
;
this
.
model
=
model
;
}
protected
CityGmlZipEntry
(
ZipEntry
entry
)
{
this
.
fileName
=
entry
.
getName
();
this
.
model
=
null
;
}
public
void
validateModel
(){
if
(
erroneousEntry
){
return
;
}
Checker
checker
=
new
Checker
(
this
.
getModel
());
checker
.
runChecks
();
validated
=
true
;
...
...
@@ -73,31 +68,12 @@ public class CityGmlZipEntry {
return
validated
;
}
public
void
setIsLibraryObject
(
boolean
isLibraryObject
)
{
this
.
isLibraryObject
=
isLibraryObject
;
}
public
String
getFileName
()
{
return
fileName
;
}
public
String
getArchivePath
()
{
return
archivePath
;
}
public
CityDoctorModel
getModel
()
{
return
model
;
}
public
ZipEntryErrorType
getErrorType
()
{
return
errorType
;
}
public
boolean
isLibraryObject
()
{
return
isLibraryObject
;
}
public
boolean
isErroneousEntry
()
{
return
erroneousEntry
;
}
}
This diff is collapsed.
Click to expand it.
CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/ErroneousEntry.java
0 → 100644
+
29
-
0
View file @
ead7a434
package
de.hft.stuttgart.citydoctor2.ziploader
;
import
de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipFile
;
public
class
ErroneousEntry
extends
CityGmlZipEntry
{
private
ZipEntryErrorType
errorType
=
null
;
public
ErroneousEntry
(
ZipEntry
entry
,
ZipEntryErrorType
errorType
){
super
(
entry
);
}
@Override
public
void
validateModel
(){}
@Override
public
CityDoctorModel
getModel
(){
return
null
;
}
public
ZipEntryErrorType
getErrorType
()
{
return
errorType
;
}
}
This diff is collapsed.
Click to expand it.
CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/ZipEntryErrorType.java
0 → 100644
+
5
-
0
View file @
ead7a434
package
de.hft.stuttgart.citydoctor2.ziploader
;
public
enum
ZipEntryErrorType
{
INVALID_CITY_GML_FILE
,
EXCESSIVE_FILESIZE
,
IO_ERROR
}
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