embulk-filter-expand_json 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1eb2c8defd0d9ac7920f13cdde2f95877f7219e2
4
- data.tar.gz: 5cd7424ed6d9863c5572a4b07e3fa83097986ed2
3
+ metadata.gz: ab391ec7a08e2c564a88ab1984b2331df266d360
4
+ data.tar.gz: 34c7c68b0ebb842a0b7e50866ba07f05a3565036
5
5
  SHA512:
6
- metadata.gz: 46c382f407a962967f65d08a33758380307f2f2403991ad77dded4a68df3e0e88e15a67e0b71b67e7b5c4d76a5a2dc2aa0833ae76dcf078006106b99b6dc0734
7
- data.tar.gz: db059276a090fdbddf43ddec272c7cea372aeed6c60cb0b6f00f48084fdc820c370f585bc4abeeedd14662b1a90f1d7c51209510eaa3d246ea21cd484162108e
6
+ metadata.gz: 50363ce3c2f5ba54554f4e8aa31f7d9a7ac7a1f58588e0004e6210d4cd3dddf2c8197517924dfb7de99d19a9704c969cad75246a791304c2d2a72fac75d6a974
7
+ data.tar.gz: 668b2b73ba967ca41b27902456290ead55fd4678ddfc2ebe4758448674b214a78a5beae3886fd46e07691720c0beff26a7165404713ca8b2ed9fb0676cc2e589
data/.travis.yml CHANGED
@@ -1,3 +1,4 @@
1
+ dist: precise
1
2
  language: java
2
3
  jdk:
3
4
  - openjdk7
@@ -6,4 +7,8 @@ jdk:
6
7
  script:
7
8
  - ./gradlew test
8
9
  after_success:
9
- - ./gradlew jacocoTestReport coveralls
10
+ - ./gradlew jacocoTestReport coveralls
11
+ addons:
12
+ hosts:
13
+ - me
14
+ hostname: me
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 0.2.1 (2017-09-12)
2
+ ==================
3
+ - [Enhancement] Support type conversion from floating point numbers to integers
4
+ - https://github.com/civitaspo/embulk-filter-expand_json/pull/33
5
+
1
6
  0.2.0 (2017-07-14)
2
7
  ==================
3
8
  - [Incompatible Change]: Remove `time_zone` option, use `default_timezone` instead and column-based timezone.
data/README.md CHANGED
@@ -17,6 +17,7 @@ expand columns having json into multiple columns
17
17
  - **name**: name of the column. you can define [JsonPath](http://goessner.net/articles/JsonPath/) style.
18
18
  - **type**: type of the column (see below)
19
19
  - **format**: format of the timestamp if type is timestamp
20
+ - **timezone**: Time zone of each timestamp columns if values don’t include time zone description (`UTC` by default)
20
21
  - **keep_expanding_json_column**: Not remove the expanding json column from input schema if it's true (false by default)
21
22
  - **default_timezone**: Time zone of timestamp columns if values don’t include time zone description (`UTC` by default)
22
23
  - **stop_on_invalid_record**: Stop bulk load transaction if an invalid record is included (false by default)
data/build.gradle CHANGED
@@ -15,7 +15,7 @@ configurations {
15
15
  provided
16
16
  }
17
17
 
18
- version = "0.2.0"
18
+ version = "0.2.1"
19
19
  sourceCompatibility = 1.7
20
20
  targetCompatibility = 1.7
21
21
 
Binary file
@@ -1,6 +1,6 @@
1
- #Wed Jan 13 12:41:02 JST 2016
1
+ #Sun Jan 08 00:35:58 PST 2017
2
2
  distributionBase=GRADLE_USER_HOME
3
3
  distributionPath=wrapper/dists
4
4
  zipStoreBase=GRADLE_USER_HOME
5
5
  zipStorePath=wrapper/dists
6
- distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip
6
+ distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-bin.zip
@@ -329,7 +329,13 @@ public class FilteredPageOutput
329
329
  pageBuilder.setLong(expandedJsonColumn.getColumn(), Long.parseLong(finalValue));
330
330
  }
331
331
  catch (NumberFormatException e) {
332
- throw new JsonValueInvalidException(String.format("Failed to parse '%s' as long", finalValue), e);
332
+ // ad-hoc workaround for exponential notation
333
+ try {
334
+ pageBuilder.setLong(expandedJsonColumn.getColumn(), (long) Double.parseDouble(finalValue));
335
+ }
336
+ catch (NumberFormatException e2) {
337
+ throw new JsonValueInvalidException(String.format("Failed to parse '%s' as long", finalValue), e);
338
+ }
333
339
  }
334
340
  }
335
341
  else if (Types.TIMESTAMP.equals(expandedJsonColumn.getColumn().getType())) {
@@ -966,6 +966,55 @@ public class TestExpandJsonFilterPlugin
966
966
  });
967
967
  }
968
968
 
969
+ @Test
970
+ public void testParseNumbersInExponentialNotation()
971
+ {
972
+ final String configYaml = "" +
973
+ "type: expand_json\n" +
974
+ "json_column_name: _c1\n" +
975
+ "root: $.\n" +
976
+ "expanded_columns:\n" +
977
+ " - {name: _j0, type: double}\n" +
978
+ " - {name: _j1, type: long}\n";
979
+ ConfigSource config = getConfigFromYaml(configYaml);
980
+ final Schema schema = schema("_c1", STRING);
981
+
982
+ expandJsonFilterPlugin.transaction(config, schema, new Control()
983
+ {
984
+ @Override
985
+ public void run(TaskSource taskSource, Schema outputSchema)
986
+ {
987
+ MockPageOutput mockPageOutput = new MockPageOutput();
988
+
989
+ String doubleFloatingPoint = "-1.234e-5";
990
+ double doubleFixedPoint = -0.00001234; // Use in Asserting.
991
+ String longFloatingPoint = "12345e3";
992
+ long longFixedPoint = 12_345_000L; // Use in Asserting.
993
+
994
+ String data = String.format(
995
+ "{\"_j0\":%s, \"_j1\":%s}",
996
+ doubleFloatingPoint,
997
+ longFloatingPoint);
998
+
999
+ try (PageOutput pageOutput = expandJsonFilterPlugin.open(taskSource, schema, outputSchema, mockPageOutput)) {
1000
+ for (Page page : PageTestUtils.buildPage(runtime.getBufferAllocator(), schema, data, c1Data)) {
1001
+ pageOutput.add(page);
1002
+ }
1003
+
1004
+ pageOutput.finish();
1005
+ }
1006
+
1007
+ PageReader pageReader = new PageReader(outputSchema);
1008
+
1009
+ for (Page page : mockPageOutput.pages) {
1010
+ pageReader.setPage(page);
1011
+ assertEquals(doubleFixedPoint, pageReader.getDouble(outputSchema.getColumn(0)), 0.0);
1012
+ assertEquals(longFixedPoint, pageReader.getLong(outputSchema.getColumn(1)));
1013
+ }
1014
+ }
1015
+ });
1016
+ }
1017
+
969
1018
  private static Schema schema(Object... nameAndTypes)
970
1019
  {
971
1020
  Schema.Builder builder = Schema.builder();
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-filter-expand_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Civitaspo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-14 00:00:00.000000000 Z
11
+ date: 2017-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -65,7 +65,7 @@ files:
65
65
  - src/test/java/org/embulk/filter/expand_json/TestExpandJsonFilterPlugin.java
66
66
  - classpath/accessors-smart-1.2.jar
67
67
  - classpath/asm-5.0.4.jar
68
- - classpath/embulk-filter-expand_json-0.2.0.jar
68
+ - classpath/embulk-filter-expand_json-0.2.1.jar
69
69
  - classpath/json-path-2.4.0.jar
70
70
  - classpath/json-smart-2.3.jar
71
71
  - classpath/slf4j-api-1.7.25.jar