embulk-filter-row 0.2.1 → 0.2.2
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 +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/build.gradle +3 -3
- data/example/and.yml +5 -6
- data/example/example.yml +37 -0
- data/example/or.yml +2 -1
- data/lib/embulk/filter/row.rb +1 -1
- data/src/main/java/org/embulk/filter/row/AbstractColumnVisitor.java +62 -0
- data/src/main/java/org/embulk/filter/row/ColumnVisitorAndImpl.java +211 -0
- data/src/main/java/org/embulk/filter/row/ColumnVisitorOrImpl.java +211 -0
- data/src/main/java/org/embulk/filter/row/RowFilterPlugin.java +106 -0
- data/src/main/java/org/embulk/filter/row/{BooleanCondition.java → condition/BooleanCondition.java} +1 -1
- data/src/main/java/org/embulk/filter/row/condition/Condition.java +5 -0
- data/src/main/java/org/embulk/filter/row/{ConditionConfig.java → condition/ConditionConfig.java} +1 -1
- data/src/main/java/org/embulk/filter/row/{ConditionFactory.java → condition/ConditionFactory.java} +1 -1
- data/src/main/java/org/embulk/filter/row/{DoubleCondition.java → condition/DoubleCondition.java} +1 -1
- data/src/main/java/org/embulk/filter/row/{LongCondition.java → condition/LongCondition.java} +1 -1
- data/src/main/java/org/embulk/filter/row/{StringCondition.java → condition/StringCondition.java} +1 -1
- data/src/main/java/org/embulk/filter/row/{TimestampCondition.java → condition/TimestampCondition.java} +2 -1
- data/src/test/java/org/embulk/filter/row/{TestBooleanCondition.java → condition/TestBooleanCondition.java} +1 -1
- data/src/test/java/org/embulk/filter/row/{TestConditionFactory.java → condition/TestConditionFactory.java} +1 -1
- data/src/test/java/org/embulk/filter/row/{TestDoubleCondition.java → condition/TestDoubleCondition.java} +1 -1
- data/src/test/java/org/embulk/filter/row/{TestLongCondition.java → condition/TestLongCondition.java} +1 -1
- data/src/test/java/org/embulk/filter/row/{TestStringCondition.java → condition/TestStringCondition.java} +1 -1
- data/src/test/java/org/embulk/filter/row/{TestTimestampCondition.java → condition/TestTimestampCondition.java} +1 -1
- metadata +22 -19
- data/src/main/java/org/embulk/filter/RowFilterPlugin.java +0 -464
- data/src/main/java/org/embulk/filter/row/Condition.java +0 -5
- data/src/test/java/org/embulk/filter/TestRowFilterPlugin.java +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e658f035d50a57d97df3a874a87754e0eafc3114
|
4
|
+
data.tar.gz: 505d52511a7527b4bab0585a075548af27ed0c7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0943ff3946f42199d898326419677f74d2b162a7d515b3ce6f6847b162b08e4469af946e42ddc61c50a4c0b3c6ca2b35530bc880a5531d60e3102c873c066a6
|
7
|
+
data.tar.gz: e21c28850e48e2d9d816ca8922e2ae7019cb2828976b99807f9f063190f492f89397e32b6648b2aeab4d0e20e08e3b66b987f66d606c121691c06c1be766a341
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
data/build.gradle
CHANGED
@@ -13,13 +13,13 @@ configurations {
|
|
13
13
|
provided
|
14
14
|
}
|
15
15
|
|
16
|
-
version = "0.2.
|
16
|
+
version = "0.2.2"
|
17
17
|
sourceCompatibility = 1.7
|
18
18
|
targetCompatibility = 1.7
|
19
19
|
|
20
20
|
dependencies {
|
21
|
-
compile "org.embulk:embulk-core:0.
|
22
|
-
provided "org.embulk:embulk-core:0.
|
21
|
+
compile "org.embulk:embulk-core:0.8.11"
|
22
|
+
provided "org.embulk:embulk-core:0.8.11"
|
23
23
|
// compile "YOUR_JAR_DEPENDENCY_GROUP:YOUR_JAR_DEPENDENCY_MODULE:YOUR_JAR_DEPENDENCY_VERSION"
|
24
24
|
testCompile "junit:junit:4.+"
|
25
25
|
}
|
data/example/and.yml
CHANGED
@@ -12,7 +12,7 @@ in:
|
|
12
12
|
type: csv
|
13
13
|
charset: UTF-8
|
14
14
|
newline: CRLF
|
15
|
-
null_string:
|
15
|
+
null_string: "NULL"
|
16
16
|
skip_header_lines: 1
|
17
17
|
comment_line_marker: '#'
|
18
18
|
columns:
|
@@ -22,17 +22,16 @@ in:
|
|
22
22
|
- {name: flag, type: boolean}
|
23
23
|
- {name: id, type: long}
|
24
24
|
- {name: name, type: string}
|
25
|
+
- {name: json, type: json}
|
25
26
|
- {name: score, type: double}
|
26
27
|
filters:
|
27
28
|
- type: row
|
28
29
|
conditions:
|
29
|
-
- {column:
|
30
|
-
- {column: foo, operator: "IS NULL"}
|
31
|
-
- {column:
|
32
|
-
- {column: name, operator: ==, argument: "xxxx", not: true}
|
30
|
+
- {column: time, operator: ==, argument: "2015-07-13", format: "%Y-%m-%d"}
|
31
|
+
- {column: foo, operator: "IS NULL" }
|
32
|
+
- {column: bar, operator: ==, argument: "bar"}
|
33
33
|
- {column: score, operator: ">", argument: 2000}
|
34
34
|
- {column: score, operator: "<", argument: 6000}
|
35
|
-
- {column: time, operator: ==, argument: "2015-07-13", format: "%Y-%m-%d"}
|
36
35
|
# - {column: missing, operator: "==", argument: 6000}
|
37
36
|
out:
|
38
37
|
type: stdout
|
data/example/example.yml
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# in:
|
2
|
+
# type: random
|
3
|
+
# rows: 100
|
4
|
+
# schema:
|
5
|
+
# id: primary_key
|
6
|
+
# name: string
|
7
|
+
# score: integer
|
8
|
+
in:
|
9
|
+
type: file
|
10
|
+
path_prefix: example/example.csv
|
11
|
+
parser:
|
12
|
+
type: csv
|
13
|
+
charset: UTF-8
|
14
|
+
newline: CRLF
|
15
|
+
null_string: "NULL"
|
16
|
+
skip_header_lines: 1
|
17
|
+
comment_line_marker: '#'
|
18
|
+
columns:
|
19
|
+
- {name: time, type: timestamp, format: "%Y-%m-%d"}
|
20
|
+
- {name: foo, type: string}
|
21
|
+
- {name: bar, type: string}
|
22
|
+
- {name: flag, type: boolean}
|
23
|
+
- {name: id, type: long}
|
24
|
+
- {name: name, type: string}
|
25
|
+
- {name: json, type: json}
|
26
|
+
- {name: score, type: double}
|
27
|
+
filters:
|
28
|
+
- type: row
|
29
|
+
conditions:
|
30
|
+
- {column: time, operator: ==, argument: "2015-07-13", format: "%Y-%m-%d"}
|
31
|
+
- {column: foo, operator: "IS NULL" }
|
32
|
+
- {column: bar, operator: ==, argument: "bar"}
|
33
|
+
- {column: score, operator: ">", argument: 2000}
|
34
|
+
- {column: score, operator: "<", argument: 6000}
|
35
|
+
# - {column: missing, operator: "==", argument: 6000}
|
36
|
+
out:
|
37
|
+
type: stdout
|
data/example/or.yml
CHANGED
@@ -15,6 +15,7 @@ in:
|
|
15
15
|
- {name: flag, type: boolean}
|
16
16
|
- {name: id, type: long}
|
17
17
|
- {name: name, type: string}
|
18
|
+
- {name: json, type: json}
|
18
19
|
- {name: score, type: double}
|
19
20
|
filters:
|
20
21
|
- type: row
|
@@ -22,7 +23,7 @@ filters:
|
|
22
23
|
conditions:
|
23
24
|
- {column: name, operator: ==, argument: "Vqjht6YEUBsMPXmoW1iOGFROZF27pBzz0TUkOKeDXEY"}
|
24
25
|
- {column: score, operator: ==, argument: 43}
|
25
|
-
- {column: id, operator: ==, argument:
|
26
|
+
- {column: id, operator: ==, argument: 9}
|
26
27
|
- {column: flag, operator: ==, argument: false}
|
27
28
|
out:
|
28
29
|
type: stdout
|
data/lib/embulk/filter/row.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
package org.embulk.filter.row;
|
2
|
+
|
3
|
+
import org.embulk.filter.row.RowFilterPlugin.PluginTask;
|
4
|
+
import org.embulk.filter.row.condition.Condition;
|
5
|
+
|
6
|
+
import org.embulk.filter.row.condition.ConditionConfig;
|
7
|
+
import org.embulk.filter.row.condition.ConditionFactory;
|
8
|
+
import org.embulk.spi.Column;
|
9
|
+
import org.embulk.spi.ColumnVisitor;
|
10
|
+
import org.embulk.spi.PageBuilder;
|
11
|
+
import org.embulk.spi.PageReader;
|
12
|
+
import org.embulk.spi.Schema;
|
13
|
+
|
14
|
+
import java.util.ArrayList;
|
15
|
+
import java.util.HashMap;
|
16
|
+
import java.util.List;
|
17
|
+
|
18
|
+
abstract class AbstractColumnVisitor
|
19
|
+
implements ColumnVisitor
|
20
|
+
{
|
21
|
+
final PluginTask task;
|
22
|
+
final Schema inputSchema;
|
23
|
+
final Schema outputSchema;
|
24
|
+
final PageReader pageReader;
|
25
|
+
final PageBuilder pageBuilder;
|
26
|
+
HashMap<String, List<Condition>> conditionMap;
|
27
|
+
|
28
|
+
AbstractColumnVisitor(PluginTask task, Schema inputSchema, Schema outputSchema, PageReader pageReader, PageBuilder pageBuilder)
|
29
|
+
{
|
30
|
+
this.task = task;
|
31
|
+
this.inputSchema = inputSchema;
|
32
|
+
this.outputSchema = outputSchema;
|
33
|
+
this.pageReader = pageReader;
|
34
|
+
this.pageBuilder = pageBuilder;
|
35
|
+
|
36
|
+
this.conditionMap = buildConditionMap(task, outputSchema);
|
37
|
+
}
|
38
|
+
|
39
|
+
static HashMap<String, List<Condition>> buildConditionMap(PluginTask task, Schema outputSchema)
|
40
|
+
{
|
41
|
+
HashMap<String, List<Condition>> conditionMap = new HashMap<>();
|
42
|
+
for (Column column : outputSchema.getColumns()) {
|
43
|
+
String columnName = column.getName();
|
44
|
+
conditionMap.put(columnName, new ArrayList<Condition>());
|
45
|
+
}
|
46
|
+
|
47
|
+
for (ConditionConfig conditionConfig : task.getConditions()) {
|
48
|
+
String columnName = conditionConfig.getColumn();
|
49
|
+
for (Column column : outputSchema.getColumns()) {
|
50
|
+
if (columnName.equals(column.getName())) {
|
51
|
+
ConditionFactory factory = new ConditionFactory(task.getJRuby(), column, conditionConfig);
|
52
|
+
Condition condition = factory.createCondition();
|
53
|
+
conditionMap.get(columnName).add(condition);
|
54
|
+
break;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
return conditionMap;
|
59
|
+
}
|
60
|
+
|
61
|
+
abstract public boolean visitColumns(Schema schema);
|
62
|
+
}
|
@@ -0,0 +1,211 @@
|
|
1
|
+
package org.embulk.filter.row;
|
2
|
+
|
3
|
+
import org.embulk.filter.row.RowFilterPlugin.PluginTask;
|
4
|
+
import org.embulk.filter.row.condition.BooleanCondition;
|
5
|
+
import org.embulk.filter.row.condition.Condition;
|
6
|
+
import org.embulk.filter.row.condition.DoubleCondition;
|
7
|
+
import org.embulk.filter.row.condition.LongCondition;
|
8
|
+
import org.embulk.filter.row.condition.StringCondition;
|
9
|
+
import org.embulk.filter.row.condition.TimestampCondition;
|
10
|
+
|
11
|
+
import org.embulk.spi.Column;
|
12
|
+
import org.embulk.spi.Exec;
|
13
|
+
import org.embulk.spi.PageBuilder;
|
14
|
+
import org.embulk.spi.PageReader;
|
15
|
+
import org.embulk.spi.Schema;
|
16
|
+
import org.embulk.spi.time.Timestamp;
|
17
|
+
|
18
|
+
import org.slf4j.Logger;
|
19
|
+
|
20
|
+
import java.util.List;
|
21
|
+
|
22
|
+
class ColumnVisitorAndImpl extends AbstractColumnVisitor
|
23
|
+
{
|
24
|
+
private static final Logger logger = Exec.getLogger(RowFilterPlugin.class);
|
25
|
+
private boolean shouldAddRecord;
|
26
|
+
|
27
|
+
ColumnVisitorAndImpl(PluginTask task, Schema inputSchema, Schema outputSchema, PageReader pageReader, PageBuilder pageBuilder)
|
28
|
+
{
|
29
|
+
super(task, inputSchema, outputSchema, pageReader, pageBuilder);
|
30
|
+
}
|
31
|
+
|
32
|
+
public boolean visitColumns(Schema schema)
|
33
|
+
{
|
34
|
+
//Visitor objects are created for each thread :)
|
35
|
+
//System.out.println(String.format("thread_id:%d object_id:%d", Thread.currentThread().getId(), this.hashCode()));
|
36
|
+
shouldAddRecord = true;
|
37
|
+
for (Column column : schema.getColumns()) {
|
38
|
+
column.visit(this);
|
39
|
+
}
|
40
|
+
return shouldAddRecord;
|
41
|
+
}
|
42
|
+
|
43
|
+
@Override
|
44
|
+
public void booleanColumn(Column column)
|
45
|
+
{
|
46
|
+
if (!shouldAddRecord) {
|
47
|
+
return;
|
48
|
+
}
|
49
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
50
|
+
for (Condition tempCondition : conditionList) {
|
51
|
+
BooleanCondition condition = (BooleanCondition) tempCondition;
|
52
|
+
if (pageReader.isNull(column)) {
|
53
|
+
if (!condition.compare(null)) {
|
54
|
+
shouldAddRecord = false;
|
55
|
+
break;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
else {
|
59
|
+
boolean subject = pageReader.getBoolean(column);
|
60
|
+
if (!condition.compare(subject)) {
|
61
|
+
shouldAddRecord = false;
|
62
|
+
break;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
if (pageReader.isNull(column)) {
|
67
|
+
pageBuilder.setNull(column);
|
68
|
+
}
|
69
|
+
else {
|
70
|
+
pageBuilder.setBoolean(column, pageReader.getBoolean(column));
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
@Override
|
75
|
+
public void longColumn(Column column)
|
76
|
+
{
|
77
|
+
if (!shouldAddRecord) {
|
78
|
+
return;
|
79
|
+
}
|
80
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
81
|
+
for (Condition tempCondition : conditionList) {
|
82
|
+
LongCondition condition = (LongCondition) tempCondition;
|
83
|
+
if (pageReader.isNull(column)) {
|
84
|
+
if (!condition.compare(null)) {
|
85
|
+
shouldAddRecord = false;
|
86
|
+
break;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
else {
|
90
|
+
long subject = pageReader.getLong(column);
|
91
|
+
if (!condition.compare(subject)) {
|
92
|
+
shouldAddRecord = false;
|
93
|
+
break;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
if (pageReader.isNull(column)) {
|
98
|
+
pageBuilder.setNull(column);
|
99
|
+
}
|
100
|
+
else {
|
101
|
+
pageBuilder.setLong(column, pageReader.getLong(column));
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
@Override
|
106
|
+
public void doubleColumn(Column column)
|
107
|
+
{
|
108
|
+
if (!shouldAddRecord) {
|
109
|
+
return;
|
110
|
+
}
|
111
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
112
|
+
for (Condition tempCondition : conditionList) {
|
113
|
+
DoubleCondition condition = (DoubleCondition) tempCondition;
|
114
|
+
if (pageReader.isNull(column)) {
|
115
|
+
if (!condition.compare(null)) {
|
116
|
+
shouldAddRecord = false;
|
117
|
+
break;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
else {
|
121
|
+
double subject = pageReader.getDouble(column);
|
122
|
+
if (!condition.compare(subject)) {
|
123
|
+
shouldAddRecord = false;
|
124
|
+
break;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
if (pageReader.isNull(column)) {
|
129
|
+
pageBuilder.setNull(column);
|
130
|
+
}
|
131
|
+
else {
|
132
|
+
pageBuilder.setDouble(column, pageReader.getDouble(column));
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
@Override
|
137
|
+
public void stringColumn(Column column)
|
138
|
+
{
|
139
|
+
if (!shouldAddRecord) {
|
140
|
+
return;
|
141
|
+
}
|
142
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
143
|
+
for (Condition tempCondition : conditionList) {
|
144
|
+
StringCondition condition = (StringCondition) tempCondition;
|
145
|
+
if (pageReader.isNull(column)) {
|
146
|
+
if (!condition.compare(null)) {
|
147
|
+
shouldAddRecord = false;
|
148
|
+
break;
|
149
|
+
}
|
150
|
+
}
|
151
|
+
else {
|
152
|
+
String subject = pageReader.getString(column);
|
153
|
+
if (!condition.compare(subject)) {
|
154
|
+
shouldAddRecord = false;
|
155
|
+
break;
|
156
|
+
}
|
157
|
+
}
|
158
|
+
}
|
159
|
+
if (pageReader.isNull(column)) {
|
160
|
+
pageBuilder.setNull(column);
|
161
|
+
}
|
162
|
+
else {
|
163
|
+
pageBuilder.setString(column, pageReader.getString(column));
|
164
|
+
}
|
165
|
+
}
|
166
|
+
|
167
|
+
@Override
|
168
|
+
public void timestampColumn(Column column)
|
169
|
+
{
|
170
|
+
if (!shouldAddRecord) {
|
171
|
+
return;
|
172
|
+
}
|
173
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
174
|
+
for (Condition tempCondition : conditionList) {
|
175
|
+
TimestampCondition condition = (TimestampCondition) tempCondition;
|
176
|
+
if (pageReader.isNull(column)) {
|
177
|
+
if (!condition.compare(null)) {
|
178
|
+
shouldAddRecord = false;
|
179
|
+
break;
|
180
|
+
}
|
181
|
+
}
|
182
|
+
else {
|
183
|
+
Timestamp subject = pageReader.getTimestamp(column);
|
184
|
+
if (!condition.compare(subject)) {
|
185
|
+
shouldAddRecord = false;
|
186
|
+
break;
|
187
|
+
}
|
188
|
+
}
|
189
|
+
}
|
190
|
+
if (pageReader.isNull(column)) {
|
191
|
+
pageBuilder.setNull(column);
|
192
|
+
}
|
193
|
+
else {
|
194
|
+
pageBuilder.setTimestamp(column, pageReader.getTimestamp(column));
|
195
|
+
}
|
196
|
+
}
|
197
|
+
|
198
|
+
@Override
|
199
|
+
public void jsonColumn(Column column)
|
200
|
+
{
|
201
|
+
if (!shouldAddRecord) {
|
202
|
+
return;
|
203
|
+
}
|
204
|
+
if (pageReader.isNull(column)) {
|
205
|
+
pageBuilder.setNull(column);
|
206
|
+
}
|
207
|
+
else {
|
208
|
+
pageBuilder.setJson(column, pageReader.getJson(column));
|
209
|
+
}
|
210
|
+
}
|
211
|
+
}
|
@@ -0,0 +1,211 @@
|
|
1
|
+
package org.embulk.filter.row;
|
2
|
+
|
3
|
+
import org.embulk.filter.row.RowFilterPlugin.PluginTask;
|
4
|
+
import org.embulk.filter.row.condition.BooleanCondition;
|
5
|
+
import org.embulk.filter.row.condition.Condition;
|
6
|
+
import org.embulk.filter.row.condition.DoubleCondition;
|
7
|
+
import org.embulk.filter.row.condition.LongCondition;
|
8
|
+
import org.embulk.filter.row.condition.StringCondition;
|
9
|
+
import org.embulk.filter.row.condition.TimestampCondition;
|
10
|
+
|
11
|
+
import org.embulk.spi.Column;
|
12
|
+
import org.embulk.spi.Exec;
|
13
|
+
import org.embulk.spi.PageBuilder;
|
14
|
+
import org.embulk.spi.PageReader;
|
15
|
+
import org.embulk.spi.Schema;
|
16
|
+
import org.embulk.spi.time.Timestamp;
|
17
|
+
|
18
|
+
import org.slf4j.Logger;
|
19
|
+
|
20
|
+
import java.util.List;
|
21
|
+
|
22
|
+
class ColumnVisitorOrImpl extends AbstractColumnVisitor
|
23
|
+
{
|
24
|
+
private static final Logger logger = Exec.getLogger(RowFilterPlugin.class);
|
25
|
+
private boolean shouldAddRecord;
|
26
|
+
|
27
|
+
ColumnVisitorOrImpl(PluginTask task, Schema inputSchema, Schema outputSchema, PageReader pageReader, PageBuilder pageBuilder)
|
28
|
+
{
|
29
|
+
super(task, inputSchema, outputSchema, pageReader, pageBuilder);
|
30
|
+
}
|
31
|
+
|
32
|
+
public boolean visitColumns(Schema schema)
|
33
|
+
{
|
34
|
+
//Visitor objects are created for each thread :)
|
35
|
+
//System.out.println(String.format("thread_id:%d object_id:%d", Thread.currentThread().getId(), this.hashCode()));
|
36
|
+
shouldAddRecord = false;
|
37
|
+
for (Column column : schema.getColumns()) {
|
38
|
+
column.visit(this);
|
39
|
+
}
|
40
|
+
return shouldAddRecord;
|
41
|
+
}
|
42
|
+
|
43
|
+
@Override
|
44
|
+
public void booleanColumn(Column column)
|
45
|
+
{
|
46
|
+
if (pageReader.isNull(column)) {
|
47
|
+
pageBuilder.setNull(column);
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
pageBuilder.setBoolean(column, pageReader.getBoolean(column));
|
51
|
+
}
|
52
|
+
if (shouldAddRecord) {
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
56
|
+
for (Condition tempCondition : conditionList) {
|
57
|
+
BooleanCondition condition = (BooleanCondition) tempCondition;
|
58
|
+
if (pageReader.isNull(column)) {
|
59
|
+
if (condition.compare(null)) {
|
60
|
+
shouldAddRecord = true;
|
61
|
+
break;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
else {
|
65
|
+
boolean subject = pageReader.getBoolean(column);
|
66
|
+
if (condition.compare(subject)) {
|
67
|
+
shouldAddRecord = true;
|
68
|
+
break;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
@Override
|
75
|
+
public void longColumn(Column column)
|
76
|
+
{
|
77
|
+
if (pageReader.isNull(column)) {
|
78
|
+
pageBuilder.setNull(column);
|
79
|
+
}
|
80
|
+
else {
|
81
|
+
pageBuilder.setLong(column, pageReader.getLong(column));
|
82
|
+
}
|
83
|
+
if (shouldAddRecord) {
|
84
|
+
return;
|
85
|
+
}
|
86
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
87
|
+
for (Condition tempCondition : conditionList) {
|
88
|
+
LongCondition condition = (LongCondition) tempCondition;
|
89
|
+
if (pageReader.isNull(column)) {
|
90
|
+
if (condition.compare(null)) {
|
91
|
+
shouldAddRecord = true;
|
92
|
+
break;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
else {
|
96
|
+
long subject = pageReader.getLong(column);
|
97
|
+
if (condition.compare(subject)) {
|
98
|
+
shouldAddRecord = true;
|
99
|
+
break;
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
@Override
|
106
|
+
public void doubleColumn(Column column)
|
107
|
+
{
|
108
|
+
if (pageReader.isNull(column)) {
|
109
|
+
pageBuilder.setNull(column);
|
110
|
+
}
|
111
|
+
else {
|
112
|
+
pageBuilder.setDouble(column, pageReader.getDouble(column));
|
113
|
+
}
|
114
|
+
if (shouldAddRecord) {
|
115
|
+
return;
|
116
|
+
}
|
117
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
118
|
+
for (Condition tempCondition : conditionList) {
|
119
|
+
DoubleCondition condition = (DoubleCondition) tempCondition;
|
120
|
+
if (pageReader.isNull(column)) {
|
121
|
+
if (condition.compare(null)) {
|
122
|
+
shouldAddRecord = true;
|
123
|
+
break;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
else {
|
127
|
+
double subject = pageReader.getDouble(column);
|
128
|
+
if (condition.compare(subject)) {
|
129
|
+
shouldAddRecord = true;
|
130
|
+
break;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
@Override
|
137
|
+
public void stringColumn(Column column)
|
138
|
+
{
|
139
|
+
if (pageReader.isNull(column)) {
|
140
|
+
pageBuilder.setNull(column);
|
141
|
+
}
|
142
|
+
else {
|
143
|
+
pageBuilder.setString(column, pageReader.getString(column));
|
144
|
+
}
|
145
|
+
if (shouldAddRecord) {
|
146
|
+
return;
|
147
|
+
}
|
148
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
149
|
+
for (Condition tempCondition : conditionList) {
|
150
|
+
StringCondition condition = (StringCondition) tempCondition;
|
151
|
+
if (pageReader.isNull(column)) {
|
152
|
+
if (condition.compare(null)) {
|
153
|
+
shouldAddRecord = true;
|
154
|
+
break;
|
155
|
+
}
|
156
|
+
}
|
157
|
+
else {
|
158
|
+
String subject = pageReader.getString(column);
|
159
|
+
if (condition.compare(subject)) {
|
160
|
+
shouldAddRecord = true;
|
161
|
+
break;
|
162
|
+
}
|
163
|
+
}
|
164
|
+
}
|
165
|
+
}
|
166
|
+
|
167
|
+
@Override
|
168
|
+
public void timestampColumn(Column column)
|
169
|
+
{
|
170
|
+
if (pageReader.isNull(column)) {
|
171
|
+
pageBuilder.setNull(column);
|
172
|
+
}
|
173
|
+
else {
|
174
|
+
pageBuilder.setTimestamp(column, pageReader.getTimestamp(column));
|
175
|
+
}
|
176
|
+
if (shouldAddRecord) {
|
177
|
+
return;
|
178
|
+
}
|
179
|
+
List<Condition> conditionList = conditionMap.get(column.getName());
|
180
|
+
for (Condition tempCondition : conditionList) {
|
181
|
+
TimestampCondition condition = (TimestampCondition) tempCondition;
|
182
|
+
if (pageReader.isNull(column)) {
|
183
|
+
if (condition.compare(null)) {
|
184
|
+
shouldAddRecord = true;
|
185
|
+
break;
|
186
|
+
}
|
187
|
+
}
|
188
|
+
else {
|
189
|
+
Timestamp subject = pageReader.getTimestamp(column);
|
190
|
+
if (condition.compare(subject)) {
|
191
|
+
shouldAddRecord = true;
|
192
|
+
break;
|
193
|
+
}
|
194
|
+
}
|
195
|
+
}
|
196
|
+
}
|
197
|
+
|
198
|
+
@Override
|
199
|
+
public void jsonColumn(Column column)
|
200
|
+
{
|
201
|
+
if (!shouldAddRecord) {
|
202
|
+
return;
|
203
|
+
}
|
204
|
+
if (pageReader.isNull(column)) {
|
205
|
+
pageBuilder.setNull(column);
|
206
|
+
}
|
207
|
+
else {
|
208
|
+
pageBuilder.setJson(column, pageReader.getJson(column));
|
209
|
+
}
|
210
|
+
}
|
211
|
+
}
|