embulk-filter-column 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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