You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ar...@apache.org on 2020/07/20 06:44:05 UTC
[metamodel] annotated tag MetaModel-5.2.1-HI1 created (now 88e6401)
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a change to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git.
at 88e6401 (tag)
tagging b13ceb3d7f20f81355ac6756c419640fe0dc4c7a (commit)
replaces MetaModel-5.2.0
by Arjan Seijkens
on Fri Jun 21 11:09:22 2019 +0200
- Log -----------------------------------------------------------------
[maven-release-plugin] copy for tag MetaModel-5.2.1-HI1
-----------------------------------------------------------------------
This annotated tag includes the following new commits:
new 1bb6403 Adding unit test which proves that querying a CSV file using a SingleLineCsvDataSet in a parallel manner may cause corrupt results.
new b91cbed com.opencsv.CSVParser doesn't provide thread safety, so we need to make sure it is accessed in a thread-safe manner.
new 35e4241 Did some more structural changes, so we don't need to synchronize access to the CSVParser.
new 0c2a607 Refactored based on feedback. Introduced the CsvParserBuilder class to work around the fact that we internally are able to use two different builders which don't share a common super class or interface.
new fa27097 Made fields private.
new 286292e Reintroduced unrelated removed newline (as an excuse to trigger the build, because Travis fails)
new 345bc47 Changes to prepare for HI specific release
new b13ceb3 [maven-release-plugin] prepare release MetaModel-5.2.1-HI1
The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[metamodel] 03/08: Did some more structural changes,
so we don't need to synchronize access to the CSVParser.
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit 35e4241e39a5916f82b203a0160644e74a06a169
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Fri Jun 14 11:26:04 2019 +0200
Did some more structural changes, so we don't need to synchronize access to the CSVParser.
---
.../org/apache/metamodel/csv/CsvConfiguration.java | 17 +++++++++
.../org/apache/metamodel/csv/CsvDataContext.java | 16 +-------
.../apache/metamodel/csv/SingleLineCsvDataSet.java | 43 +++++++++++++++++++++-
.../org/apache/metamodel/csv/SingleLineCsvRow.java | 7 +---
.../apache/metamodel/csv/SingleLineCsvRowTest.java | 4 +-
5 files changed, 63 insertions(+), 24 deletions(-)
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java b/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java
index 332ef4b..d9f0f72 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java
@@ -26,6 +26,10 @@ import org.apache.metamodel.schema.naming.ColumnNamingStrategy;
import org.apache.metamodel.util.BaseObject;
import org.apache.metamodel.util.FileHelper;
+import com.opencsv.CSVParserBuilder;
+import com.opencsv.ICSVParser;
+import com.opencsv.RFC4180ParserBuilder;
+
/**
* Represents the configuration for reading/parsing CSV files.
*/
@@ -195,4 +199,17 @@ public final class CsvConfiguration extends BaseObject implements Serializable {
+ ", separatorChar=" + separatorChar + ", quoteChar=" + quoteChar + ", escapeChar=" + escapeChar
+ ", failOnInconsistentRowLength=" + failOnInconsistentRowLength + "]";
}
+
+ public ICSVParser createParser() {
+ if (getEscapeChar() == getQuoteChar()) {
+ return new RFC4180ParserBuilder().withSeparator(getSeparatorChar()).withQuoteChar(getQuoteChar()).build();
+ } else {
+ return new CSVParserBuilder()
+ .withSeparator(getSeparatorChar())
+ .withQuoteChar(getQuoteChar())
+ .withEscapeChar(getEscapeChar())
+ .build();
+ }
+ }
+
}
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
index 34b25fa..515ebdd 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
@@ -48,10 +48,8 @@ import org.apache.metamodel.util.UrlResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.opencsv.CSVParserBuilder;
import com.opencsv.CSVReader;
import com.opencsv.ICSVParser;
-import com.opencsv.RFC4180ParserBuilder;
/**
* DataContext implementation for reading CSV files.
@@ -299,21 +297,11 @@ public final class CsvDataContext extends QueryPostprocessDataContext implements
return new CsvDataSet(csvReader, columns, maxRowsOrNull, columnCount, failOnInconsistentRowLength);
}
- return new SingleLineCsvDataSet(reader, createParser(), columns, maxRowsOrNull, columnCount,
- failOnInconsistentRowLength);
+ return new SingleLineCsvDataSet(reader, columns, maxRowsOrNull, columnCount, _configuration);
}
private ICSVParser createParser() {
- final ICSVParser parser;
- if (_configuration.getEscapeChar() == _configuration.getQuoteChar()) {
- parser = new RFC4180ParserBuilder().withSeparator(_configuration.getSeparatorChar())
- .withQuoteChar(_configuration.getQuoteChar()).build();
- } else {
- parser = new CSVParserBuilder().withSeparator(_configuration.getSeparatorChar())
- .withQuoteChar(_configuration.getQuoteChar()).withEscapeChar(_configuration.getEscapeChar())
- .build();
- }
- return parser;
+ return _configuration.createParser();
}
protected CSVReader createCsvReader(int skipLines) {
diff --git a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
index 4b24892..c734060 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
@@ -44,13 +44,48 @@ final class SingleLineCsvDataSet extends AbstractDataSet {
private final ICSVParser _csvParser;
private final int _columnsInTable;
private final boolean _failOnInconsistentRowLength;
-
+ private final CsvConfiguration _csvConfiguration;
+
private volatile int _rowNumber;
private volatile Integer _rowsRemaining;
private volatile Row _row;
+ /**
+ * @param reader
+ * @param csvParser
+ * @param columns
+ * @param maxRows
+ * @param columnsInTable
+ * @param failOnInconsistentRowLength
+ *
+ * @deprecated When instantiating a {@link SingleLineCsvDataSet} using this constructor the {@link ICSVParser} can
+ * be reused in different threads in a parallel manner which is not promised to work by the
+ * {@link ICSVParser}. Use
+ * {@link #SingleLineCsvDataSet(BufferedReader, CsvConfiguration, List, Integer, int, boolean)} instead.
+ */
+ @Deprecated
public SingleLineCsvDataSet(BufferedReader reader, ICSVParser csvParser, List<Column> columns, Integer maxRows,
- int columnsInTable, boolean failOnInconsistentRowLength) {
+ int columnsInTable, boolean failOnInconsistentRowLength) {
+ this(reader, csvParser, columns, maxRows, columnsInTable, failOnInconsistentRowLength, null);
+ }
+
+ /**
+ * @param reader
+ * @param columns
+ * @param maxRows
+ * @param columnsInTable
+ * @param csvParser
+ * @param failOnInconsistentRowLength
+ */
+ public SingleLineCsvDataSet(final BufferedReader reader, final List<Column> columns, final Integer maxRows,
+ final int columnsInTable, final CsvConfiguration csvConfiguration) {
+ this(reader, null, columns, maxRows, columnsInTable, csvConfiguration.isFailOnInconsistentRowLength(),
+ csvConfiguration);
+ }
+
+ private SingleLineCsvDataSet(final BufferedReader reader, final ICSVParser csvParser, final List<Column> columns,
+ final Integer maxRows, final int columnsInTable, final boolean failOnInconsistentRowLength,
+ final CsvConfiguration csvConfiguration) {
super(columns.stream().map(SelectItem::new).collect(Collectors.toList()));
_reader = reader;
_csvParser = csvParser;
@@ -58,6 +93,7 @@ final class SingleLineCsvDataSet extends AbstractDataSet {
_failOnInconsistentRowLength = failOnInconsistentRowLength;
_rowNumber = 0;
_rowsRemaining = maxRows;
+ _csvConfiguration = csvConfiguration;
}
@Override
@@ -95,6 +131,9 @@ final class SingleLineCsvDataSet extends AbstractDataSet {
}
protected ICSVParser getCsvParser() {
+ if (_csvConfiguration != null) {
+ return _csvConfiguration.createParser();
+ }
return _csvParser;
}
diff --git a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
index 64ff013..fe9fda5 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
@@ -29,8 +29,6 @@ import org.apache.metamodel.schema.Column;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.opencsv.ICSVParser;
-
/**
* Specialized row implementation for single-line CSV values
*/
@@ -101,10 +99,7 @@ final class SingleLineCsvRow extends AbstractRow {
private String[] parseLine() {
try {
- final ICSVParser csvParser = _dataSet.getCsvParser();
- synchronized (csvParser) {
- return csvParser.parseLine(_line);
- }
+ return _dataSet.getCsvParser().parseLine(_line);
} catch (IOException e) {
if (_failOnInconsistentRowLength) {
throw new MetaModelException("Failed to parse CSV line no. " + _rowNumber + ": " + _line, e);
diff --git a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
index cc02ea4..a2f0eea 100644
--- a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
+++ b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
@@ -46,6 +46,7 @@ public class SingleLineCsvRowTest {
columns.add(new MutableColumn("1"));
columns.add(new MutableColumn("2"));
CSVParser csvParser = new CSVParser();
+ @SuppressWarnings("deprecation")
final SingleLineCsvDataSet dataSet = new SingleLineCsvDataSet(null, csvParser, columns, null, 2, false);
final SingleLineCsvRow originalRow = new SingleLineCsvRow(dataSet, "foo,bar", 2, false, 1);
@@ -75,10 +76,9 @@ public class SingleLineCsvRowTest {
columns.add(new MutableColumn("h").setColumnNumber(8));
columns.add(new MutableColumn("J").setColumnNumber(10));
- final CSVParser csvParser = new CSVParser();
try (final DataSet dataSet = new SingleLineCsvDataSet(FileHelper
.getBufferedReader(new FileResource("src/test/resources/empty_fields.csv").read(),
- FileHelper.UTF_8_CHARSET), csvParser, columns, null, 11, false)) {
+ FileHelper.UTF_8_CHARSET), columns, null, 11, new CsvConfiguration())) {
dataSet.toRows().parallelStream().forEach(row -> {
for (int i = 0; i < 5; i++) {
assertEquals("", row.getValue(i));
[metamodel] 04/08: Refactored based on feedback. Introduced the
CsvParserBuilder class to work around the fact that we internally are able
to use two different builders which don't share a common super class or
interface.
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit 0c2a607609e3e53a9947ae9e5b3143a2fae5a320
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Fri Jun 14 14:49:34 2019 +0200
Refactored based on feedback. Introduced the CsvParserBuilder class to work around the fact that we internally are able to use two different builders which don't share a common super class or interface.
---
.../org/apache/metamodel/csv/CsvConfiguration.java | 17 --------
.../org/apache/metamodel/csv/CsvDataContext.java | 2 +-
.../org/apache/metamodel/csv/CsvParserBuilder.java | 50 ++++++++++++++++++++++
.../apache/metamodel/csv/SingleLineCsvDataSet.java | 48 ++-------------------
.../apache/metamodel/csv/SingleLineCsvRowTest.java | 6 +--
5 files changed, 56 insertions(+), 67 deletions(-)
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java b/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java
index d9f0f72..332ef4b 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvConfiguration.java
@@ -26,10 +26,6 @@ import org.apache.metamodel.schema.naming.ColumnNamingStrategy;
import org.apache.metamodel.util.BaseObject;
import org.apache.metamodel.util.FileHelper;
-import com.opencsv.CSVParserBuilder;
-import com.opencsv.ICSVParser;
-import com.opencsv.RFC4180ParserBuilder;
-
/**
* Represents the configuration for reading/parsing CSV files.
*/
@@ -199,17 +195,4 @@ public final class CsvConfiguration extends BaseObject implements Serializable {
+ ", separatorChar=" + separatorChar + ", quoteChar=" + quoteChar + ", escapeChar=" + escapeChar
+ ", failOnInconsistentRowLength=" + failOnInconsistentRowLength + "]";
}
-
- public ICSVParser createParser() {
- if (getEscapeChar() == getQuoteChar()) {
- return new RFC4180ParserBuilder().withSeparator(getSeparatorChar()).withQuoteChar(getQuoteChar()).build();
- } else {
- return new CSVParserBuilder()
- .withSeparator(getSeparatorChar())
- .withQuoteChar(getQuoteChar())
- .withEscapeChar(getEscapeChar())
- .build();
- }
- }
-
}
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
index 515ebdd..5f50932 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java
@@ -301,7 +301,7 @@ public final class CsvDataContext extends QueryPostprocessDataContext implements
}
private ICSVParser createParser() {
- return _configuration.createParser();
+ return new CsvParserBuilder(_configuration).build();
}
protected CSVReader createCsvReader(int skipLines) {
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java b/csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java
new file mode 100644
index 0000000..d238098
--- /dev/null
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java
@@ -0,0 +1,50 @@
+/**
+ * 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.metamodel.csv;
+
+import com.opencsv.CSVParserBuilder;
+import com.opencsv.ICSVParser;
+import com.opencsv.RFC4180ParserBuilder;
+
+class CsvParserBuilder {
+ final CSVParserBuilder _csvParserBuilder;
+ final RFC4180ParserBuilder _rfc4180ParserBuilder;
+
+ CsvParserBuilder(final CsvConfiguration csvConfiguration) {
+ if (csvConfiguration.getEscapeChar() == csvConfiguration.getQuoteChar()) {
+ _csvParserBuilder = null;
+ _rfc4180ParserBuilder = new RFC4180ParserBuilder()
+ .withSeparator(csvConfiguration.getSeparatorChar())
+ .withQuoteChar(csvConfiguration.getQuoteChar());
+ } else {
+ _csvParserBuilder = new CSVParserBuilder()
+ .withSeparator(csvConfiguration.getSeparatorChar())
+ .withQuoteChar(csvConfiguration.getQuoteChar())
+ .withEscapeChar(csvConfiguration.getEscapeChar());
+ _rfc4180ParserBuilder = null;
+ }
+ }
+
+ ICSVParser build() {
+ if (_csvParserBuilder == null) {
+ return _rfc4180ParserBuilder.build();
+ }
+ return _csvParserBuilder.build();
+ }
+}
diff --git a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
index c734060..a479b2a 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
@@ -41,59 +41,23 @@ import com.opencsv.ICSVParser;
final class SingleLineCsvDataSet extends AbstractDataSet {
private final BufferedReader _reader;
- private final ICSVParser _csvParser;
private final int _columnsInTable;
private final boolean _failOnInconsistentRowLength;
- private final CsvConfiguration _csvConfiguration;
+ private final CsvParserBuilder _csvParserBuilder;
private volatile int _rowNumber;
private volatile Integer _rowsRemaining;
private volatile Row _row;
- /**
- * @param reader
- * @param csvParser
- * @param columns
- * @param maxRows
- * @param columnsInTable
- * @param failOnInconsistentRowLength
- *
- * @deprecated When instantiating a {@link SingleLineCsvDataSet} using this constructor the {@link ICSVParser} can
- * be reused in different threads in a parallel manner which is not promised to work by the
- * {@link ICSVParser}. Use
- * {@link #SingleLineCsvDataSet(BufferedReader, CsvConfiguration, List, Integer, int, boolean)} instead.
- */
- @Deprecated
- public SingleLineCsvDataSet(BufferedReader reader, ICSVParser csvParser, List<Column> columns, Integer maxRows,
- int columnsInTable, boolean failOnInconsistentRowLength) {
- this(reader, csvParser, columns, maxRows, columnsInTable, failOnInconsistentRowLength, null);
- }
-
- /**
- * @param reader
- * @param columns
- * @param maxRows
- * @param columnsInTable
- * @param csvParser
- * @param failOnInconsistentRowLength
- */
public SingleLineCsvDataSet(final BufferedReader reader, final List<Column> columns, final Integer maxRows,
final int columnsInTable, final CsvConfiguration csvConfiguration) {
- this(reader, null, columns, maxRows, columnsInTable, csvConfiguration.isFailOnInconsistentRowLength(),
- csvConfiguration);
- }
-
- private SingleLineCsvDataSet(final BufferedReader reader, final ICSVParser csvParser, final List<Column> columns,
- final Integer maxRows, final int columnsInTable, final boolean failOnInconsistentRowLength,
- final CsvConfiguration csvConfiguration) {
super(columns.stream().map(SelectItem::new).collect(Collectors.toList()));
_reader = reader;
- _csvParser = csvParser;
_columnsInTable = columnsInTable;
- _failOnInconsistentRowLength = failOnInconsistentRowLength;
+ _failOnInconsistentRowLength = csvConfiguration.isFailOnInconsistentRowLength();
_rowNumber = 0;
_rowsRemaining = maxRows;
- _csvConfiguration = csvConfiguration;
+ _csvParserBuilder = new CsvParserBuilder(csvConfiguration);
}
@Override
@@ -131,10 +95,7 @@ final class SingleLineCsvDataSet extends AbstractDataSet {
}
protected ICSVParser getCsvParser() {
- if (_csvConfiguration != null) {
- return _csvConfiguration.createParser();
- }
- return _csvParser;
+ return _csvParserBuilder.build();
}
public boolean nextInternal() {
@@ -167,5 +128,4 @@ final class SingleLineCsvDataSet extends AbstractDataSet {
public Row getRow() {
return _row;
}
-
}
diff --git a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
index a2f0eea..6f36d21 100644
--- a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
+++ b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
@@ -36,8 +36,6 @@ import org.apache.metamodel.util.FileResource;
import org.junit.Assert;
import org.junit.Test;
-import com.opencsv.CSVParser;
-
public class SingleLineCsvRowTest {
@Test
@@ -45,9 +43,7 @@ public class SingleLineCsvRowTest {
final List<Column> columns = new ArrayList<>();
columns.add(new MutableColumn("1"));
columns.add(new MutableColumn("2"));
- CSVParser csvParser = new CSVParser();
- @SuppressWarnings("deprecation")
- final SingleLineCsvDataSet dataSet = new SingleLineCsvDataSet(null, csvParser, columns, null, 2, false);
+ final SingleLineCsvDataSet dataSet = new SingleLineCsvDataSet(null, columns, null, 2, new CsvConfiguration());
final SingleLineCsvRow originalRow = new SingleLineCsvRow(dataSet, "foo,bar", 2, false, 1);
final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
[metamodel] 06/08: Reintroduced unrelated removed newline (as an
excuse to trigger the build, because Travis fails)
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit 286292e869c3083ea8676666150fc618f46e1857
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Wed Jun 19 10:09:27 2019 +0200
Reintroduced unrelated removed newline (as an excuse to trigger the build, because Travis fails)
---
csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
index a479b2a..7ed159b 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvDataSet.java
@@ -128,4 +128,5 @@ final class SingleLineCsvDataSet extends AbstractDataSet {
public Row getRow() {
return _row;
}
+
}
[metamodel] 08/08: [maven-release-plugin] prepare release
MetaModel-5.2.1-HI1
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit b13ceb3d7f20f81355ac6756c419640fe0dc4c7a
Author: Arjan Seijkens <ar...@gmail.com>
AuthorDate: Fri Jun 21 11:08:29 2019 +0200
[maven-release-plugin] prepare release MetaModel-5.2.1-HI1
---
cassandra/pom.xml | 2 +-
core/pom.xml | 2 +-
couchdb/pom.xml | 2 +-
csv/pom.xml | 2 +-
dynamodb/pom.xml | 2 +-
elasticsearch/common/pom.xml | 2 +-
elasticsearch/native/pom.xml | 2 +-
elasticsearch/pom.xml | 2 +-
elasticsearch/rest/pom.xml | 2 +-
excel/pom.xml | 2 +-
fixedwidth/pom.xml | 2 +-
full/pom.xml | 2 +-
hadoop/pom.xml | 2 +-
hbase/pom.xml | 2 +-
jdbc/pom.xml | 2 +-
json/pom.xml | 2 +-
kafka/pom.xml | 2 +-
mongodb/common/pom.xml | 2 +-
mongodb/mongo2/pom.xml | 2 +-
mongodb/mongo3/pom.xml | 2 +-
mongodb/pom.xml | 2 +-
neo4j/pom.xml | 2 +-
openoffice/pom.xml | 2 +-
pojo/pom.xml | 2 +-
pom.xml | 4 ++--
salesforce/pom.xml | 2 +-
spring/pom.xml | 2 +-
sugarcrm/pom.xml | 2 +-
xml/pom.xml | 2 +-
29 files changed, 30 insertions(+), 30 deletions(-)
diff --git a/cassandra/pom.xml b/cassandra/pom.xml
index 260027c..622c5ab 100644
--- a/cassandra/pom.xml
+++ b/cassandra/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-cassandra</artifactId>
diff --git a/core/pom.xml b/core/pom.xml
index c185b22..0bc2029 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-core</artifactId>
diff --git a/couchdb/pom.xml b/couchdb/pom.xml
index be384b3..28935f7 100644
--- a/couchdb/pom.xml
+++ b/couchdb/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-couchdb</artifactId>
diff --git a/csv/pom.xml b/csv/pom.xml
index 6bb700f..89632a5 100644
--- a/csv/pom.xml
+++ b/csv/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-csv</artifactId>
diff --git a/dynamodb/pom.xml b/dynamodb/pom.xml
index 9d7e0dc..83ebb32 100644
--- a/dynamodb/pom.xml
+++ b/dynamodb/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-dynamodb</artifactId>
diff --git a/elasticsearch/common/pom.xml b/elasticsearch/common/pom.xml
index 48672bc..a237c3a 100644
--- a/elasticsearch/common/pom.xml
+++ b/elasticsearch/common/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel-elasticsearch</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/elasticsearch/native/pom.xml b/elasticsearch/native/pom.xml
index ae62ee5..f4a51fb 100644
--- a/elasticsearch/native/pom.xml
+++ b/elasticsearch/native/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel-elasticsearch</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/elasticsearch/pom.xml b/elasticsearch/pom.xml
index fa608fd..fc4a37d 100644
--- a/elasticsearch/pom.xml
+++ b/elasticsearch/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-elasticsearch</artifactId>
diff --git a/elasticsearch/rest/pom.xml b/elasticsearch/rest/pom.xml
index 61f188f..a92184c 100644
--- a/elasticsearch/rest/pom.xml
+++ b/elasticsearch/rest/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel-elasticsearch</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff --git a/excel/pom.xml b/excel/pom.xml
index 02e7156..6ebc391 100644
--- a/excel/pom.xml
+++ b/excel/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-excel</artifactId>
diff --git a/fixedwidth/pom.xml b/fixedwidth/pom.xml
index bf9579a..3809983 100644
--- a/fixedwidth/pom.xml
+++ b/fixedwidth/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-fixedwidth</artifactId>
diff --git a/full/pom.xml b/full/pom.xml
index da78c7f..982d205 100644
--- a/full/pom.xml
+++ b/full/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-full</artifactId>
diff --git a/hadoop/pom.xml b/hadoop/pom.xml
index 9a6b05c..f4a346d 100644
--- a/hadoop/pom.xml
+++ b/hadoop/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-hadoop</artifactId>
diff --git a/hbase/pom.xml b/hbase/pom.xml
index a493df2..54518a3 100644
--- a/hbase/pom.xml
+++ b/hbase/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-hbase</artifactId>
diff --git a/jdbc/pom.xml b/jdbc/pom.xml
index b529efe..c9c694b 100644
--- a/jdbc/pom.xml
+++ b/jdbc/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-jdbc</artifactId>
diff --git a/json/pom.xml b/json/pom.xml
index e6e55cf..b403890 100644
--- a/json/pom.xml
+++ b/json/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-json</artifactId>
diff --git a/kafka/pom.xml b/kafka/pom.xml
index a59f61a..6116405 100644
--- a/kafka/pom.xml
+++ b/kafka/pom.xml
@@ -13,7 +13,7 @@
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-kafka</artifactId>
diff --git a/mongodb/common/pom.xml b/mongodb/common/pom.xml
index 7a92829..8dce8a6 100644
--- a/mongodb/common/pom.xml
+++ b/mongodb/common/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel-mongodb</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-mongodb-common</artifactId>
diff --git a/mongodb/mongo2/pom.xml b/mongodb/mongo2/pom.xml
index 954f522..4e208c8 100644
--- a/mongodb/mongo2/pom.xml
+++ b/mongodb/mongo2/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel-mongodb</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-mongodb-mongo2</artifactId>
diff --git a/mongodb/mongo3/pom.xml b/mongodb/mongo3/pom.xml
index 3d789bd..1af6aa6 100644
--- a/mongodb/mongo3/pom.xml
+++ b/mongodb/mongo3/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel-mongodb</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-mongodb-mongo3</artifactId>
diff --git a/mongodb/pom.xml b/mongodb/pom.xml
index 9cd371c..86d0afc 100644
--- a/mongodb/pom.xml
+++ b/mongodb/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-mongodb</artifactId>
diff --git a/neo4j/pom.xml b/neo4j/pom.xml
index 2b22d5d..31969f2 100644
--- a/neo4j/pom.xml
+++ b/neo4j/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-neo4j</artifactId>
diff --git a/openoffice/pom.xml b/openoffice/pom.xml
index 5a3f72e..8908360 100644
--- a/openoffice/pom.xml
+++ b/openoffice/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-openoffice</artifactId>
diff --git a/pojo/pom.xml b/pojo/pom.xml
index 2667808..abbc9f1 100644
--- a/pojo/pom.xml
+++ b/pojo/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-pojo</artifactId>
diff --git a/pom.xml b/pom.xml
index e061bfd..3741b42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,11 +43,11 @@ under the License.
<url>https://github.com/arjansh/metamodel.git</url>
<connection>scm:git:https://github.com/arjansh/metamodel.git</connection>
<developerConnection>scm:git:https://github.com/arjansh/metamodel.git</developerConnection>
- <tag>HEAD</tag>
+ <tag>MetaModel-5.2.1-HI1</tag>
</scm>
<groupId>org.apache.metamodel</groupId>
<artifactId>MetaModel</artifactId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
<name>MetaModel</name>
<description>MetaModel is a library that encapsulates the differences and enhances
the capabilities of different datastores. Rich querying abilities are
diff --git a/salesforce/pom.xml b/salesforce/pom.xml
index 57ba2ef..3ae9431 100644
--- a/salesforce/pom.xml
+++ b/salesforce/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-salesforce</artifactId>
diff --git a/spring/pom.xml b/spring/pom.xml
index 526f23c..b74cd9a 100644
--- a/spring/pom.xml
+++ b/spring/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-spring</artifactId>
diff --git a/sugarcrm/pom.xml b/sugarcrm/pom.xml
index e9cf1cf..4b3d45c 100644
--- a/sugarcrm/pom.xml
+++ b/sugarcrm/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-sugarcrm</artifactId>
diff --git a/xml/pom.xml b/xml/pom.xml
index f910a81..625a42f 100644
--- a/xml/pom.xml
+++ b/xml/pom.xml
@@ -21,7 +21,7 @@ under the License.
<parent>
<artifactId>MetaModel</artifactId>
<groupId>org.apache.metamodel</groupId>
- <version>5.2.1-SNAPSHOT</version>
+ <version>5.2.1-HI1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>MetaModel-xml</artifactId>
[metamodel] 01/08: Adding unit test which proves that querying a
CSV file using a SingleLineCsvDataSet in a parallel manner may cause
corrupt results.
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit 1bb640387aef86d3ed28782c3e47ba411b29686b
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Wed Jun 12 10:13:36 2019 +0200
Adding unit test which proves that querying a CSV file using a SingleLineCsvDataSet in a parallel manner may cause corrupt results.
---
.../apache/metamodel/csv/SingleLineCsvRowTest.java | 26 ++
csv/src/test/resources/empty_fields.csv | 500 +++++++++++++++++++++
2 files changed, 526 insertions(+)
diff --git a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
index 28c640f..cc02ea4 100644
--- a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
+++ b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
@@ -18,6 +18,8 @@
*/
package org.apache.metamodel.csv;
+import static org.junit.Assert.assertEquals;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
@@ -25,9 +27,12 @@ import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
+import org.apache.metamodel.data.DataSet;
import org.apache.metamodel.data.Row;
import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.MutableColumn;
+import org.apache.metamodel.util.FileHelper;
+import org.apache.metamodel.util.FileResource;
import org.junit.Assert;
import org.junit.Test;
@@ -60,4 +65,25 @@ public class SingleLineCsvRowTest {
final Object[] values2 = deserializedRow.getValues();
Assert.assertArrayEquals(values1, values2);
}
+
+ @Test
+ public void testConcurrentAccess() throws Exception {
+ final List<Column> columns = new ArrayList<>();
+ columns.add(new MutableColumn("b").setColumnNumber(2));
+ columns.add(new MutableColumn("d").setColumnNumber(4));
+ columns.add(new MutableColumn("f").setColumnNumber(6));
+ columns.add(new MutableColumn("h").setColumnNumber(8));
+ columns.add(new MutableColumn("J").setColumnNumber(10));
+
+ final CSVParser csvParser = new CSVParser();
+ try (final DataSet dataSet = new SingleLineCsvDataSet(FileHelper
+ .getBufferedReader(new FileResource("src/test/resources/empty_fields.csv").read(),
+ FileHelper.UTF_8_CHARSET), csvParser, columns, null, 11, false)) {
+ dataSet.toRows().parallelStream().forEach(row -> {
+ for (int i = 0; i < 5; i++) {
+ assertEquals("", row.getValue(i));
+ }
+ });
+ }
+ }
}
diff --git a/csv/src/test/resources/empty_fields.csv b/csv/src/test/resources/empty_fields.csv
new file mode 100644
index 0000000..71f6af7
--- /dev/null
+++ b/csv/src/test/resources/empty_fields.csv
@@ -0,0 +1,500 @@
+"4","dummy","","dummy","","dummy","","dummy","","dummy",""
+"1","dummy","","dummy","","dummy","","dummy","","dummy",""
+"6","dummy","","dummy","","dummy","","dummy","","dummy",""
+"5","dummy","","dummy","","dummy","","dummy","","dummy",""
+"7","dummy","","dummy","","dummy","","dummy","","dummy",""
+"8","dummy","","dummy","","dummy","","dummy","","dummy",""
+"9","dummy","","dummy","","dummy","","dummy","","dummy",""
+"10","dummy","","dummy","","dummy","","dummy","","dummy",""
+"11","dummy","","dummy","","dummy","","dummy","","dummy",""
+"12","dummy","","dummy","","dummy","","dummy","","dummy",""
+"13","dummy","","dummy","","dummy","","dummy","","dummy",""
+"14","dummy","","dummy","","dummy","","dummy","","dummy",""
+"15","dummy","","dummy","","dummy","","dummy","","dummy",""
+"16","dummy","","dummy","","dummy","","dummy","","dummy",""
+"17","dummy","","dummy","","dummy","","dummy","","dummy",""
+"18","dummy","","dummy","","dummy","","dummy","","dummy",""
+"19","dummy","","dummy","","dummy","","dummy","","dummy",""
+"20","dummy","","dummy","","dummy","","dummy","","dummy",""
+"21","dummy","","dummy","","dummy","","dummy","","dummy",""
+"22","dummy","","dummy","","dummy","","dummy","","dummy",""
+"23","dummy","","dummy","","dummy","","dummy","","dummy",""
+"24","dummy","","dummy","","dummy","","dummy","","dummy",""
+"25","dummy","","dummy","","dummy","","dummy","","dummy",""
+"26","dummy","","dummy","","dummy","","dummy","","dummy",""
+"27","dummy","","dummy","","dummy","","dummy","","dummy",""
+"29","dummy","","dummy","","dummy","","dummy","","dummy",""
+"28","dummy","","dummy","","dummy","","dummy","","dummy",""
+"30","dummy","","dummy","","dummy","","dummy","","dummy",""
+"3","dummy","","dummy","","dummy","","dummy","","dummy",""
+"2","dummy","","dummy","","dummy","","dummy","","dummy",""
+"31","dummy","","dummy","","dummy","","dummy","","dummy",""
+"32","dummy","","dummy","","dummy","","dummy","","dummy",""
+"33","dummy","","dummy","","dummy","","dummy","","dummy",""
+"34","dummy","","dummy","","dummy","","dummy","","dummy",""
+"35","dummy","","dummy","","dummy","","dummy","","dummy",""
+"36","dummy","","dummy","","dummy","","dummy","","dummy",""
+"37","dummy","","dummy","","dummy","","dummy","","dummy",""
+"38","dummy","","dummy","","dummy","","dummy","","dummy",""
+"39","dummy","","dummy","","dummy","","dummy","","dummy",""
+"40","dummy","","dummy","","dummy","","dummy","","dummy",""
+"41","dummy","","dummy","","dummy","","dummy","","dummy",""
+"42","dummy","","dummy","","dummy","","dummy","","dummy",""
+"43","dummy","","dummy","","dummy","","dummy","","dummy",""
+"44","dummy","","dummy","","dummy","","dummy","","dummy",""
+"45","dummy","","dummy","","dummy","","dummy","","dummy",""
+"46","dummy","","dummy","","dummy","","dummy","","dummy",""
+"47","dummy","","dummy","","dummy","","dummy","","dummy",""
+"48","dummy","","dummy","","dummy","","dummy","","dummy",""
+"49","dummy","","dummy","","dummy","","dummy","","dummy",""
+"50","dummy","","dummy","","dummy","","dummy","","dummy",""
+"51","dummy","","dummy","","dummy","","dummy","","dummy",""
+"52","dummy","","dummy","","dummy","","dummy","","dummy",""
+"53","dummy","","dummy","","dummy","","dummy","","dummy",""
+"54","dummy","","dummy","","dummy","","dummy","","dummy",""
+"55","dummy","","dummy","","dummy","","dummy","","dummy",""
+"56","dummy","","dummy","","dummy","","dummy","","dummy",""
+"57","dummy","","dummy","","dummy","","dummy","","dummy",""
+"58","dummy","","dummy","","dummy","","dummy","","dummy",""
+"59","dummy","","dummy","","dummy","","dummy","","dummy",""
+"60","dummy","","dummy","","dummy","","dummy","","dummy",""
+"61","dummy","","dummy","","dummy","","dummy","","dummy",""
+"62","dummy","","dummy","","dummy","","dummy","","dummy",""
+"63","dummy","","dummy","","dummy","","dummy","","dummy",""
+"64","dummy","","dummy","","dummy","","dummy","","dummy",""
+"65","dummy","","dummy","","dummy","","dummy","","dummy",""
+"66","dummy","","dummy","","dummy","","dummy","","dummy",""
+"67","dummy","","dummy","","dummy","","dummy","","dummy",""
+"68","dummy","","dummy","","dummy","","dummy","","dummy",""
+"69","dummy","","dummy","","dummy","","dummy","","dummy",""
+"70","dummy","","dummy","","dummy","","dummy","","dummy",""
+"71","dummy","","dummy","","dummy","","dummy","","dummy",""
+"72","dummy","","dummy","","dummy","","dummy","","dummy",""
+"73","dummy","","dummy","","dummy","","dummy","","dummy",""
+"74","dummy","","dummy","","dummy","","dummy","","dummy",""
+"75","dummy","","dummy","","dummy","","dummy","","dummy",""
+"76","dummy","","dummy","","dummy","","dummy","","dummy",""
+"77","dummy","","dummy","","dummy","","dummy","","dummy",""
+"78","dummy","","dummy","","dummy","","dummy","","dummy",""
+"79","dummy","","dummy","","dummy","","dummy","","dummy",""
+"80","dummy","","dummy","","dummy","","dummy","","dummy",""
+"81","dummy","","dummy","","dummy","","dummy","","dummy",""
+"82","dummy","","dummy","","dummy","","dummy","","dummy",""
+"83","dummy","","dummy","","dummy","","dummy","","dummy",""
+"84","dummy","","dummy","","dummy","","dummy","","dummy",""
+"85","dummy","","dummy","","dummy","","dummy","","dummy",""
+"86","dummy","","dummy","","dummy","","dummy","","dummy",""
+"87","dummy","","dummy","","dummy","","dummy","","dummy",""
+"88","dummy","","dummy","","dummy","","dummy","","dummy",""
+"89","dummy","","dummy","","dummy","","dummy","","dummy",""
+"90","dummy","","dummy","","dummy","","dummy","","dummy",""
+"91","dummy","","dummy","","dummy","","dummy","","dummy",""
+"92","dummy","","dummy","","dummy","","dummy","","dummy",""
+"93","dummy","","dummy","","dummy","","dummy","","dummy",""
+"94","dummy","","dummy","","dummy","","dummy","","dummy",""
+"95","dummy","","dummy","","dummy","","dummy","","dummy",""
+"96","dummy","","dummy","","dummy","","dummy","","dummy",""
+"97","dummy","","dummy","","dummy","","dummy","","dummy",""
+"98","dummy","","dummy","","dummy","","dummy","","dummy",""
+"99","dummy","","dummy","","dummy","","dummy","","dummy",""
+"100","dummy","","dummy","","dummy","","dummy","","dummy",""
+"101","dummy","","dummy","","dummy","","dummy","","dummy",""
+"102","dummy","","dummy","","dummy","","dummy","","dummy",""
+"103","dummy","","dummy","","dummy","","dummy","","dummy",""
+"104","dummy","","dummy","","dummy","","dummy","","dummy",""
+"105","dummy","","dummy","","dummy","","dummy","","dummy",""
+"106","dummy","","dummy","","dummy","","dummy","","dummy",""
+"107","dummy","","dummy","","dummy","","dummy","","dummy",""
+"108","dummy","","dummy","","dummy","","dummy","","dummy",""
+"109","dummy","","dummy","","dummy","","dummy","","dummy",""
+"110","dummy","","dummy","","dummy","","dummy","","dummy",""
+"111","dummy","","dummy","","dummy","","dummy","","dummy",""
+"112","dummy","","dummy","","dummy","","dummy","","dummy",""
+"113","dummy","","dummy","","dummy","","dummy","","dummy",""
+"114","dummy","","dummy","","dummy","","dummy","","dummy",""
+"115","dummy","","dummy","","dummy","","dummy","","dummy",""
+"116","dummy","","dummy","","dummy","","dummy","","dummy",""
+"117","dummy","","dummy","","dummy","","dummy","","dummy",""
+"118","dummy","","dummy","","dummy","","dummy","","dummy",""
+"119","dummy","","dummy","","dummy","","dummy","","dummy",""
+"120","dummy","","dummy","","dummy","","dummy","","dummy",""
+"121","dummy","","dummy","","dummy","","dummy","","dummy",""
+"122","dummy","","dummy","","dummy","","dummy","","dummy",""
+"123","dummy","","dummy","","dummy","","dummy","","dummy",""
+"124","dummy","","dummy","","dummy","","dummy","","dummy",""
+"125","dummy","","dummy","","dummy","","dummy","","dummy",""
+"126","dummy","","dummy","","dummy","","dummy","","dummy",""
+"127","dummy","","dummy","","dummy","","dummy","","dummy",""
+"128","dummy","","dummy","","dummy","","dummy","","dummy",""
+"129","dummy","","dummy","","dummy","","dummy","","dummy",""
+"130","dummy","","dummy","","dummy","","dummy","","dummy",""
+"131","dummy","","dummy","","dummy","","dummy","","dummy",""
+"132","dummy","","dummy","","dummy","","dummy","","dummy",""
+"133","dummy","","dummy","","dummy","","dummy","","dummy",""
+"134","dummy","","dummy","","dummy","","dummy","","dummy",""
+"135","dummy","","dummy","","dummy","","dummy","","dummy",""
+"136","dummy","","dummy","","dummy","","dummy","","dummy",""
+"137","dummy","","dummy","","dummy","","dummy","","dummy",""
+"138","dummy","","dummy","","dummy","","dummy","","dummy",""
+"139","dummy","","dummy","","dummy","","dummy","","dummy",""
+"140","dummy","","dummy","","dummy","","dummy","","dummy",""
+"142","dummy","","dummy","","dummy","","dummy","","dummy",""
+"141","dummy","","dummy","","dummy","","dummy","","dummy",""
+"143","dummy","","dummy","","dummy","","dummy","","dummy",""
+"144","dummy","","dummy","","dummy","","dummy","","dummy",""
+"145","dummy","","dummy","","dummy","","dummy","","dummy",""
+"146","dummy","","dummy","","dummy","","dummy","","dummy",""
+"147","dummy","","dummy","","dummy","","dummy","","dummy",""
+"148","dummy","","dummy","","dummy","","dummy","","dummy",""
+"149","dummy","","dummy","","dummy","","dummy","","dummy",""
+"150","dummy","","dummy","","dummy","","dummy","","dummy",""
+"151","dummy","","dummy","","dummy","","dummy","","dummy",""
+"152","dummy","","dummy","","dummy","","dummy","","dummy",""
+"153","dummy","","dummy","","dummy","","dummy","","dummy",""
+"154","dummy","","dummy","","dummy","","dummy","","dummy",""
+"155","dummy","","dummy","","dummy","","dummy","","dummy",""
+"156","dummy","","dummy","","dummy","","dummy","","dummy",""
+"157","dummy","","dummy","","dummy","","dummy","","dummy",""
+"158","dummy","","dummy","","dummy","","dummy","","dummy",""
+"159","dummy","","dummy","","dummy","","dummy","","dummy",""
+"160","dummy","","dummy","","dummy","","dummy","","dummy",""
+"161","dummy","","dummy","","dummy","","dummy","","dummy",""
+"162","dummy","","dummy","","dummy","","dummy","","dummy",""
+"163","dummy","","dummy","","dummy","","dummy","","dummy",""
+"164","dummy","","dummy","","dummy","","dummy","","dummy",""
+"165","dummy","","dummy","","dummy","","dummy","","dummy",""
+"166","dummy","","dummy","","dummy","","dummy","","dummy",""
+"167","dummy","","dummy","","dummy","","dummy","","dummy",""
+"168","dummy","","dummy","","dummy","","dummy","","dummy",""
+"169","dummy","","dummy","","dummy","","dummy","","dummy",""
+"170","dummy","","dummy","","dummy","","dummy","","dummy",""
+"171","dummy","","dummy","","dummy","","dummy","","dummy",""
+"172","dummy","","dummy","","dummy","","dummy","","dummy",""
+"173","dummy","","dummy","","dummy","","dummy","","dummy",""
+"174","dummy","","dummy","","dummy","","dummy","","dummy",""
+"175","dummy","","dummy","","dummy","","dummy","","dummy",""
+"176","dummy","","dummy","","dummy","","dummy","","dummy",""
+"177","dummy","","dummy","","dummy","","dummy","","dummy",""
+"178","dummy","","dummy","","dummy","","dummy","","dummy",""
+"179","dummy","","dummy","","dummy","","dummy","","dummy",""
+"180","dummy","","dummy","","dummy","","dummy","","dummy",""
+"181","dummy","","dummy","","dummy","","dummy","","dummy",""
+"182","dummy","","dummy","","dummy","","dummy","","dummy",""
+"183","dummy","","dummy","","dummy","","dummy","","dummy",""
+"184","dummy","","dummy","","dummy","","dummy","","dummy",""
+"185","dummy","","dummy","","dummy","","dummy","","dummy",""
+"186","dummy","","dummy","","dummy","","dummy","","dummy",""
+"187","dummy","","dummy","","dummy","","dummy","","dummy",""
+"188","dummy","","dummy","","dummy","","dummy","","dummy",""
+"189","dummy","","dummy","","dummy","","dummy","","dummy",""
+"190","dummy","","dummy","","dummy","","dummy","","dummy",""
+"191","dummy","","dummy","","dummy","","dummy","","dummy",""
+"192","dummy","","dummy","","dummy","","dummy","","dummy",""
+"193","dummy","","dummy","","dummy","","dummy","","dummy",""
+"194","dummy","","dummy","","dummy","","dummy","","dummy",""
+"195","dummy","","dummy","","dummy","","dummy","","dummy",""
+"196","dummy","","dummy","","dummy","","dummy","","dummy",""
+"197","dummy","","dummy","","dummy","","dummy","","dummy",""
+"198","dummy","","dummy","","dummy","","dummy","","dummy",""
+"199","dummy","","dummy","","dummy","","dummy","","dummy",""
+"200","dummy","","dummy","","dummy","","dummy","","dummy",""
+"201","dummy","","dummy","","dummy","","dummy","","dummy",""
+"202","dummy","","dummy","","dummy","","dummy","","dummy",""
+"203","dummy","","dummy","","dummy","","dummy","","dummy",""
+"204","dummy","","dummy","","dummy","","dummy","","dummy",""
+"205","dummy","","dummy","","dummy","","dummy","","dummy",""
+"206","dummy","","dummy","","dummy","","dummy","","dummy",""
+"207","dummy","","dummy","","dummy","","dummy","","dummy",""
+"208","dummy","","dummy","","dummy","","dummy","","dummy",""
+"209","dummy","","dummy","","dummy","","dummy","","dummy",""
+"210","dummy","","dummy","","dummy","","dummy","","dummy",""
+"211","dummy","","dummy","","dummy","","dummy","","dummy",""
+"213","dummy","","dummy","","dummy","","dummy","","dummy",""
+"214","dummy","","dummy","","dummy","","dummy","","dummy",""
+"212","dummy","","dummy","","dummy","","dummy","","dummy",""
+"215","dummy","","dummy","","dummy","","dummy","","dummy",""
+"216","dummy","","dummy","","dummy","","dummy","","dummy",""
+"217","dummy","","dummy","","dummy","","dummy","","dummy",""
+"218","dummy","","dummy","","dummy","","dummy","","dummy",""
+"219","dummy","","dummy","","dummy","","dummy","","dummy",""
+"220","dummy","","dummy","","dummy","","dummy","","dummy",""
+"222","dummy","","dummy","","dummy","","dummy","","dummy",""
+"223","dummy","","dummy","","dummy","","dummy","","dummy",""
+"221","dummy","","dummy","","dummy","","dummy","","dummy",""
+"224","dummy","","dummy","","dummy","","dummy","","dummy",""
+"225","dummy","","dummy","","dummy","","dummy","","dummy",""
+"226","dummy","","dummy","","dummy","","dummy","","dummy",""
+"227","dummy","","dummy","","dummy","","dummy","","dummy",""
+"228","dummy","","dummy","","dummy","","dummy","","dummy",""
+"229","dummy","","dummy","","dummy","","dummy","","dummy",""
+"230","dummy","","dummy","","dummy","","dummy","","dummy",""
+"231","dummy","","dummy","","dummy","","dummy","","dummy",""
+"232","dummy","","dummy","","dummy","","dummy","","dummy",""
+"233","dummy","","dummy","","dummy","","dummy","","dummy",""
+"234","dummy","","dummy","","dummy","","dummy","","dummy",""
+"235","dummy","","dummy","","dummy","","dummy","","dummy",""
+"236","dummy","","dummy","","dummy","","dummy","","dummy",""
+"237","dummy","","dummy","","dummy","","dummy","","dummy",""
+"238","dummy","","dummy","","dummy","","dummy","","dummy",""
+"239","dummy","","dummy","","dummy","","dummy","","dummy",""
+"240","dummy","","dummy","","dummy","","dummy","","dummy",""
+"242","dummy","","dummy","","dummy","","dummy","","dummy",""
+"241","dummy","","dummy","","dummy","","dummy","","dummy",""
+"243","dummy","","dummy","","dummy","","dummy","","dummy",""
+"244","dummy","","dummy","","dummy","","dummy","","dummy",""
+"245","dummy","","dummy","","dummy","","dummy","","dummy",""
+"246","dummy","","dummy","","dummy","","dummy","","dummy",""
+"247","dummy","","dummy","","dummy","","dummy","","dummy",""
+"248","dummy","","dummy","","dummy","","dummy","","dummy",""
+"249","dummy","","dummy","","dummy","","dummy","","dummy",""
+"250","dummy","","dummy","","dummy","","dummy","","dummy",""
+"251","dummy","","dummy","","dummy","","dummy","","dummy",""
+"252","dummy","","dummy","","dummy","","dummy","","dummy",""
+"253","dummy","","dummy","","dummy","","dummy","","dummy",""
+"254","dummy","","dummy","","dummy","","dummy","","dummy",""
+"255","dummy","","dummy","","dummy","","dummy","","dummy",""
+"256","dummy","","dummy","","dummy","","dummy","","dummy",""
+"257","dummy","","dummy","","dummy","","dummy","","dummy",""
+"258","dummy","","dummy","","dummy","","dummy","","dummy",""
+"259","dummy","","dummy","","dummy","","dummy","","dummy",""
+"260","dummy","","dummy","","dummy","","dummy","","dummy",""
+"261","dummy","","dummy","","dummy","","dummy","","dummy",""
+"262","dummy","","dummy","","dummy","","dummy","","dummy",""
+"263","dummy","","dummy","","dummy","","dummy","","dummy",""
+"264","dummy","","dummy","","dummy","","dummy","","dummy",""
+"265","dummy","","dummy","","dummy","","dummy","","dummy",""
+"266","dummy","","dummy","","dummy","","dummy","","dummy",""
+"267","dummy","","dummy","","dummy","","dummy","","dummy",""
+"269","dummy","","dummy","","dummy","","dummy","","dummy",""
+"268","dummy","","dummy","","dummy","","dummy","","dummy",""
+"270","dummy","","dummy","","dummy","","dummy","","dummy",""
+"271","dummy","","dummy","","dummy","","dummy","","dummy",""
+"272","dummy","","dummy","","dummy","","dummy","","dummy",""
+"273","dummy","","dummy","","dummy","","dummy","","dummy",""
+"274","dummy","","dummy","","dummy","","dummy","","dummy",""
+"275","dummy","","dummy","","dummy","","dummy","","dummy",""
+"276","dummy","","dummy","","dummy","","dummy","","dummy",""
+"277","dummy","","dummy","","dummy","","dummy","","dummy",""
+"278","dummy","","dummy","","dummy","","dummy","","dummy",""
+"279","dummy","","dummy","","dummy","","dummy","","dummy",""
+"280","dummy","","dummy","","dummy","","dummy","","dummy",""
+"282","dummy","","dummy","","dummy","","dummy","","dummy",""
+"281","dummy","","dummy","","dummy","","dummy","","dummy",""
+"283","dummy","","dummy","","dummy","","dummy","","dummy",""
+"284","dummy","","dummy","","dummy","","dummy","","dummy",""
+"285","dummy","","dummy","","dummy","","dummy","","dummy",""
+"286","dummy","","dummy","","dummy","","dummy","","dummy",""
+"287","dummy","","dummy","","dummy","","dummy","","dummy",""
+"288","dummy","","dummy","","dummy","","dummy","","dummy",""
+"289","dummy","","dummy","","dummy","","dummy","","dummy",""
+"290","dummy","","dummy","","dummy","","dummy","","dummy",""
+"291","dummy","","dummy","","dummy","","dummy","","dummy",""
+"292","dummy","","dummy","","dummy","","dummy","","dummy",""
+"293","dummy","","dummy","","dummy","","dummy","","dummy",""
+"294","dummy","","dummy","","dummy","","dummy","","dummy",""
+"295","dummy","","dummy","","dummy","","dummy","","dummy",""
+"297","dummy","","dummy","","dummy","","dummy","","dummy",""
+"296","dummy","","dummy","","dummy","","dummy","","dummy",""
+"298","dummy","","dummy","","dummy","","dummy","","dummy",""
+"299","dummy","","dummy","","dummy","","dummy","","dummy",""
+"300","dummy","","dummy","","dummy","","dummy","","dummy",""
+"301","dummy","","dummy","","dummy","","dummy","","dummy",""
+"303","dummy","","dummy","","dummy","","dummy","","dummy",""
+"302","dummy","","dummy","","dummy","","dummy","","dummy",""
+"304","dummy","","dummy","","dummy","","dummy","","dummy",""
+"305","dummy","","dummy","","dummy","","dummy","","dummy",""
+"306","dummy","","dummy","","dummy","","dummy","","dummy",""
+"307","dummy","","dummy","","dummy","","dummy","","dummy",""
+"308","dummy","","dummy","","dummy","","dummy","","dummy",""
+"310","dummy","","dummy","","dummy","","dummy","","dummy",""
+"309","dummy","","dummy","","dummy","","dummy","","dummy",""
+"312","dummy","","dummy","","dummy","","dummy","","dummy",""
+"313","dummy","","dummy","","dummy","","dummy","","dummy",""
+"314","dummy","","dummy","","dummy","","dummy","","dummy",""
+"315","dummy","","dummy","","dummy","","dummy","","dummy",""
+"316","dummy","","dummy","","dummy","","dummy","","dummy",""
+"317","dummy","","dummy","","dummy","","dummy","","dummy",""
+"318","dummy","","dummy","","dummy","","dummy","","dummy",""
+"319","dummy","","dummy","","dummy","","dummy","","dummy",""
+"320","dummy","","dummy","","dummy","","dummy","","dummy",""
+"321","dummy","","dummy","","dummy","","dummy","","dummy",""
+"322","dummy","","dummy","","dummy","","dummy","","dummy",""
+"323","dummy","","dummy","","dummy","","dummy","","dummy",""
+"324","dummy","","dummy","","dummy","","dummy","","dummy",""
+"325","dummy","","dummy","","dummy","","dummy","","dummy",""
+"326","dummy","","dummy","","dummy","","dummy","","dummy",""
+"327","dummy","","dummy","","dummy","","dummy","","dummy",""
+"329","dummy","","dummy","","dummy","","dummy","","dummy",""
+"328","dummy","","dummy","","dummy","","dummy","","dummy",""
+"330","dummy","","dummy","","dummy","","dummy","","dummy",""
+"331","dummy","","dummy","","dummy","","dummy","","dummy",""
+"332","dummy","","dummy","","dummy","","dummy","","dummy",""
+"333","dummy","","dummy","","dummy","","dummy","","dummy",""
+"334","dummy","","dummy","","dummy","","dummy","","dummy",""
+"335","dummy","","dummy","","dummy","","dummy","","dummy",""
+"336","dummy","","dummy","","dummy","","dummy","","dummy",""
+"337","dummy","","dummy","","dummy","","dummy","","dummy",""
+"338","dummy","","dummy","","dummy","","dummy","","dummy",""
+"339","dummy","","dummy","","dummy","","dummy","","dummy",""
+"340","dummy","","dummy","","dummy","","dummy","","dummy",""
+"342","dummy","","dummy","","dummy","","dummy","","dummy",""
+"343","dummy","","dummy","","dummy","","dummy","","dummy",""
+"344","dummy","","dummy","","dummy","","dummy","","dummy",""
+"345","dummy","","dummy","","dummy","","dummy","","dummy",""
+"346","dummy","","dummy","","dummy","","dummy","","dummy",""
+"347","dummy","","dummy","","dummy","","dummy","","dummy",""
+"348","dummy","","dummy","","dummy","","dummy","","dummy",""
+"349","dummy","","dummy","","dummy","","dummy","","dummy",""
+"350","dummy","","dummy","","dummy","","dummy","","dummy",""
+"351","dummy","","dummy","","dummy","","dummy","","dummy",""
+"352","dummy","","dummy","","dummy","","dummy","","dummy",""
+"353","dummy","","dummy","","dummy","","dummy","","dummy",""
+"354","dummy","","dummy","","dummy","","dummy","","dummy",""
+"355","dummy","","dummy","","dummy","","dummy","","dummy",""
+"356","dummy","","dummy","","dummy","","dummy","","dummy",""
+"357","dummy","","dummy","","dummy","","dummy","","dummy",""
+"358","dummy","","dummy","","dummy","","dummy","","dummy",""
+"359","dummy","","dummy","","dummy","","dummy","","dummy",""
+"360","dummy","","dummy","","dummy","","dummy","","dummy",""
+"361","dummy","","dummy","","dummy","","dummy","","dummy",""
+"362","dummy","","dummy","","dummy","","dummy","","dummy",""
+"363","dummy","","dummy","","dummy","","dummy","","dummy",""
+"364","dummy","","dummy","","dummy","","dummy","","dummy",""
+"365","dummy","","dummy","","dummy","","dummy","","dummy",""
+"366","dummy","","dummy","","dummy","","dummy","","dummy",""
+"367","dummy","","dummy","","dummy","","dummy","","dummy",""
+"368","dummy","","dummy","","dummy","","dummy","","dummy",""
+"369","dummy","","dummy","","dummy","","dummy","","dummy",""
+"370","dummy","","dummy","","dummy","","dummy","","dummy",""
+"371","dummy","","dummy","","dummy","","dummy","","dummy",""
+"372","dummy","","dummy","","dummy","","dummy","","dummy",""
+"373","dummy","","dummy","","dummy","","dummy","","dummy",""
+"374","dummy","","dummy","","dummy","","dummy","","dummy",""
+"375","dummy","","dummy","","dummy","","dummy","","dummy",""
+"376","dummy","","dummy","","dummy","","dummy","","dummy",""
+"377","dummy","","dummy","","dummy","","dummy","","dummy",""
+"378","dummy","","dummy","","dummy","","dummy","","dummy",""
+"379","dummy","","dummy","","dummy","","dummy","","dummy",""
+"380","dummy","","dummy","","dummy","","dummy","","dummy",""
+"381","dummy","","dummy","","dummy","","dummy","","dummy",""
+"382","dummy","","dummy","","dummy","","dummy","","dummy",""
+"383","dummy","","dummy","","dummy","","dummy","","dummy",""
+"384","dummy","","dummy","","dummy","","dummy","","dummy",""
+"385","dummy","","dummy","","dummy","","dummy","","dummy",""
+"386","dummy","","dummy","","dummy","","dummy","","dummy",""
+"387","dummy","","dummy","","dummy","","dummy","","dummy",""
+"388","dummy","","dummy","","dummy","","dummy","","dummy",""
+"389","dummy","","dummy","","dummy","","dummy","","dummy",""
+"390","dummy","","dummy","","dummy","","dummy","","dummy",""
+"391","dummy","","dummy","","dummy","","dummy","","dummy",""
+"392","dummy","","dummy","","dummy","","dummy","","dummy",""
+"393","dummy","","dummy","","dummy","","dummy","","dummy",""
+"394","dummy","","dummy","","dummy","","dummy","","dummy",""
+"395","dummy","","dummy","","dummy","","dummy","","dummy",""
+"396","dummy","","dummy","","dummy","","dummy","","dummy",""
+"397","dummy","","dummy","","dummy","","dummy","","dummy",""
+"398","dummy","","dummy","","dummy","","dummy","","dummy",""
+"399","dummy","","dummy","","dummy","","dummy","","dummy",""
+"400","dummy","","dummy","","dummy","","dummy","","dummy",""
+"401","dummy","","dummy","","dummy","","dummy","","dummy",""
+"402","dummy","","dummy","","dummy","","dummy","","dummy",""
+"403","dummy","","dummy","","dummy","","dummy","","dummy",""
+"404","dummy","","dummy","","dummy","","dummy","","dummy",""
+"405","dummy","","dummy","","dummy","","dummy","","dummy",""
+"406","dummy","","dummy","","dummy","","dummy","","dummy",""
+"407","dummy","","dummy","","dummy","","dummy","","dummy",""
+"408","dummy","","dummy","","dummy","","dummy","","dummy",""
+"409","dummy","","dummy","","dummy","","dummy","","dummy",""
+"410","dummy","","dummy","","dummy","","dummy","","dummy",""
+"411","dummy","","dummy","","dummy","","dummy","","dummy",""
+"412","dummy","","dummy","","dummy","","dummy","","dummy",""
+"341","dummy","","dummy","","dummy","","dummy","","dummy",""
+"413","dummy","","dummy","","dummy","","dummy","","dummy",""
+"414","dummy","","dummy","","dummy","","dummy","","dummy",""
+"415","dummy","","dummy","","dummy","","dummy","","dummy",""
+"416","dummy","","dummy","","dummy","","dummy","","dummy",""
+"417","dummy","","dummy","","dummy","","dummy","","dummy",""
+"418","dummy","","dummy","","dummy","","dummy","","dummy",""
+"419","dummy","","dummy","","dummy","","dummy","","dummy",""
+"420","dummy","","dummy","","dummy","","dummy","","dummy",""
+"421","dummy","","dummy","","dummy","","dummy","","dummy",""
+"422","dummy","","dummy","","dummy","","dummy","","dummy",""
+"423","dummy","","dummy","","dummy","","dummy","","dummy",""
+"424","dummy","","dummy","","dummy","","dummy","","dummy",""
+"425","dummy","","dummy","","dummy","","dummy","","dummy",""
+"426","dummy","","dummy","","dummy","","dummy","","dummy",""
+"427","dummy","","dummy","","dummy","","dummy","","dummy",""
+"428","dummy","","dummy","","dummy","","dummy","","dummy",""
+"429","dummy","","dummy","","dummy","","dummy","","dummy",""
+"430","dummy","","dummy","","dummy","","dummy","","dummy",""
+"431","dummy","","dummy","","dummy","","dummy","","dummy",""
+"432","dummy","","dummy","","dummy","","dummy","","dummy",""
+"433","dummy","","dummy","","dummy","","dummy","","dummy",""
+"434","dummy","","dummy","","dummy","","dummy","","dummy",""
+"435","dummy","","dummy","","dummy","","dummy","","dummy",""
+"436","dummy","","dummy","","dummy","","dummy","","dummy",""
+"437","dummy","","dummy","","dummy","","dummy","","dummy",""
+"438","dummy","","dummy","","dummy","","dummy","","dummy",""
+"439","dummy","","dummy","","dummy","","dummy","","dummy",""
+"440","dummy","","dummy","","dummy","","dummy","","dummy",""
+"441","dummy","","dummy","","dummy","","dummy","","dummy",""
+"442","dummy","","dummy","","dummy","","dummy","","dummy",""
+"443","dummy","","dummy","","dummy","","dummy","","dummy",""
+"444","dummy","","dummy","","dummy","","dummy","","dummy",""
+"445","dummy","","dummy","","dummy","","dummy","","dummy",""
+"446","dummy","","dummy","","dummy","","dummy","","dummy",""
+"447","dummy","","dummy","","dummy","","dummy","","dummy",""
+"448","dummy","","dummy","","dummy","","dummy","","dummy",""
+"449","dummy","","dummy","","dummy","","dummy","","dummy",""
+"450","dummy","","dummy","","dummy","","dummy","","dummy",""
+"451","dummy","","dummy","","dummy","","dummy","","dummy",""
+"452","dummy","","dummy","","dummy","","dummy","","dummy",""
+"454","dummy","","dummy","","dummy","","dummy","","dummy",""
+"453","dummy","","dummy","","dummy","","dummy","","dummy",""
+"456","dummy","","dummy","","dummy","","dummy","","dummy",""
+"455","dummy","","dummy","","dummy","","dummy","","dummy",""
+"457","dummy","","dummy","","dummy","","dummy","","dummy",""
+"458","dummy","","dummy","","dummy","","dummy","","dummy",""
+"459","dummy","","dummy","","dummy","","dummy","","dummy",""
+"460","dummy","","dummy","","dummy","","dummy","","dummy",""
+"461","dummy","","dummy","","dummy","","dummy","","dummy",""
+"462","dummy","","dummy","","dummy","","dummy","","dummy",""
+"463","dummy","","dummy","","dummy","","dummy","","dummy",""
+"464","dummy","","dummy","","dummy","","dummy","","dummy",""
+"465","dummy","","dummy","","dummy","","dummy","","dummy",""
+"466","dummy","","dummy","","dummy","","dummy","","dummy",""
+"467","dummy","","dummy","","dummy","","dummy","","dummy",""
+"468","dummy","","dummy","","dummy","","dummy","","dummy",""
+"469","dummy","","dummy","","dummy","","dummy","","dummy",""
+"470","dummy","","dummy","","dummy","","dummy","","dummy",""
+"471","dummy","","dummy","","dummy","","dummy","","dummy",""
+"472","dummy","","dummy","","dummy","","dummy","","dummy",""
+"473","dummy","","dummy","","dummy","","dummy","","dummy",""
+"474","dummy","","dummy","","dummy","","dummy","","dummy",""
+"475","dummy","","dummy","","dummy","","dummy","","dummy",""
+"476","dummy","","dummy","","dummy","","dummy","","dummy",""
+"477","dummy","","dummy","","dummy","","dummy","","dummy",""
+"478","dummy","","dummy","","dummy","","dummy","","dummy",""
+"479","dummy","","dummy","","dummy","","dummy","","dummy",""
+"480","dummy","","dummy","","dummy","","dummy","","dummy",""
+"481","dummy","","dummy","","dummy","","dummy","","dummy",""
+"482","dummy","","dummy","","dummy","","dummy","","dummy",""
+"483","dummy","","dummy","","dummy","","dummy","","dummy",""
+"484","dummy","","dummy","","dummy","","dummy","","dummy",""
+"485","dummy","","dummy","","dummy","","dummy","","dummy",""
+"486","dummy","","dummy","","dummy","","dummy","","dummy",""
+"487","dummy","","dummy","","dummy","","dummy","","dummy",""
+"488","dummy","","dummy","","dummy","","dummy","","dummy",""
+"489","dummy","","dummy","","dummy","","dummy","","dummy",""
+"490","dummy","","dummy","","dummy","","dummy","","dummy",""
+"491","dummy","","dummy","","dummy","","dummy","","dummy",""
+"492","dummy","","dummy","","dummy","","dummy","","dummy",""
+"493","dummy","","dummy","","dummy","","dummy","","dummy",""
+"494","dummy","","dummy","","dummy","","dummy","","dummy",""
+"495","dummy","","dummy","","dummy","","dummy","","dummy",""
+"496","dummy","","dummy","","dummy","","dummy","","dummy",""
+"497","dummy","","dummy","","dummy","","dummy","","dummy",""
+"498","dummy","","dummy","","dummy","","dummy","","dummy",""
+"500","dummy","","dummy","","dummy","","dummy","","dummy",""
+"499","dummy","","dummy","","dummy","","dummy","","dummy",""
+"311","dummy","","dummy","","dummy","","dummy","","dummy",""
[metamodel] 02/08: com.opencsv.CSVParser doesn't provide thread
safety, so we need to make sure it is accessed in a thread-safe manner.
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit b91cbedd3dc0e7333e5056960de9a5f92c8dffcc
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Wed Jun 12 10:31:20 2019 +0200
com.opencsv.CSVParser doesn't provide thread safety, so we need to make sure it is accessed in a thread-safe manner.
---
csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
index fe9fda5..64ff013 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/SingleLineCsvRow.java
@@ -29,6 +29,8 @@ import org.apache.metamodel.schema.Column;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.opencsv.ICSVParser;
+
/**
* Specialized row implementation for single-line CSV values
*/
@@ -99,7 +101,10 @@ final class SingleLineCsvRow extends AbstractRow {
private String[] parseLine() {
try {
- return _dataSet.getCsvParser().parseLine(_line);
+ final ICSVParser csvParser = _dataSet.getCsvParser();
+ synchronized (csvParser) {
+ return csvParser.parseLine(_line);
+ }
} catch (IOException e) {
if (_failOnInconsistentRowLength) {
throw new MetaModelException("Failed to parse CSV line no. " + _rowNumber + ": " + _line, e);
[metamodel] 05/08: Made fields private.
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit fa27097617297f72054d32b87a909b177b2510d5
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Mon Jun 17 08:51:20 2019 +0200
Made fields private.
---
csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java b/csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java
index d238098..ca71219 100644
--- a/csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java
+++ b/csv/src/main/java/org/apache/metamodel/csv/CsvParserBuilder.java
@@ -23,8 +23,8 @@ import com.opencsv.ICSVParser;
import com.opencsv.RFC4180ParserBuilder;
class CsvParserBuilder {
- final CSVParserBuilder _csvParserBuilder;
- final RFC4180ParserBuilder _rfc4180ParserBuilder;
+ private final CSVParserBuilder _csvParserBuilder;
+ private final RFC4180ParserBuilder _rfc4180ParserBuilder;
CsvParserBuilder(final CsvConfiguration csvConfiguration) {
if (csvConfiguration.getEscapeChar() == csvConfiguration.getQuoteChar()) {
[metamodel] 07/08: Changes to prepare for HI specific release
Posted by ar...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
arjansh pushed a commit to annotated tag MetaModel-5.2.1-HI1
in repository https://gitbox.apache.org/repos/asf/metamodel.git
commit 345bc47546486eb3c1046856863997163c7e08d9
Author: Arjan Seijkens <a....@quadient.com>
AuthorDate: Thu Jun 20 16:17:58 2019 +0200
Changes to prepare for HI specific release
---
.../apache/metamodel/csv/SingleLineCsvRowTest.java | 2 +-
pom.xml | 20 +++++++++++---------
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
index 6f36d21..e57a507 100644
--- a/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
+++ b/csv/src/test/java/org/apache/metamodel/csv/SingleLineCsvRowTest.java
@@ -74,7 +74,7 @@ public class SingleLineCsvRowTest {
try (final DataSet dataSet = new SingleLineCsvDataSet(FileHelper
.getBufferedReader(new FileResource("src/test/resources/empty_fields.csv").read(),
- FileHelper.UTF_8_CHARSET), columns, null, 11, new CsvConfiguration())) {
+ FileHelper.UTF_8_ENCODING), columns, null, 11, new CsvConfiguration())) {
dataSet.toRows().parallelStream().forEach(row -> {
for (int i = 0; i < 5; i++) {
assertEquals("", row.getValue(i));
diff --git a/pom.xml b/pom.xml
index 6b4a65c..e061bfd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,9 +40,9 @@ under the License.
<version>21</version>
</parent>
<scm>
- <url>https://git-wip-us.apache.org/repos/asf?p=metamodel.git</url>
- <connection>scm:git:http://git-wip-us.apache.org/repos/asf/metamodel.git</connection>
- <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/metamodel.git</developerConnection>
+ <url>https://github.com/arjansh/metamodel.git</url>
+ <connection>scm:git:https://github.com/arjansh/metamodel.git</connection>
+ <developerConnection>scm:git:https://github.com/arjansh/metamodel.git</developerConnection>
<tag>HEAD</tag>
</scm>
<groupId>org.apache.metamodel</groupId>
@@ -175,14 +175,15 @@ under the License.
</licenses>
<distributionManagement>
<repository>
- <id>apache.releases.https</id>
- <name>Apache Release Distribution Repository</name>
- <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
+ <id>releases</id>
+ <name>internal releases</name>
+ <url>http://repo.humaninference.com/content/repositories/releases</url>
</repository>
<snapshotRepository>
- <id>apache.snapshots.https</id>
- <name>Apache Development Snapshot Repository</name>
- <url>https://repository.apache.org/content/repositories/snapshots</url>
+ <id>snapshots</id>
+ <name>internal snapshots</name>
+ <url>http://repo.humaninference.com/content/repositories/snapshots</url>
+ <uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
@@ -229,6 +230,7 @@ under the License.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
+ <version>2.5.2</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<goals>deploy</goals>