# HG changeset patch
# User Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
# Date 1629704615 -7200
# Node ID 7bbcff2c775bb84e5f7f759792c3761f559a9c54
# Parent  443780d71bae627150c000fc5924f88b527aac41
Also implement downloadTo(), and use it in FileTransferHandler

diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -3381,6 +3381,18 @@ public class MonetConnection
 			}
 			return stream;
 		}
+
+		public void downloadTo(OutputStream stream) throws IOException {
+			InputStream s = getStream();
+			byte[] buffer = new byte[65536];
+			while (true) {
+				int nread = s.read(buffer);
+				if (nread < 0)
+					break;
+				stream.write(buffer, 0, nread);
+			}
+		}
+
 		public boolean hasBeenUsed() {
 			return error != null || stream != null;
 		}
diff --git a/src/main/java/org/monetdb/util/FileTransferHandler.java b/src/main/java/org/monetdb/util/FileTransferHandler.java
--- a/src/main/java/org/monetdb/util/FileTransferHandler.java
+++ b/src/main/java/org/monetdb/util/FileTransferHandler.java
@@ -1,6 +1,7 @@
 package org.monetdb.util;
 
 import org.monetdb.jdbc.MonetConnection;
+import org.monetdb.jdbc.MonetDownloadHandler;
 import org.monetdb.jdbc.MonetUploadHandler;
 
 import java.io.BufferedReader;
@@ -13,7 +14,7 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
 
-public class FileTransferHandler implements MonetUploadHandler {
+public class FileTransferHandler implements MonetUploadHandler, MonetDownloadHandler {
 	private final Path root;
 	private final boolean utf8Encoded;
 
@@ -44,4 +45,18 @@ public class FileTransferHandler impleme
 			handle.uploadFrom(Files.newInputStream(path));
 		}
 	}
+
+	public void handleDownload(MonetConnection.Download handle, String name, boolean textMode) throws IOException {
+		Path path = root.resolve(name).normalize();
+		if (!path.startsWith(root)) {
+			handle.sendError("File is not in upload directory");
+			return;
+		}
+		if (!Files.exists(path)) {
+			handle.sendError("File exists: " + name);
+			return;
+		}
+		OutputStream outputStream = Files.newOutputStream(path, StandardOpenOption.CREATE_NEW);
+
+	}
 }