From 76fb9a7400c3d73cdcf1962611abf8c264527593 Mon Sep 17 00:00:00 2001 From: Kostas Kardatos Date: Tue, 14 Feb 2023 09:52:32 +0200 Subject: [PATCH] make TTBulkFiler cross-platform --- .../imapi/filer/rdf4j/TTBulkFiler.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/org/endeavourhealth/imapi/filer/rdf4j/TTBulkFiler.java b/api/src/main/java/org/endeavourhealth/imapi/filer/rdf4j/TTBulkFiler.java index f871e276b..fcdda6bae 100644 --- a/api/src/main/java/org/endeavourhealth/imapi/filer/rdf4j/TTBulkFiler.java +++ b/api/src/main/java/org/endeavourhealth/imapi/filer/rdf4j/TTBulkFiler.java @@ -1,5 +1,6 @@ package org.endeavourhealth.imapi.filer.rdf4j; +import org.apache.commons.lang3.SystemUtils; import org.endeavourhealth.imapi.filer.TTDocumentFiler; import org.endeavourhealth.imapi.filer.TTFilerException; import org.endeavourhealth.imapi.model.tripletree.*; @@ -273,12 +274,13 @@ public static void createRepository() throws TTFilerException { String config = configTTl; String data = dataPath; String preloadPath = preload; - String command = "importrdf preload -c " + config + "\\config.ttl --force -q " + data + " " + data + "\\BulkImport*.nq"; + String command = "importrdf preload -c " + config + "/config.ttl --force -q " + data + " " + data + "/BulkImport*.nq"; + String startCommand = SystemUtils.OS_NAME.contains("Windows") ? "cmd /c " : "bash "; Process process = Runtime.getRuntime() - .exec("cmd /c " + command, + .exec(startCommand + command, null, new File(preloadPath)); BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream())); - BufferedReader e = new BufferedReader(new InputStreamReader(process.getInputStream())); + BufferedReader e = new BufferedReader(new InputStreamReader(process.getErrorStream())); String line = r.readLine(); while (line != null) { @@ -294,6 +296,8 @@ public static void createRepository() throws TTFilerException { line = e.readLine(); } + process.waitFor(); + if (error || process.exitValue() != 0) { System.err.println("Bulk import failed"); throw new TTFilerException("Bulk import failed"); @@ -304,7 +308,7 @@ public static void createRepository() throws TTFilerException { if (!file.isDirectory() && !file.delete()) LOG.error("File delete failed"); } - } catch (IOException e) { + } catch (IOException | InterruptedException e) { LOG.error(e.getMessage()); throw new TTFilerException(e.getMessage()); }