From e055ba05673ee5a74197f7cac72105aa7083385a Mon Sep 17 00:00:00 2001 From: Carl Livermore Date: Wed, 19 Jun 2019 12:16:30 -0400 Subject: [PATCH] Add support for named pipes --- .../java/com/datastax/loader/CqlDelimLoad.java | 17 ++++++++++++----- .../com/datastax/loader/CqlDelimLoadTask.java | 6 ++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/datastax/loader/CqlDelimLoad.java b/src/main/java/com/datastax/loader/CqlDelimLoad.java index d7d98fb..d203fad 100644 --- a/src/main/java/com/datastax/loader/CqlDelimLoad.java +++ b/src/main/java/com/datastax/loader/CqlDelimLoad.java @@ -262,8 +262,13 @@ else if (format.equalsIgnoreCase("jsonline") } if (!STDIN.equalsIgnoreCase(filename)) { File infile = new File(filename); - if ((!infile.isFile()) && (!infile.isDirectory())) { - System.err.println("The -f argument needs to be a file or a directory"); + // Support for named pipes - Support -f as long as readable + // if ((!infile.isFile()) && (!infile.isDirectory())) { + // System.err.println("The -f argument needs to be a file or a directory"); + // return false; + // } + if (!infile.canRead()) { + System.err.println("The -f argument needs to be readable"); return false; } if (infile.isDirectory()) { @@ -615,9 +620,11 @@ public boolean run(String[] args) } else { infile = new File(filename); - if (infile.isFile()) { - } - else { + // Support for named pipes - Do directory stuff only if file is a directory + // if (infile.isFile()) { + // } + // else { + if (infile.isDirectory()) { inFileList = infile.listFiles(); if (inFileList.length < 1) throw new IOException("directory is empty"); diff --git a/src/main/java/com/datastax/loader/CqlDelimLoadTask.java b/src/main/java/com/datastax/loader/CqlDelimLoadTask.java index 1e45446..0cf4da5 100644 --- a/src/main/java/com/datastax/loader/CqlDelimLoadTask.java +++ b/src/main/java/com/datastax/loader/CqlDelimLoadTask.java @@ -159,6 +159,12 @@ private void setup() throws IOException, ParseException, org.json.simple.parser. reader = new BufferedReader(new InputStreamReader(System.in)); readerName = "stdin"; } + // Support for named pipes - must not be gzipped - like stdin + else if (!infile.isFile()) { + InputStream is = new FileInputStream(infile); + reader = new BufferedReader(new InputStreamReader(is)); + readerName = infile.getName(); + } else { InputStream is = null; try {