Initial import

Change-Id: I9e4a180f34093c3c95adc1ee946efe92616d4d0d
diff --git a/src/main/kotlin/de/ids_mannheim/korapxmltools/ChangeZipPermissions.kt b/src/main/kotlin/de/ids_mannheim/korapxmltools/ChangeZipPermissions.kt
new file mode 100644
index 0000000..6367805
--- /dev/null
+++ b/src/main/kotlin/de/ids_mannheim/korapxmltools/ChangeZipPermissions.kt
@@ -0,0 +1,57 @@
+package de.ids_mannheim.korapxmltools
+
+import java.io.IOException
+import java.nio.file.FileSystems
+import java.nio.file.Files
+import java.nio.file.Path
+import java.nio.file.Paths
+import java.nio.file.attribute.PosixFilePermissions
+
+class ChangeZipPermissions {
+
+    @Throws(IOException::class)
+    fun changePermissions(zipFilePath: String?, permissions: String?) {
+        val env: MutableMap<String, String?> = HashMap()
+        env["create"] = "true"
+
+        val zipFile = zipFilePath?.let { Paths.get(it) }
+        val perms = PosixFilePermissions.fromString(permissions)
+        FileSystems.newFileSystem(zipFile, env).use { fs ->
+            val root = fs.getPath("/")
+            Files.walk(root)
+                .filter { path: Path? ->
+                    Files.isRegularFile(
+                        path
+                    )
+                }
+                .forEach { file: Path ->
+                    try {
+                        // BasicFileAttributeView bv = Files.getFileAttributeView(file, BasicFileAttributeView.class);
+                        // System.out.println("Setting permissions for file: " + file.toString()+ " from " + bv.readAttributes().toString() + " to " + permissions);
+                        Files.setAttribute(file, "permissions", perms)
+                    } catch (e: IOException) {
+                        System.err.println("Failed to set permissions for file: $file")
+                    }
+                }
+        }
+    }
+}
+
+fun main(args: Array<String>) {
+    if (args.size != 2) {
+        println("Usage: java -jar changezippermissions <zipFilePath> <permissions>")
+        println("Example: java -jar changezippermissions files.zip rw-rw-rw-")
+        return
+    }
+
+    val zipFilePath = args[0]
+    val permissions = args[1]
+
+    try {
+        ChangeZipPermissions().changePermissions(zipFilePath, permissions)
+        println("Permissions changed successfully.")
+    } catch (e: IOException) {
+        System.err.println("Error: " + e.message)
+    }
+}
+