[NO ISSUE][EXT]: Centralize CSV properties in one place
Ext-ref: MB-65990
Change-Id: I53f4584487f8706447ef97bf816c7e908bba7d2a
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19556
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Hussain Towaileb <hussainht@gmail.com>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.03.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.03.update.sqlpp
index b9a6e9a..bd7403e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.03.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.03.update.sqlpp
@@ -39,5 +39,5 @@
"quote":"'",
"force-quote":"false",
"escape":"\\",
- "empty_field_as_null":"true"
+ "empty-string-as-null":"true"
}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.11.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.11.update.sqlpp
index 7e477be..b7028f5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.11.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/copy-to/csv/simple-csv/simple-csv.11.update.sqlpp
@@ -40,5 +40,5 @@
"quote":"'",
"force-quote":"false",
"escape":"\\",
- "empty_field_as_null":"true"
+ "empty-string-as-null":"true"
}
\ No newline at end of file
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/CSVConstants.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/CSVConstants.java
new file mode 100644
index 0000000..74cc20f
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/CSVConstants.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.common.utils;
+
+public class CSVConstants {
+
+ private CSVConstants() {
+ }
+
+ public static final String KEY_HEADER = "header";
+ public static final String KEY_DELIMITER = "delimiter";
+ public static final String KEY_RECORD_DELIMITER = "record-delimiter";
+ public static final String KEY_QUOTE = "quote";
+ public static final String KEY_FORCE_QUOTE = "force-quote";
+ public static final String KEY_EMPTY_STRING_AS_NULL = "empty-string-as-null";
+ public static final String KEY_ESCAPE = "escape";
+
+ // a string representing the NULL value
+ public static final String KEY_NULL_STR = "null";
+}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/CSVWithRecordConverterFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/CSVWithRecordConverterFactory.java
index 1961500..61b0f4e 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/CSVWithRecordConverterFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/converter/CSVWithRecordConverterFactory.java
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.external.input.record.converter;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_DELIMITER;
+
import java.util.Arrays;
import java.util.Map;
@@ -56,10 +58,9 @@
"Unspecified " + ExternalDataConstants.KEY_RECORD_INDEX + " for csv to csv with record converter");
}
recordIndex = Integer.parseInt(property);
- property = configuration.get(ExternalDataConstants.KEY_DELIMITER);
+ property = configuration.get(KEY_DELIMITER);
if (property == null) {
- throw new AsterixException(
- "Unspecified " + ExternalDataConstants.KEY_DELIMITER + " for csv to csv with record converter");
+ throw new AsterixException("Unspecified " + KEY_DELIMITER + " for csv to csv with record converter");
}
if (property.trim().length() > 1) {
throw new AsterixException("Large delimiter. The maximum delimiter size = 1");
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/QuotedLineRecordReader.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/QuotedLineRecordReader.java
index 2035a8e..5fe0589 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/QuotedLineRecordReader.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/input/record/reader/stream/QuotedLineRecordReader.java
@@ -18,6 +18,7 @@
*/
package org.apache.asterix.external.input.record.reader.stream;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
import static org.apache.asterix.external.util.ExternalDataConstants.BYTE_ORDER_MARK;
import static org.apache.asterix.external.util.ExternalDataConstants.REC_ENDED_AT_EOF;
@@ -45,15 +46,15 @@
private IWarningCollector warnings;
private static final List<String> recordReaderFormats = Collections.unmodifiableList(
Arrays.asList(ExternalDataConstants.FORMAT_DELIMITED_TEXT, ExternalDataConstants.FORMAT_CSV));
- private static final String REQUIRED_CONFIGS = ExternalDataConstants.KEY_QUOTE;
+ private static final String REQUIRED_CONFIGS = KEY_QUOTE;
@Override
public void configure(IHyracksTaskContext ctx, AsterixInputStream inputStream, Map<String, String> config)
throws HyracksDataException {
super.configure(ctx, inputStream, config);
this.warnings = ctx.getWarningCollector();
- String quoteString = config.get(ExternalDataConstants.KEY_QUOTE);
- ExternalDataUtils.validateChar(quoteString, ExternalDataConstants.KEY_QUOTE);
+ String quoteString = config.get(KEY_QUOTE);
+ ExternalDataUtils.validateChar(quoteString, KEY_QUOTE);
this.quote = quoteString.charAt(0);
this.escape = ExternalDataUtils.validateGetEscape(config, config.get(ExternalDataConstants.KEY_FORMAT));
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/factory/DelimitedDataParserFactory.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/factory/DelimitedDataParserFactory.java
index bad742e..65cf552 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/factory/DelimitedDataParserFactory.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/factory/DelimitedDataParserFactory.java
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.external.parser.factory;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_NULL_STR;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -53,7 +55,7 @@
char escape =
ExternalDataUtils.validateGetEscape(configuration, configuration.get(ExternalDataConstants.KEY_FORMAT));
boolean hasHeader = ExternalDataUtils.hasHeader(configuration);
- String nullString = configuration.get(ExternalDataConstants.KEY_NULL_STR);
+ String nullString = configuration.get(KEY_NULL_STR);
return new DelimitedDataParser(context, valueParserFactories, delimiter, quote, escape, hasHeader, recordType,
ExternalDataUtils.getDataSourceType(configuration).equals(DataSourceType.STREAM), nullString);
}
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
index f477b07..d399b07 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java
@@ -73,10 +73,8 @@
//Base64 encoded function call information
public static final String KEY_HADOOP_ASTERIX_FUNCTION_CALL_INFORMATION = "org.apache.asterix.function.info";
public static final String KEY_SOURCE_DATATYPE = "type-name";
- public static final String KEY_DELIMITER = "delimiter";
public static final String KEY_PARSER_FACTORY = "parser-factory";
public static final String KEY_DATA_PARSER = "parser";
- public static final String KEY_HEADER = "header";
public static final String KEY_READER = "reader";
public static final String KEY_READER_STREAM = "stream";
public static final String KEY_TYPE_NAME = "type-name";
@@ -92,11 +90,6 @@
public static final String PARQUET_DEFAULT_PAGE_SIZE = "8KB";
public static final String KEY_INCLUDE = "include";
public static final String KEY_EXCLUDE = "exclude";
- public static final String KEY_QUOTE = "quote";
- public static final String KEY_FORCE_QUOTE = "force-quote";
- public static final String KEY_EMPTY_FIELD_AS_NULL = "empty_field_as_null";
- public static final String KEY_RECORD_DELIMITER = "record-delimiter";
- public static final String KEY_ESCAPE = "escape";
public static final String KEY_PARSER = "parser";
public static final String KEY_DATASET_RECORD = "dataset-record";
public static final String KEY_RSS_URL = "url";
@@ -140,8 +133,6 @@
public static final String KEY_HTTP_PROXY_PORT = "http-proxy-port";
public static final String KEY_HTTP_PROXY_USER = "http-proxy-user";
public static final String KEY_HTTP_PROXY_PASSWORD = "http-proxy-password";
- // a string representing the NULL value
- public static final String KEY_NULL_STR = "null";
public static final String KEY_REDACT_WARNINGS = "redact-warnings";
public static final String KEY_REQUESTED_FIELDS = "requested-fields";
public static final String KEY_EXTERNAL_SCAN_BUFFER_SIZE = "external-scan-buffer-size";
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
index fac1199..0fed43f 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java
@@ -19,14 +19,17 @@
package org.apache.asterix.external.util;
import static org.apache.asterix.common.metadata.MetadataConstants.DEFAULT_DATABASE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_DELIMITER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_EMPTY_STRING_AS_NULL;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_ESCAPE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_FORCE_QUOTE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_HEADER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
import static org.apache.asterix.external.util.ExternalDataConstants.DEFINITION_FIELD_NAME;
-import static org.apache.asterix.external.util.ExternalDataConstants.KEY_DELIMITER;
-import static org.apache.asterix.external.util.ExternalDataConstants.KEY_ESCAPE;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_EXCLUDE;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_EXTERNAL_SCAN_BUFFER_SIZE;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_INCLUDE;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_PATH;
-import static org.apache.asterix.external.util.ExternalDataConstants.KEY_QUOTE;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_RECORD_END;
import static org.apache.asterix.external.util.ExternalDataConstants.KEY_RECORD_START;
import static org.apache.asterix.external.util.aws.s3.S3AuthUtils.configureAwsS3HdfsJobConf;
@@ -281,7 +284,7 @@
}
public static boolean hasHeader(Map<String, String> configuration) {
- return isTrue(configuration, ExternalDataConstants.KEY_HEADER);
+ return isTrue(configuration, KEY_HEADER);
}
public static boolean isTrue(Map<String, String> configuration, String key) {
@@ -628,7 +631,7 @@
}
}
// normalize "header" parameter
- putToLowerIfExists(configuration, ExternalDataConstants.KEY_HEADER);
+ putToLowerIfExists(configuration, KEY_HEADER);
// normalize "redact-warnings" parameter
putToLowerIfExists(configuration, ExternalDataConstants.KEY_REDACT_WARNINGS);
}
@@ -641,22 +644,20 @@
*/
public static void validate(Map<String, String> configuration) throws HyracksDataException {
String format = configuration.get(ExternalDataConstants.KEY_FORMAT);
- String header = configuration.get(ExternalDataConstants.KEY_HEADER);
- String forceQuote = configuration.get(ExternalDataConstants.KEY_FORCE_QUOTE);
- String emptyFieldAsNull = configuration.get(ExternalDataConstants.KEY_EMPTY_FIELD_AS_NULL);
+ String header = configuration.get(KEY_HEADER);
+ String forceQuote = configuration.get(KEY_FORCE_QUOTE);
+ String emptyFieldAsNull = configuration.get(KEY_EMPTY_STRING_AS_NULL);
if (format != null && isHeaderRequiredFor(format) && header == null) {
- throw new RuntimeDataException(ErrorCode.PARAMETERS_REQUIRED, ExternalDataConstants.KEY_HEADER);
+ throw new RuntimeDataException(ErrorCode.PARAMETERS_REQUIRED, KEY_HEADER);
}
if (header != null && !isBoolean(header)) {
- throw new RuntimeDataException(ErrorCode.INVALID_REQ_PARAM_VAL, ExternalDataConstants.KEY_HEADER, header);
+ throw new RuntimeDataException(ErrorCode.INVALID_REQ_PARAM_VAL, KEY_HEADER, header);
}
if (forceQuote != null && !isBoolean(forceQuote)) {
- throw new RuntimeDataException(ErrorCode.INVALID_REQ_PARAM_VAL, ExternalDataConstants.KEY_FORCE_QUOTE,
- forceQuote);
+ throw new RuntimeDataException(ErrorCode.INVALID_REQ_PARAM_VAL, KEY_FORCE_QUOTE, forceQuote);
}
if (emptyFieldAsNull != null && !isBoolean(emptyFieldAsNull)) {
- throw new RuntimeDataException(ErrorCode.INVALID_REQ_PARAM_VAL,
- ExternalDataConstants.KEY_EMPTY_FIELD_AS_NULL, emptyFieldAsNull);
+ throw new RuntimeDataException(ErrorCode.INVALID_REQ_PARAM_VAL, KEY_EMPTY_STRING_AS_NULL, emptyFieldAsNull);
}
char delimiter = validateGetDelimiter(configuration);
validateGetQuote(configuration, delimiter);
diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/WriterValidationUtil.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/WriterValidationUtil.java
index f43a2a7..92afd40 100644
--- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/WriterValidationUtil.java
+++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/WriterValidationUtil.java
@@ -22,6 +22,10 @@
import static org.apache.asterix.common.exceptions.ErrorCode.MAXIMUM_VALUE_ALLOWED_FOR_PARAM;
import static org.apache.asterix.common.exceptions.ErrorCode.MINIMUM_VALUE_ALLOWED_FOR_PARAM;
import static org.apache.asterix.common.exceptions.ErrorCode.PARAMETERS_REQUIRED;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_DELIMITER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_ESCAPE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_RECORD_DELIMITER;
import static org.apache.asterix.external.util.ExternalDataConstants.FORMAT_CSV;
import static org.apache.asterix.external.util.ExternalDataConstants.FORMAT_JSON_LOWER_CASE;
import static org.apache.asterix.external.util.ExternalDataConstants.FORMAT_PARQUET;
@@ -57,7 +61,7 @@
private static void validateQuote(Map<String, String> configuration, SourceLocation sourceLocation)
throws CompilationException {
- String quote = configuration.get(ExternalDataConstants.KEY_QUOTE);
+ String quote = configuration.get(KEY_QUOTE);
if (quote != null && !ExternalDataConstants.WRITER_SUPPORTED_QUOTES.contains(quote.toLowerCase())) {
throw CompilationException.create(ErrorCode.CSV_INVALID_QUOTE, sourceLocation, quote,
ExternalDataConstants.WRITER_SUPPORTED_QUOTES.toString());
@@ -251,19 +255,19 @@
private static void validateDelimiter(Map<String, String> configuration, SourceLocation sourceLocation)
throws CompilationException {
- String delimiter = configuration.get(ExternalDataConstants.KEY_DELIMITER);
+ String delimiter = configuration.get(KEY_DELIMITER);
unitByteCondition(delimiter, sourceLocation, ErrorCode.INVALID_DELIMITER);
}
private static void validateEscape(Map<String, String> configuration, SourceLocation sourceLocation)
throws CompilationException {
- String escape = configuration.get(ExternalDataConstants.KEY_ESCAPE);
+ String escape = configuration.get(KEY_ESCAPE);
unitByteCondition(escape, sourceLocation, ErrorCode.CSV_INVALID_ESCAPE);
}
private static void validateRecordDelimiter(Map<String, String> configuration, SourceLocation sourceLocation)
throws CompilationException {
- String recordDel = configuration.get(ExternalDataConstants.KEY_RECORD_DELIMITER);
+ String recordDel = configuration.get(KEY_RECORD_DELIMITER);
unitByteCondition(recordDel, sourceLocation, ErrorCode.CSV_INVALID_FORCE_QUOTE);
}
diff --git a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java
index 3eb1bd4..4f69873 100644
--- a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java
+++ b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java
@@ -18,6 +18,9 @@
*/
package org.apache.asterix.external.parser.test;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_HEADER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
+
import java.io.File;
import java.io.PrintStream;
import java.nio.file.Files;
@@ -91,8 +94,8 @@
LocalFSInputStream inputStream = new LocalFSInputStream(watcher);
// create reader record reader
Map<String, String> config = new HashMap<>();
- config.put(ExternalDataConstants.KEY_HEADER, "true");
- config.put(ExternalDataConstants.KEY_QUOTE, ExternalDataConstants.DEFAULT_QUOTE);
+ config.put(KEY_HEADER, "true");
+ config.put(KEY_QUOTE, ExternalDataConstants.DEFAULT_QUOTE);
LineRecordReader lineReader = new LineRecordReader();
lineReader.configure(ctx, inputStream, config);
// create csv with json record reader
diff --git a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/StreamRecordReaderProviderTest.java b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/StreamRecordReaderProviderTest.java
index 7267357..b51cdbe 100644
--- a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/StreamRecordReaderProviderTest.java
+++ b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/StreamRecordReaderProviderTest.java
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.external.parser.test;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
+
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -46,7 +48,7 @@
}
config.clear();
config.put(ExternalDataConstants.KEY_FORMAT, ExternalDataConstants.FORMAT_CSV);
- config.put(ExternalDataConstants.KEY_QUOTE, "\u0000");
+ config.put(KEY_QUOTE, "\u0000");
Assert.assertTrue(StreamRecordReaderProvider.getRecordReaderClazz(config) != null);
}
}
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinterFactory.java
index 05babc5..2f4d180 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AObjectPrinterFactory.java
@@ -18,13 +18,13 @@
*/
package org.apache.asterix.dataflow.data.nontagged.printers.csv;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_DELIMITER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_EMPTY_STRING_AS_NULL;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_ESCAPE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_FORCE_QUOTE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_NULL_STR;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.DEFAULT_VALUES;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_DELIMITER;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_EMPTY_FIELD_AS_NULL;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_ESCAPE;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_FORCE_QUOTE;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_NULL;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_QUOTE;
import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.getCharOrDefault;
import java.io.PrintStream;
@@ -58,8 +58,9 @@
private AObjectPrinterFactory(ARecordType itemType, Map<String, String> configuration) {
this.itemType = itemType;
this.configuration = configuration;
- this.emptyFieldAsNull = Boolean.parseBoolean(configuration.get(KEY_EMPTY_FIELD_AS_NULL));
- this.nullString = configuration.get(KEY_NULL) != null ? configuration.get(KEY_NULL) : DEFAULT_NULL_STRING;
+ this.emptyFieldAsNull = Boolean.parseBoolean(configuration.get(KEY_EMPTY_STRING_AS_NULL));
+ this.nullString =
+ configuration.get(KEY_NULL_STR) != null ? configuration.get(KEY_NULL_STR) : DEFAULT_NULL_STRING;
this.forceQuote = Boolean.parseBoolean(configuration.get(KEY_FORCE_QUOTE));
this.quote = getCharOrDefault(configuration.get(KEY_QUOTE), DEFAULT_VALUES.get(KEY_QUOTE));
this.escape = getCharOrDefault(configuration.get(KEY_ESCAPE), DEFAULT_VALUES.get(KEY_ESCAPE));
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java
index 99b4c08..e18d450 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/AStringPrinterFactory.java
@@ -18,10 +18,10 @@
*/
package org.apache.asterix.dataflow.data.nontagged.printers.csv;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_DELIMITER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_ESCAPE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.DEFAULT_VALUES;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_DELIMITER;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_ESCAPE;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_QUOTE;
import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.getCharOrDefault;
import java.io.PrintStream;
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/CSVUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/CSVUtils.java
index e06309e..37d4dbd 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/CSVUtils.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/nontagged/printers/csv/CSVUtils.java
@@ -18,6 +18,15 @@
*/
package org.apache.asterix.dataflow.data.nontagged.printers.csv;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_DELIMITER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_EMPTY_STRING_AS_NULL;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_ESCAPE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_FORCE_QUOTE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_HEADER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_NULL_STR;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_RECORD_DELIMITER;
+
import java.io.IOException;
import java.io.PrintStream;
import java.util.EnumSet;
@@ -37,14 +46,6 @@
// Constants for the supported CSV parameters
public static final String NONE = "none";
- public static final String KEY_NULL = "null";
- public static final String KEY_ESCAPE = "escape";
- public static final String KEY_HEADER = "header";
- public static final String KEY_DELIMITER = "delimiter";
- public static final String KEY_RECORD_DELIMITER = "recordDelimiter";
- public static final String KEY_FORCE_QUOTE = "forceQuote";
- public static final String KEY_QUOTE = "quote";
- public static final String KEY_EMPTY_FIELD_AS_NULL = "empty_field_as_null";
public static final char DEFAULT_QUOTE = '"';
private static final String DEFAULT_DELIMITER_VALUE = ",";
private static final String DEFAULT_NULL_VALUE = "";
@@ -58,14 +59,14 @@
static {
DEFAULT_VALUES = new HashMap<>();
- DEFAULT_VALUES.put(KEY_NULL, DEFAULT_NULL_VALUE);
+ DEFAULT_VALUES.put(KEY_NULL_STR, DEFAULT_NULL_VALUE);
DEFAULT_VALUES.put(KEY_ESCAPE, DOUBLE_QUOTES);
DEFAULT_VALUES.put(KEY_HEADER, FALSE);
DEFAULT_VALUES.put(KEY_DELIMITER, DEFAULT_DELIMITER_VALUE);
DEFAULT_VALUES.put(KEY_RECORD_DELIMITER, DEFAULT_RECORD_DELIMITER);
DEFAULT_VALUES.put(KEY_FORCE_QUOTE, FALSE);
DEFAULT_VALUES.put(KEY_QUOTE, DOUBLE_QUOTES);
- DEFAULT_VALUES.put(KEY_EMPTY_FIELD_AS_NULL, FALSE);
+ DEFAULT_VALUES.put(KEY_EMPTY_STRING_AS_NULL, FALSE);
}
public static boolean isEmptyString(byte[] b, int s, int l) {
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/CSVPrinterFactoryProvider.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/CSVPrinterFactoryProvider.java
index 054f9c7..4d28ce4 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/CSVPrinterFactoryProvider.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/nontagged/CSVPrinterFactoryProvider.java
@@ -18,11 +18,11 @@
*/
package org.apache.asterix.formats.nontagged;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_DELIMITER;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_ESCAPE;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_FORCE_QUOTE;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_NULL;
-import static org.apache.asterix.dataflow.data.nontagged.printers.csv.CSVUtils.KEY_QUOTE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_DELIMITER;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_ESCAPE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_FORCE_QUOTE;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_NULL_STR;
+import static org.apache.asterix.common.utils.CSVConstants.KEY_QUOTE;
import java.util.Collections;
import java.util.Map;
@@ -99,7 +99,7 @@
return AInt64PrinterFactory.INSTANCE;
case MISSING:
case NULL:
- return ANullPrinterFactory.createInstance(configuration.get(KEY_NULL));
+ return ANullPrinterFactory.createInstance(configuration.get(KEY_NULL_STR));
case BOOLEAN:
return ABooleanPrinterFactory.INSTANCE;
case FLOAT: