You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2016/06/25 17:39:41 UTC
metamodel git commit: Fixes #105
Repository: metamodel
Updated Branches:
refs/heads/master d79c0cefc -> b4bfc5cf4
Fixes #105
Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/b4bfc5cf
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/b4bfc5cf
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/b4bfc5cf
Branch: refs/heads/master
Commit: b4bfc5cf418eb1441bd1c76fc4798230cc9af333
Parents: d79c0ce
Author: Kasper S�rensen <i....@gmail.com>
Authored: Sat Jun 25 10:39:14 2016 -0700
Committer: Kasper S�rensen <i....@gmail.com>
Committed: Sat Jun 25 10:39:14 2016 -0700
----------------------------------------------------------------------
.../metamodel/fixedwidth/FixedWidthReader.java | 20 ++++---
.../fixedwidth/FixedWidthReaderTest.java | 57 ++++++++++++++++++++
.../apache/metamodel/DataContextFactory.java | 15 ++++++
3 files changed, 86 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/metamodel/blob/b4bfc5cf/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthReader.java
----------------------------------------------------------------------
diff --git a/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthReader.java b/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthReader.java
index d740cff..40dc145 100644
--- a/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthReader.java
+++ b/fixedwidth/src/main/java/org/apache/metamodel/fixedwidth/FixedWidthReader.java
@@ -30,7 +30,7 @@ import java.util.List;
/**
* Reader capable of separating values based on a fixed width setting.
*/
-final class FixedWidthReader implements Closeable {
+final public class FixedWidthReader implements Closeable {
private final BufferedReader _reader;
private final int _fixedValueWidth;
@@ -82,6 +82,7 @@ final class FixedWidthReader implements Closeable {
this.expectedLineLength = expectedLineLength;
}
+
/***
* Reads the next line in the file.
*
@@ -92,10 +93,20 @@ final class FixedWidthReader implements Closeable {
* if an exception occurs while reading the file.
*/
public String[] readLine() throws IllegalStateException {
+ String line;
+ try {
+ line = _reader.readLine();
+ return readLine(line);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ public String[] readLine(String line) throws IOException {
+
- try {
final List<String> values = new ArrayList<String>();
- final String line = _reader.readLine();
+
if (line == null) {
return null;
}
@@ -173,9 +184,6 @@ final class FixedWidthReader implements Closeable {
}
return result;
- } catch (IOException e) {
- throw new IllegalStateException(e);
- }
}
@Override
http://git-wip-us.apache.org/repos/asf/metamodel/blob/b4bfc5cf/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthReaderTest.java
----------------------------------------------------------------------
diff --git a/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthReaderTest.java b/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthReaderTest.java
new file mode 100644
index 0000000..dd45900
--- /dev/null
+++ b/fixedwidth/src/test/java/org/apache/metamodel/fixedwidth/FixedWidthReaderTest.java
@@ -0,0 +1,57 @@
+/**
+ * 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.fixedwidth;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Arrays;
+
+import org.junit.Test;
+
+public class FixedWidthReaderTest {
+
+ @Test
+ public void testBufferedReader() throws IOException {
+ final File file = new File("src/test/resources/example_simple1.txt");
+ final BufferedReader reader = new BufferedReader(new FileReader(file));
+ int[] widths = new int[] { 8, 9 };
+ try (final FixedWidthReader fixedWidthReader = new FixedWidthReader(reader, widths, false)) {
+ final String[] line1 = fixedWidthReader.readLine();
+ assertEquals("[greeting, greeter]", Arrays.asList(line1).toString());
+ final String[] line2 = fixedWidthReader.readLine();
+ assertEquals("[hello, world]", Arrays.asList(line2).toString());
+ final String[] line3 = fixedWidthReader.readLine();
+ assertEquals("[hi, there]", Arrays.asList(line3).toString());
+ }
+ }
+
+ @Test
+ public void testNoBufferReader() throws IOException {
+ int[] widths = new int[] { 8, 9 };
+ final String lineToBeRead = "greeting greeter ";
+ @SuppressWarnings("resource")
+ final FixedWidthReader fixedWidthReader = new FixedWidthReader(null, widths, false);
+ final String[] line = fixedWidthReader.readLine(lineToBeRead);
+ assertEquals("[greeting, greeter]", Arrays.asList(line).toString());
+ }
+}
http://git-wip-us.apache.org/repos/asf/metamodel/blob/b4bfc5cf/full/src/main/java/org/apache/metamodel/DataContextFactory.java
----------------------------------------------------------------------
diff --git a/full/src/main/java/org/apache/metamodel/DataContextFactory.java b/full/src/main/java/org/apache/metamodel/DataContextFactory.java
index 0bf3618..b4bf3f6 100644
--- a/full/src/main/java/org/apache/metamodel/DataContextFactory.java
+++ b/full/src/main/java/org/apache/metamodel/DataContextFactory.java
@@ -50,6 +50,7 @@ import org.apache.metamodel.salesforce.SalesforceDataContext;
import org.apache.metamodel.schema.TableType;
import org.apache.metamodel.sugarcrm.SugarCrmDataContext;
import org.apache.metamodel.util.FileHelper;
+import org.apache.metamodel.util.Resource;
import org.apache.metamodel.util.SimpleTableDef;
import org.apache.metamodel.xml.XmlDomDataContext;
import org.ektorp.http.StdHttpClient.Builder;
@@ -291,6 +292,20 @@ public class DataContextFactory {
FixedWidthDataContext dc = new FixedWidthDataContext(file, configuration);
return dc;
}
+ /**
+ * Creates a DataContext based on a fixed width file.
+ *
+ * @param file
+ * the file to read from.
+ * @param configuration
+ * the fixed width configuration to use
+ * @return a DataContext object that matches the request
+ */
+ public static DataContext createFixedWidthDataContext(Resource resource, FixedWidthConfiguration configuration) {
+ final FixedWidthDataContext dc = new FixedWidthDataContext(resource, configuration);
+ return dc;
+ }
+
/**
* Creates a DataContext based on a fixed width file.