Commit ea8f25ae authored by Riegel's avatar Riegel
Browse files

Refactor!: Rename CityGmlArchive

2 merge requests!28Version 3.17.0 Release,!26Add ZIP-archive support
Showing with 19 additions and 28 deletions
+19 -28
package de.hft.stuttgart.citydoctor2.utils;
import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel;
import de.hft.stuttgart.citydoctor2.zip.CityGmlArchive;
import de.hft.stuttgart.citydoctor2.zip.CityGmlZipArchive;
import de.hft.stuttgart.citydoctor2.zip.CityGmlZipEntry;
import de.hft.stuttgart.citydoctor2.zip.ErroneousEntry;
import org.apache.commons.io.FileUtils;
......@@ -23,7 +23,7 @@ public class ArchivePacker {
private ArchivePacker(){}
public static void packArchive(String targetPath, CityGmlArchive archive){
public static void packArchive(String targetPath, CityGmlZipArchive archive){
if (!targetPath.endsWith(".zip")){
throw new IllegalArgumentException("Target zip-filepath must end with '.zip'");
}
......
......@@ -16,9 +16,9 @@ import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class CityGmlArchive implements Serializable {
public class CityGmlZipArchive implements Serializable {
private static final Logger logger = LogManager.getLogger(CityGmlArchive.class);
private static final Logger logger = LogManager.getLogger(CityGmlZipArchive.class);
@Serial
private static final long serialVersionUID = 2168389511043362615L;
......@@ -27,7 +27,7 @@ public class CityGmlArchive implements Serializable {
private final Path archivePath;
private ZipFile zipFile;
public static CityGmlArchive fromZipFile(String zipFile, ParserConfiguration config) {
public static CityGmlZipArchive fromZipFile(String zipFile, ParserConfiguration config) {
ArrayList<CityGmlZipEntry> archiveEntries = new ArrayList<>();
ZipFile zip = null;
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) {
......@@ -54,12 +54,12 @@ public class CityGmlArchive implements Serializable {
}
}
logger.info("Zip-archive successfully uncompressed, {} CityGml files detected", archiveEntries.size());
return new CityGmlArchive(archiveEntries, Path.of(zipFile));
return new CityGmlZipArchive(archiveEntries, Path.of(zipFile));
}
public static CityGmlArchive register(String zipFile) {
public static CityGmlZipArchive register(String zipFile) {
ArrayList<CityGmlZipEntry> archiveEntries = new ArrayList<>();
CityGmlArchive cgmlArchive = new CityGmlArchive(Path.of(zipFile));
CityGmlZipArchive cgmlArchive = new CityGmlZipArchive(Path.of(zipFile));
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) {
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null )
......@@ -91,11 +91,11 @@ public class CityGmlArchive implements Serializable {
}
}
private CityGmlArchive(Path archivePath){
private CityGmlZipArchive(Path archivePath){
this.archivePath = archivePath;
}
private CityGmlArchive(List<CityGmlZipEntry> entries, Path archivePath) {
private CityGmlZipArchive(List<CityGmlZipEntry> entries, Path archivePath) {
setEntries(entries);
this.archivePath = archivePath;
}
......
......@@ -20,7 +20,7 @@ public class CityGmlZipEntry {
private final String fileName;
private CityDoctorModel model;
private CityGmlArchive parentArchive;
private CityGmlZipArchive parentArchive;
private boolean validated = false;
private boolean decompressed = false;
private long size = -1L;
......@@ -97,17 +97,11 @@ public class CityGmlZipEntry {
try {
InputStream is = archive.getInputStream(entry);
} catch (IOException e) {
throw new RuntimeException(e);
}
return 0;
}
public void setArchive(CityGmlArchive archive){
public void setArchive(CityGmlZipArchive archive){
parentArchive = archive;
}
public CityGmlArchive getArchive(){
public CityGmlZipArchive getArchive(){
return parentArchive;
}
......
......@@ -23,11 +23,11 @@ public class ZipTest {
@Test
public void testUnzipping() {
CityGmlArchive cgmlArch = CityGmlArchive.fromZipFile("src/test/resources/zip/mock_archive.zip", config);
CityGmlZipArchive cgmlArch = CityGmlZipArchive.fromZipFile("src/test/resources/zip/mock_archive.zip", config);
checkMockArchive(cgmlArch);
}
private void checkMockArchive(CityGmlArchive cgmlArch){
private void checkMockArchive(CityGmlZipArchive cgmlArch){
assertNotNull(cgmlArch);
assertEquals(5,cgmlArch.getEntries().size());
for (CityGmlZipEntry entry : cgmlArch.getEntries()) {
......@@ -41,18 +41,15 @@ public class ZipTest {
@Test
public void testZipping() throws IOException {
CityGmlArchive cgmlArch = CityGmlArchive.fromZipFile("src/test/resources/zip/mock_archive.zip", config);
CityGmlZipArchive cgmlArch = CityGmlZipArchive.fromZipFile("src/test/resources/zip/mock_archive.zip", config);
Path tmpDir = null;
try {
tmpDir = Files.createTempDirectory("testTmp");
tmpDir.toFile().deleteOnExit();
String expPath = tmpDir.toString() + "/export.zip";
cgmlArch.exportToZipFile(expPath);
CityGmlArchive cgmlExport = CityGmlArchive.fromZipFile(expPath, config);
CityGmlZipArchive cgmlExport = CityGmlZipArchive.fromZipFile(expPath, config);
checkMockArchive(cgmlExport);
} catch (Exception e) {
// Rethrow Exceptions to ensure deletion of tmpDir with finally block
throw e;
} finally {
if (tmpDir != null) {
FileUtils.deleteDirectory(tmpDir.toFile());
......@@ -62,7 +59,7 @@ public class ZipTest {
@Test
public void testEpsgParsing() {
CityGmlArchive cgmlArch = CityGmlArchive.fromZipFile("src/test/resources/zip/epsg.zip", config);
CityGmlZipArchive cgmlArch = CityGmlZipArchive.fromZipFile("src/test/resources/zip/epsg.zip", config);
assertNotNull(cgmlArch);
List<String> epsgs = new ArrayList<>(2);
epsgs.add("25832");
......@@ -78,7 +75,7 @@ public class ZipTest {
@Test
public void testValidation(){
ParserConfiguration valConfig = new ParserConfiguration(8,true);
CityGmlArchive cgmlArch = CityGmlArchive.fromZipFile("src/test/resources/zip/validate.zip", valConfig);
CityGmlZipArchive cgmlArch = CityGmlZipArchive.fromZipFile("src/test/resources/zip/validate.zip", valConfig);
int faultyFiles = 0;
for (CityGmlZipEntry entry : cgmlArch.getEntries()) {
if (entry instanceof ErroneousEntry errEntry) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment