embulk-filter-column 0.3.1 → 0.4.0

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: c666e71247649e05789afed9c460ac1699a459cb
4
- data.tar.gz: ab41a4b1b49b5b46f1c50630f460cdf6be4fb1cc
3
+ metadata.gz: 572e638f806833f390196e60aa5791c0f23aff76
4
+ data.tar.gz: db719c3a30d31e86bea2f75afaa09849c92ec631
5
5
  SHA512:
6
- metadata.gz: 4d56b7c8a9cb017c337b2b84649db0184629a176b259d5fec0f0db72ba7eaa5d24284a6146e30c4612a849b137e673c040b1e42769c63da4a951aed09252b749
7
- data.tar.gz: 6a4e0c0db4a8462c9ff9612afa2fd51e6a2eab528b2318401b1d4ff15cc459c38bb94dbca501fbbe82002dca9feb74ea1b6bbd71259021a45fb7654f2b707aae
6
+ metadata.gz: 6a4c06e967fc14763e386326166ae4b0ae9247fca8a158dc41e25a9bb430e26430d70fb2603abd29fedfb54f822a2fac152078628f62eb3fe816bb31a7882d45
7
+ data.tar.gz: edb08b9d1b7fc6e53a41d86ab82a61a7f848737bf37f6baa0ec6048c5475c5040db4f165fb5306a21f4fef6e69b7afdce4f78855381c1c5b48e5aaec4fa3b303
data/.gitignore CHANGED
@@ -9,3 +9,4 @@ build/
9
9
  *.csv
10
10
  .tags
11
11
  .ruby-version
12
+ *.iml
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # 0.4.0 (2016-02-01)
2
+
3
+ Enhancements:
4
+
5
+ * Support JSON type (thanks to joker1007)
6
+
7
+ Changes:
8
+
9
+ * Requires embulk >= 0.8.1
10
+
1
11
  # 0.3.1 (2015-11-09)
2
12
 
3
13
  Enhancements:
data/README.md CHANGED
@@ -128,6 +128,12 @@ Run test:
128
128
  $ ./gradlew test
129
129
  ```
130
130
 
131
+ Run checkstyle:
132
+
133
+ ```
134
+ $ ./gradlew check
135
+ ```
136
+
131
137
  Release gem:
132
138
 
133
139
  ```
data/build.gradle CHANGED
@@ -2,6 +2,7 @@ plugins {
2
2
  id "com.jfrog.bintray" version "1.1"
3
3
  id "com.github.jruby-gradle.base" version "0.1.5"
4
4
  id "java"
5
+ id "checkstyle"
5
6
  }
6
7
  import com.github.jrubygradle.JRubyExec
7
8
  repositories {
@@ -12,17 +13,21 @@ configurations {
12
13
  provided
13
14
  }
14
15
 
15
- version = "0.3.1"
16
+ version = "0.4.0"
16
17
  sourceCompatibility = 1.7
17
18
  targetCompatibility = 1.7
18
19
 
19
20
  dependencies {
20
- compile "org.embulk:embulk-core:0.7.0"
21
- provided "org.embulk:embulk-core:0.7.0"
21
+ compile "org.embulk:embulk-core:0.8.2"
22
+ provided "org.embulk:embulk-core:0.8.2"
22
23
  // compile "YOUR_JAR_DEPENDENCY_GROUP:YOUR_JAR_DEPENDENCY_MODULE:YOUR_JAR_DEPENDENCY_VERSION"
23
24
  testCompile "junit:junit:4.+"
24
25
  }
25
26
 
27
+ checkstyle {
28
+ toolVersion = '6.7'
29
+ }
30
+
26
31
  task classpath(type: Copy, dependsOn: ["jar"]) {
27
32
  doFirst { file("classpath").deleteDir() }
28
33
  from (configurations.runtime - configurations.provided + files(jar.archivePath))
@@ -0,0 +1,127 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE module PUBLIC
3
+ "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
4
+ "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
5
+ <module name="Checker">
6
+ <module name="FileTabCharacter"/>
7
+ <module name="NewlineAtEndOfFile">
8
+ <property name="lineSeparator" value="lf"/>
9
+ </module>
10
+ <module name="RegexpMultiline">
11
+ <property name="format" value="\r"/>
12
+ <property name="message" value="Line contains carriage return"/>
13
+ </module>
14
+ <module name="RegexpMultiline">
15
+ <property name="format" value=" \n"/>
16
+ <property name="message" value="Line has trailing whitespace"/>
17
+ </module>
18
+ <module name="RegexpMultiline">
19
+ <property name="format" value="\{\n\n"/>
20
+ <property name="message" value="Blank line after opening brace"/>
21
+ </module>
22
+ <module name="RegexpMultiline">
23
+ <property name="format" value="\n\n\s*\}"/>
24
+ <property name="message" value="Blank line before closing brace"/>
25
+ </module>
26
+ <module name="RegexpMultiline">
27
+ <property name="format" value="\n\n\n"/>
28
+ <property name="message" value="Multiple consecutive blank lines"/>
29
+ </module>
30
+ <module name="RegexpMultiline">
31
+ <property name="format" value="\n\n\Z"/>
32
+ <property name="message" value="Blank line before end of file"/>
33
+ </module>
34
+ <module name="RegexpMultiline">
35
+ <property name="format" value="Preconditions\.checkNotNull"/>
36
+ <property name="message" value="Use of checkNotNull"/>
37
+ </module>
38
+
39
+ <module name="TreeWalker">
40
+ <module name="EmptyBlock">
41
+ <property name="option" value="text"/>
42
+ <property name="tokens" value="
43
+ LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF,
44
+ LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT"/>
45
+ </module>
46
+ <module name="EmptyStatement"/>
47
+ <module name="EmptyForInitializerPad"/>
48
+ <module name="EmptyForIteratorPad">
49
+ <property name="option" value="space"/>
50
+ </module>
51
+ <module name="MethodParamPad">
52
+ <property name="allowLineBreaks" value="true"/>
53
+ <property name="option" value="nospace"/>
54
+ </module>
55
+ <module name="ParenPad"/>
56
+ <module name="TypecastParenPad"/>
57
+ <module name="NeedBraces"/>
58
+ <module name="LeftCurly">
59
+ <property name="option" value="nl"/>
60
+ <property name="tokens" value="CLASS_DEF, CTOR_DEF, INTERFACE_DEF, METHOD_DEF"/>
61
+ </module>
62
+ <module name="LeftCurly">
63
+ <property name="option" value="eol"/>
64
+ <property name="tokens" value="
65
+ LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR,
66
+ LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE"/>
67
+ </module>
68
+ <module name="RightCurly">
69
+ <property name="option" value="alone"/>
70
+ </module>
71
+ <module name="GenericWhitespace"/>
72
+ <module name="WhitespaceAfter"/>
73
+ <module name="NoWhitespaceBefore"/>
74
+
75
+ <module name="UpperEll"/>
76
+ <module name="DefaultComesLast"/>
77
+ <module name="ArrayTypeStyle"/>
78
+ <module name="MultipleVariableDeclarations"/>
79
+ <module name="ModifierOrder"/>
80
+ <module name="OneStatementPerLine"/>
81
+ <module name="StringLiteralEquality"/>
82
+ <module name="MutableException"/>
83
+ <module name="EqualsHashCode"/>
84
+ <module name="InnerAssignment"/>
85
+ <module name="InterfaceIsType"/>
86
+ <module name="HideUtilityClassConstructor"/>
87
+
88
+ <module name="MemberName"/>
89
+ <module name="LocalVariableName"/>
90
+ <module name="LocalFinalVariableName"/>
91
+ <module name="TypeName"/>
92
+ <module name="PackageName"/>
93
+ <module name="ParameterName"/>
94
+ <module name="StaticVariableName"/>
95
+ <module name="ClassTypeParameterName">
96
+ <property name="format" value="^[A-Z][0-9]?$"/>
97
+ </module>
98
+ <module name="MethodTypeParameterName">
99
+ <property name="format" value="^[A-Z][0-9]?$"/>
100
+ </module>
101
+
102
+ <module name="AvoidStarImport"/>
103
+ <module name="RedundantImport"/>
104
+ <module name="UnusedImports"/>
105
+ <module name="ImportOrder">
106
+ <property name="groups" value="*,javax,java"/>
107
+ <property name="separated" value="true"/>
108
+ <property name="option" value="bottom"/>
109
+ <property name="sortStaticImportsAlphabetically" value="true"/>
110
+ </module>
111
+
112
+ <module name="WhitespaceAround">
113
+ <property name="allowEmptyConstructors" value="true"/>
114
+ <property name="allowEmptyMethods" value="true"/>
115
+ <property name="ignoreEnhancedForColon" value="false"/>
116
+ <property name="tokens" value="
117
+ ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN,
118
+ BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LE,
119
+ LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
120
+ LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
121
+ LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE,
122
+ LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL,
123
+ PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN,
124
+ STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
125
+ </module>
126
+ </module>
127
+ </module>
@@ -13,6 +13,7 @@ in:
13
13
  - {name: id, type: long}
14
14
  - {name: name, type: string}
15
15
  - {name: score, type: double}
16
+ - {name: json, type: json}
16
17
  filters:
17
18
  - type: column
18
19
  default_timezone: "Asia/Tokyo"
data/example/columns.yml CHANGED
@@ -20,6 +20,7 @@ in:
20
20
  - {name: id, type: long}
21
21
  - {name: name, type: string}
22
22
  - {name: score, type: double}
23
+ - {name: json, type: json}
23
24
  filters:
24
25
  - type: column
25
26
  columns:
@@ -28,5 +29,6 @@ filters:
28
29
  - {name: foo, default: 1, type: long}
29
30
  - {name: id}
30
31
  - {name: copy_score, src: score}
32
+ - {name: json, default: "{\"foo\": \"FOO\"}"}
31
33
  out:
32
34
  type: stdout
@@ -13,6 +13,7 @@ in:
13
13
  - {name: id, type: long}
14
14
  - {name: name, type: string}
15
15
  - {name: score, type: double}
16
+ - {name: json, type: json}
16
17
  filters:
17
18
  - type: column
18
19
  drop_columns:
Binary file
@@ -1,6 +1,6 @@
1
- #Mon Aug 10 13:48:48 UTC 2015
1
+ #Wed Jan 13 12:41:02 JST 2016
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.6-bin.zip
6
+ distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip
@@ -1,46 +1,44 @@
1
1
  package org.embulk.filter;
2
2
 
3
- import java.util.List;
4
- import java.util.HashMap;
3
+ import com.google.common.base.Optional;
4
+ import com.google.common.base.Throwables;
5
5
  import com.google.common.collect.ImmutableList;
6
- import org.slf4j.Logger;
7
6
 
8
7
  import org.embulk.config.Config;
9
8
  import org.embulk.config.ConfigDefault;
10
- import org.embulk.config.ConfigDiff;
11
- import org.embulk.config.ConfigSource;
12
9
  import org.embulk.config.ConfigException;
10
+ import org.embulk.config.ConfigSource;
13
11
  import org.embulk.config.Task;
14
12
  import org.embulk.config.TaskSource;
15
13
 
16
- import org.embulk.spi.type.Type;
17
- import org.embulk.spi.type.BooleanType;
18
- import org.embulk.spi.type.LongType;
19
- import org.embulk.spi.type.DoubleType;
20
- import org.embulk.spi.type.StringType;
21
- import org.embulk.spi.type.TimestampType;
22
-
23
- import org.embulk.spi.FilterPlugin;
14
+ import org.embulk.spi.Column;
15
+ import org.embulk.spi.ColumnVisitor;
24
16
  import org.embulk.spi.Exec;
17
+ import org.embulk.spi.FilterPlugin;
25
18
  import org.embulk.spi.Page;
26
19
  import org.embulk.spi.PageBuilder;
27
20
  import org.embulk.spi.PageOutput;
28
21
  import org.embulk.spi.PageReader;
29
22
  import org.embulk.spi.Schema;
30
- import org.embulk.spi.SchemaConfig;
31
- import org.embulk.spi.Column;
32
- import org.embulk.spi.ColumnVisitor;
33
-
34
- import org.joda.time.DateTimeZone;
23
+ import org.embulk.spi.SchemaConfigException;
24
+ import org.embulk.spi.json.JsonParser;
35
25
  import org.embulk.spi.time.Timestamp;
36
- import org.embulk.spi.time.TimestampParser;
37
26
  import org.embulk.spi.time.TimestampParseException;
38
- import com.google.common.base.Throwables;
27
+ import org.embulk.spi.time.TimestampParser;
28
+ import org.embulk.spi.type.BooleanType;
29
+ import org.embulk.spi.type.DoubleType;
30
+ import org.embulk.spi.type.LongType;
31
+ import org.embulk.spi.type.StringType;
32
+ import org.embulk.spi.type.JsonType;
33
+ import org.embulk.spi.type.TimestampType;
34
+ import org.embulk.spi.type.Type;
39
35
 
40
- import org.embulk.config.Config;
41
- import org.embulk.config.ConfigDefault;
42
- import com.google.common.base.Optional;
43
- import org.embulk.spi.SchemaConfigException;
36
+ import org.joda.time.DateTimeZone;
37
+ import org.msgpack.value.Value;
38
+ import org.slf4j.Logger;
39
+
40
+ import java.util.HashMap;
41
+ import java.util.List;
44
42
 
45
43
  public class ColumnFilterPlugin implements FilterPlugin
46
44
  {
@@ -116,7 +114,7 @@ public class ColumnFilterPlugin implements FilterPlugin
116
114
  ImmutableList.Builder<Column> builder = ImmutableList.builder();
117
115
  int i = 0;
118
116
  if (dropColumns.size() > 0) {
119
- for (Column inputColumn: inputSchema.getColumns()) {
117
+ for (Column inputColumn : inputSchema.getColumns()) {
120
118
  String name = inputColumn.getName();
121
119
  boolean matched = false;
122
120
  for (ColumnConfig dropColumn : dropColumns) {
@@ -130,7 +128,8 @@ public class ColumnFilterPlugin implements FilterPlugin
130
128
  builder.add(outputColumn);
131
129
  }
132
130
  }
133
- } else if (columns.size() > 0) {
131
+ }
132
+ else if (columns.size() > 0) {
134
133
  for (ColumnConfig column : columns) {
135
134
  String name = column.getName();
136
135
  Optional<Type> type = column.getType();
@@ -151,8 +150,9 @@ public class ColumnFilterPlugin implements FilterPlugin
151
150
  throw new SchemaConfigException(String.format("columns: Column src '%s' is not found in inputSchema. Column '%s' does not have \"type\" and \"default\"", srcName, name));
152
151
  }
153
152
  }
154
- } else {
155
- for (Column inputColumn: inputSchema.getColumns()) {
153
+ }
154
+ else {
155
+ for (Column inputColumn : inputSchema.getColumns()) {
156
156
  Column outputColumn = new Column(i++, inputColumn.getName(), inputColumn.getType());
157
157
  builder.add(outputColumn);
158
158
  }
@@ -191,9 +191,10 @@ public class ColumnFilterPlugin implements FilterPlugin
191
191
  control.run(task.dump(), outputSchema);
192
192
  }
193
193
 
194
- private Column getColumn(String name, Schema schema) {
194
+ private Column getColumn(String name, Schema schema)
195
+ {
195
196
  // hash should be faster, though
196
- for (Column column: schema.getColumns()) {
197
+ for (Column column : schema.getColumns()) {
197
198
  if (column.getName().equals(name)) {
198
199
  return column;
199
200
  }
@@ -201,22 +202,24 @@ public class ColumnFilterPlugin implements FilterPlugin
201
202
  return null;
202
203
  }
203
204
 
204
- private String getSrc(String name, List<ColumnConfig> columnConfigs) {
205
+ private String getSrc(String name, List<ColumnConfig> columnConfigs)
206
+ {
205
207
  for (ColumnConfig columnConfig : columnConfigs) {
206
208
  if (columnConfig.getName().equals(name) &&
207
209
  columnConfig.getSrc().isPresent()) {
208
- return (String)columnConfig.getSrc().get();
210
+ return (String) columnConfig.getSrc().get();
209
211
  }
210
212
  }
211
213
  return null;
212
214
  }
213
215
 
214
- private Object getDefault(String name, Type type, List<ColumnConfig> columnConfigs, PluginTask task) {
216
+ private Object getDefault(String name, Type type, List<ColumnConfig> columnConfigs, PluginTask task)
217
+ {
215
218
  for (ColumnConfig columnConfig : columnConfigs) {
216
219
  if (columnConfig.getName().equals(name)) {
217
220
  if (type instanceof BooleanType) {
218
221
  if (columnConfig.getDefault().isPresent()) {
219
- return (Boolean)columnConfig.getDefault().get();
222
+ return (Boolean) columnConfig.getDefault().get();
220
223
  }
221
224
  }
222
225
  else if (type instanceof LongType) {
@@ -231,29 +234,38 @@ public class ColumnFilterPlugin implements FilterPlugin
231
234
  }
232
235
  else if (type instanceof StringType) {
233
236
  if (columnConfig.getDefault().isPresent()) {
234
- return (String)columnConfig.getDefault().get();
237
+ return (String) columnConfig.getDefault().get();
235
238
  }
236
239
  }
240
+ else if (type instanceof JsonType) {
241
+ if (columnConfig.getDefault().isPresent()) {
242
+ JsonParser parser = new JsonParser();
243
+ return parser.parse((String) columnConfig.getDefault().get());
244
+ }
245
+ }
237
246
  else if (type instanceof TimestampType) {
238
247
  if (columnConfig.getDefault().isPresent()) {
239
- String time = (String)columnConfig.getDefault().get();
248
+ String time = (String) columnConfig.getDefault().get();
240
249
  String format = null;
241
250
  if (columnConfig.getFormat().isPresent()) {
242
251
  format = columnConfig.getFormat().get();
243
- } else {
252
+ }
253
+ else {
244
254
  format = task.getDefaultTimestampFormat();
245
255
  }
246
256
  DateTimeZone timezone = null;
247
257
  if (columnConfig.getTimeZone().isPresent()) {
248
258
  timezone = columnConfig.getTimeZone().get();
249
- } else {
259
+ }
260
+ else {
250
261
  timezone = task.getDefaultTimeZone();
251
262
  }
252
263
  TimestampParser parser = new TimestampParser(task.getJRuby(), format, timezone);
253
264
  try {
254
- Timestamp default_value = parser.parse(time);
255
- return default_value;
256
- } catch(TimestampParseException ex) {
265
+ Timestamp defaultValue = parser.parse(time);
266
+ return defaultValue;
267
+ }
268
+ catch (TimestampParseException ex) {
257
269
  throw Throwables.propagate(ex);
258
270
  }
259
271
  }
@@ -272,7 +284,7 @@ public class ColumnFilterPlugin implements FilterPlugin
272
284
 
273
285
  // Map outputColumn => inputColumn
274
286
  final HashMap<Column, Column> outputInputColumnMap = new HashMap<Column, Column>();
275
- for (Column outputColumn: outputSchema.getColumns()) {
287
+ for (Column outputColumn : outputSchema.getColumns()) {
276
288
  String name = outputColumn.getName();
277
289
  String srcName = getSrc(name, task.getColumns());
278
290
  if (srcName == null) {
@@ -287,16 +299,16 @@ public class ColumnFilterPlugin implements FilterPlugin
287
299
 
288
300
  // Map outputColumn => default value if present
289
301
  final HashMap<Column, Object> outputDefaultMap = new HashMap<Column, Object>();
290
- for (Column outputColumn: outputSchema.getColumns()) {
302
+ for (Column outputColumn : outputSchema.getColumns()) {
291
303
  String name = outputColumn.getName();
292
304
  Type type = outputColumn.getType();
293
305
 
294
- Object default_value = getDefault(name, type, task.getColumns(), task);
295
- if (default_value == null) {
296
- default_value = getDefault(name, type, task.getAddColumns(), task);
306
+ Object defaultValue = getDefault(name, type, task.getColumns(), task);
307
+ if (defaultValue == null) {
308
+ defaultValue = getDefault(name, type, task.getAddColumns(), task);
297
309
  }
298
- if (default_value != null) {
299
- outputDefaultMap.put(outputColumn, default_value);
310
+ if (defaultValue != null) {
311
+ outputDefaultMap.put(outputColumn, defaultValue);
300
312
  }
301
313
  }
302
314
 
@@ -306,17 +318,20 @@ public class ColumnFilterPlugin implements FilterPlugin
306
318
  private ColumnVisitorImpl visitor = new ColumnVisitorImpl(pageBuilder);
307
319
 
308
320
  @Override
309
- public void finish() {
321
+ public void finish()
322
+ {
310
323
  pageBuilder.finish();
311
324
  }
312
325
 
313
326
  @Override
314
- public void close() {
327
+ public void close()
328
+ {
315
329
  pageBuilder.close();
316
330
  }
317
331
 
318
332
  @Override
319
- public void add(Page page) {
333
+ public void add(Page page)
334
+ {
320
335
  pageReader.setPage(page);
321
336
 
322
337
  while (pageReader.nextRecord()) {
@@ -325,84 +340,119 @@ public class ColumnFilterPlugin implements FilterPlugin
325
340
  }
326
341
  }
327
342
 
328
- class ColumnVisitorImpl implements ColumnVisitor {
343
+ class ColumnVisitorImpl implements ColumnVisitor
344
+ {
329
345
  private final PageBuilder pageBuilder;
330
346
 
331
- ColumnVisitorImpl(PageBuilder pageBuilder) {
347
+ ColumnVisitorImpl(PageBuilder pageBuilder)
348
+ {
332
349
  this.pageBuilder = pageBuilder;
333
350
  }
334
351
 
335
352
  @Override
336
- public void booleanColumn(Column outputColumn) {
353
+ public void booleanColumn(Column outputColumn)
354
+ {
337
355
  Column inputColumn = outputInputColumnMap.get(outputColumn);
338
356
  if (inputColumn == null || pageReader.isNull(inputColumn)) {
339
- Boolean default_value = (Boolean)outputDefaultMap.get(outputColumn);
340
- if (default_value != null) {
341
- pageBuilder.setBoolean(outputColumn, default_value.booleanValue());
342
- } else {
357
+ Boolean defaultValue = (Boolean) outputDefaultMap.get(outputColumn);
358
+ if (defaultValue != null) {
359
+ pageBuilder.setBoolean(outputColumn, defaultValue.booleanValue());
360
+ }
361
+ else {
343
362
  pageBuilder.setNull(outputColumn);
344
363
  }
345
- } else {
364
+ }
365
+ else {
346
366
  pageBuilder.setBoolean(outputColumn, pageReader.getBoolean(inputColumn));
347
367
  }
348
368
  }
349
369
 
350
370
  @Override
351
- public void longColumn(Column outputColumn) {
371
+ public void longColumn(Column outputColumn)
372
+ {
352
373
  Column inputColumn = outputInputColumnMap.get(outputColumn);
353
374
  if (inputColumn == null || pageReader.isNull(inputColumn)) {
354
- Long default_value = (Long)outputDefaultMap.get(outputColumn);
355
- if (default_value != null) {
356
- pageBuilder.setLong(outputColumn, default_value.longValue());
357
- } else {
375
+ Long defaultValue = (Long) outputDefaultMap.get(outputColumn);
376
+ if (defaultValue != null) {
377
+ pageBuilder.setLong(outputColumn, defaultValue.longValue());
378
+ }
379
+ else {
358
380
  pageBuilder.setNull(outputColumn);
359
381
  }
360
- } else {
382
+ }
383
+ else {
361
384
  pageBuilder.setLong(outputColumn, pageReader.getLong(inputColumn));
362
385
  }
363
386
  }
364
387
 
365
388
  @Override
366
- public void doubleColumn(Column outputColumn) {
389
+ public void doubleColumn(Column outputColumn)
390
+ {
367
391
  Column inputColumn = outputInputColumnMap.get(outputColumn);
368
392
  if (inputColumn == null || pageReader.isNull(inputColumn)) {
369
- Double default_value = (Double)outputDefaultMap.get(outputColumn);
370
- if (default_value != null) {
371
- pageBuilder.setDouble(outputColumn, default_value.doubleValue());
372
- } else {
393
+ Double defaultValue = (Double) outputDefaultMap.get(outputColumn);
394
+ if (defaultValue != null) {
395
+ pageBuilder.setDouble(outputColumn, defaultValue.doubleValue());
396
+ }
397
+ else {
373
398
  pageBuilder.setNull(outputColumn);
374
399
  }
375
- } else {
400
+ }
401
+ else {
376
402
  pageBuilder.setDouble(outputColumn, pageReader.getDouble(inputColumn));
377
403
  }
378
404
  }
379
405
 
380
406
  @Override
381
- public void stringColumn(Column outputColumn) {
407
+ public void stringColumn(Column outputColumn)
408
+ {
382
409
  Column inputColumn = outputInputColumnMap.get(outputColumn);
383
410
  if (inputColumn == null || pageReader.isNull(inputColumn)) {
384
- String default_value = (String)outputDefaultMap.get(outputColumn);
385
- if (default_value != null) {
386
- pageBuilder.setString(outputColumn, default_value);
387
- } else {
411
+ String defaultValue = (String) outputDefaultMap.get(outputColumn);
412
+ if (defaultValue != null) {
413
+ pageBuilder.setString(outputColumn, defaultValue);
414
+ }
415
+ else {
388
416
  pageBuilder.setNull(outputColumn);
389
417
  }
390
- } else {
418
+ }
419
+ else {
391
420
  pageBuilder.setString(outputColumn, pageReader.getString(inputColumn));
392
421
  }
393
422
  }
394
423
 
395
424
  @Override
396
- public void timestampColumn(Column outputColumn) {
425
+ public void jsonColumn(Column outputColumn)
426
+ {
397
427
  Column inputColumn = outputInputColumnMap.get(outputColumn);
398
428
  if (inputColumn == null || pageReader.isNull(inputColumn)) {
399
- Timestamp default_value = (Timestamp)outputDefaultMap.get(outputColumn);
400
- if (default_value != null) {
401
- pageBuilder.setTimestamp(outputColumn, default_value);
402
- } else {
429
+ Value defaultValue = (Value) outputDefaultMap.get(outputColumn);
430
+ if (defaultValue != null) {
431
+ pageBuilder.setJson(outputColumn, defaultValue);
432
+ }
433
+ else {
403
434
  pageBuilder.setNull(outputColumn);
404
435
  }
405
- } else {
436
+ }
437
+ else {
438
+ pageBuilder.setJson(outputColumn, pageReader.getJson(inputColumn));
439
+ }
440
+ }
441
+
442
+ @Override
443
+ public void timestampColumn(Column outputColumn)
444
+ {
445
+ Column inputColumn = outputInputColumnMap.get(outputColumn);
446
+ if (inputColumn == null || pageReader.isNull(inputColumn)) {
447
+ Timestamp defaultValue = (Timestamp) outputDefaultMap.get(outputColumn);
448
+ if (defaultValue != null) {
449
+ pageBuilder.setTimestamp(outputColumn, defaultValue);
450
+ }
451
+ else {
452
+ pageBuilder.setNull(outputColumn);
453
+ }
454
+ }
455
+ else {
406
456
  pageBuilder.setTimestamp(outputColumn, pageReader.getTimestamp(inputColumn));
407
457
  }
408
458
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-filter-column
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naotoshi Seo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-08 00:00:00.000000000 Z
11
+ date: 2016-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -51,9 +51,11 @@ files:
51
51
  - LICENSE.txt
52
52
  - README.md
53
53
  - build.gradle
54
+ - config/checkstyle/checkstyle.xml
54
55
  - example/add_columns.yml
55
56
  - example/columns.yml
56
57
  - example/drop_columns.yml
58
+ - example/example.csv
57
59
  - gradle/wrapper/gradle-wrapper.jar
58
60
  - gradle/wrapper/gradle-wrapper.properties
59
61
  - gradlew
@@ -61,7 +63,7 @@ files:
61
63
  - lib/embulk/filter/column.rb
62
64
  - src/main/java/org/embulk/filter/ColumnFilterPlugin.java
63
65
  - src/test/java/org/embulk/filter/TestColumnFilterPlugin.java
64
- - classpath/embulk-filter-column-0.3.1.jar
66
+ - classpath/embulk-filter-column-0.4.0.jar
65
67
  homepage: https://github.com/sonots/embulk-filter-column
66
68
  licenses:
67
69
  - MIT