embulk-output-mongodb_nest 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 805ea709694587e6cc1e272f3f8b73342282f406
4
- data.tar.gz: c6197817e97777b57495cdd92c63c2351f54aeaf
3
+ metadata.gz: 44cd8770b458a56c1302a320b7a835a474b8a066
4
+ data.tar.gz: 9164e109a20b9f1e21892787f6691bb87789a94c
5
5
  SHA512:
6
- metadata.gz: a80bf91cb0001014cc8487479743ab01e5a0f3a3ab82ba26ff6c0a7862b3eabccee2ae417981c6af8c3953169b6f5c3325011afb00f975832415832f1e0a14cd
7
- data.tar.gz: 072c9a6331ce5c3bab228706d2e9c403d66d62d35899317d5e792529fa868bc59d2f5de21e9db2a7130ecbb4aaa3dc7b5bae3ceb5ed9ad20de0df0f5e4642183
6
+ metadata.gz: 5fcf602b68ceaa13fdc39a502e4130b68d345d556bad626442cd68b95308a4d4977e43173e99b9087ab26c4e41c3d836b54cff36f7acd22b4d15564ba7c3de7a
7
+ data.tar.gz: b4a64273bdbe248d6cc284683ae634ae5e56a29b54fb0f8f55c665ee2afeaee95f8375c92d3c371f4a7a221dbb66215326b03aa3b6f1c9a70f17a67d39ca0d8a
data/README.md CHANGED
@@ -20,7 +20,7 @@ Dumps records to Mongodb with subdocument
20
20
  - **user**: mongodb account (string, required)
21
21
  - **password**: password (string, required)
22
22
  - **collection**: collection name (string, required)
23
- - **key**: primary key of collection (string, required)
23
+ - **key**: primary keys of collection (string array, required, **since v0.1.2**)
24
24
  - **child**: describe subdocument (object list, default: null)
25
25
  - **bulk_size**: bulk upsert size at time (integer, default: `10000`)
26
26
 
@@ -36,7 +36,7 @@ out:
36
36
  user: your-account-name
37
37
  password: your-password
38
38
  collection: your-collection-name
39
- key: your-key
39
+ key: [your-key1, key2, ...]
40
40
  child:
41
41
  - {name: mychild, field: time}
42
42
  - {name: yourchild, field: comment}
@@ -75,7 +75,7 @@ out:
75
75
  user: your-account-name
76
76
  password: your-password
77
77
  collection: your-collection-name
78
- key: your-key
78
+ key: [your-key, key2]
79
79
  child:
80
80
  - {name: mychild, field: time}
81
81
  - {name: yourchild, field: comment}
@@ -83,4 +83,9 @@ out:
83
83
  ```
84
84
 
85
85
 
86
+ ## Release
87
+ * 0.1.2 2018-06-08 The key field has been changed to a list type. The JSON Parser is supported by the input plugin.
88
+ * 0.1.1 2018-06-05 [bug fix] Fiexed an error when a child field was entered
89
+ * 0.1.0 2018-05-31 first release
90
+
86
91
 
data/build.gradle CHANGED
@@ -13,7 +13,7 @@ configurations {
13
13
  provided
14
14
  }
15
15
 
16
- version = "0.1.1"
16
+ version = "0.1.2"
17
17
 
18
18
  sourceCompatibility = 1.8
19
19
  targetCompatibility = 1.8
@@ -28,43 +28,43 @@ public class MongodbNestOutputPlugin implements OutputPlugin
28
28
  public interface DefineChildDocument extends Task
29
29
  {
30
30
  @Config("name")
31
- public String getName();
31
+ String getName();
32
32
 
33
33
  @Config("field")
34
- public String getField();
34
+ String getField();
35
35
  }
36
36
 
37
37
  public interface PluginTask extends Task
38
38
  {
39
39
  @Config("collection")
40
- public String getCollection();
40
+ String getCollection();
41
41
 
42
42
  @Config("host")
43
- public String getHost();
43
+ String getHost();
44
44
 
45
45
  @Config("port")
46
46
  @ConfigDefault("27017")
47
- public int getPort();
47
+ int getPort();
48
48
 
49
49
  @Config("database")
50
- public String getDatabase();
50
+ String getDatabase();
51
51
 
52
52
  @Config("user")
53
- public String getUser();
53
+ String getUser();
54
54
 
55
55
  @Config("password")
56
- public String getPassword();
56
+ String getPassword();
57
57
 
58
58
  @Config("key")
59
- public String getKey();
59
+ List<String> getKey();
60
60
 
61
61
  @Config("child")
62
62
  @ConfigDefault("null")
63
- public Optional<List<DefineChildDocument>> getChild();
63
+ Optional<List<DefineChildDocument>> getChild();
64
64
 
65
65
  @Config("bulk_size")
66
66
  @ConfigDefault("1000")
67
- public int getBulkSize();
67
+ int getBulkSize();
68
68
 
69
69
  }
70
70
 
@@ -76,6 +76,9 @@ public class MongodbNestOutputPlugin implements OutputPlugin
76
76
  // return resume(task.dump(), schema, taskCount, control);
77
77
 
78
78
  // non-retryable (non-idempotent) output:
79
+
80
+ System.out.println(config.toString());
81
+
79
82
  control.run(task.dump());
80
83
  return Exec.newConfigDiff();
81
84
  }
@@ -8,6 +8,7 @@ import com.mongodb.client.MongoDatabase;
8
8
  import com.mongodb.client.model.ReplaceOneModel;
9
9
  import com.mongodb.client.model.ReplaceOptions;
10
10
  import com.mongodb.client.model.WriteModel;
11
+ import org.bson.BSONObject;
11
12
  import org.bson.Document;
12
13
  import org.embulk.config.TaskReport;
13
14
  import org.embulk.spi.*;
@@ -17,7 +18,6 @@ import org.slf4j.Logger;
17
18
  import java.io.UnsupportedEncodingException;
18
19
  import java.net.URLEncoder;
19
20
  import java.util.ArrayList;
20
- import java.util.Date;
21
21
  import java.util.List;
22
22
  import java.util.Map;
23
23
 
@@ -43,6 +43,7 @@ public class PluginPageOutput implements TransactionalPageOutput
43
43
  private MongoDatabase db;
44
44
  private MongoCollection<Document> collection;
45
45
 
46
+
46
47
  PluginPageOutput(MongodbNestOutputPlugin.PluginTask task, Schema schema)
47
48
  {
48
49
  this.pageReader = new PageReader(schema);
@@ -71,7 +72,8 @@ public class PluginPageOutput implements TransactionalPageOutput
71
72
  this.collection = this.db.getCollection(task.getCollection());
72
73
  }
73
74
 
74
- @Override public void add(Page page)
75
+ @Override
76
+ public void add(Page page)
75
77
  {
76
78
  pageReader.setPage(page);
77
79
  List<WriteModel<Document>> replaceModel = new ArrayList<>();
@@ -89,6 +91,10 @@ public class PluginPageOutput implements TransactionalPageOutput
89
91
  {
90
92
  doc.append(t, null);
91
93
  }
94
+ else if(schema.getColumnType(i).getName().compareTo("json") == 0)
95
+ {
96
+ doc.putAll((BSONObject) BasicDBObject.parse(pageReader.getJson(i).toJson()));
97
+ }
92
98
  else if (type.equals(boolean.class))
93
99
  {
94
100
  doc.append(t, pageReader.getBoolean(i));
@@ -109,6 +115,7 @@ public class PluginPageOutput implements TransactionalPageOutput
109
115
  {
110
116
  doc.append(t, new java.sql.Timestamp(pageReader.getTimestamp(i).toEpochMilli()));
111
117
  }
118
+
112
119
  }
113
120
 
114
121
  if (task.getChild().isPresent())
@@ -117,10 +124,9 @@ public class PluginPageOutput implements TransactionalPageOutput
117
124
  }
118
125
 
119
126
  replaceModel.add(new ReplaceOneModel<>(
120
- new Document(task.getKey(), doc.get(task.getKey())),
127
+ generateFilter(doc),
121
128
  new Document(doc),
122
- new ReplaceOptions().upsert(true))
123
- );
129
+ new ReplaceOptions().upsert(true)));
124
130
 
125
131
  if(replaceModel.size() % task.getBulkSize() == 0)
126
132
  {
@@ -133,7 +139,18 @@ public class PluginPageOutput implements TransactionalPageOutput
133
139
  {
134
140
  collection.bulkWrite(replaceModel);
135
141
  }
142
+ }
143
+
144
+ private Document generateFilter(BasicDBObject document)
145
+ {
146
+ Document filter = new Document();
147
+
148
+ for(String k : task.getKey())
149
+ {
150
+ filter.append(k, document.get(k));
151
+ }
136
152
 
153
+ return filter;
137
154
  }
138
155
 
139
156
  private BasicDBObject transformDocument(BasicDBObject doc)
@@ -158,22 +175,26 @@ public class PluginPageOutput implements TransactionalPageOutput
158
175
  return doc;
159
176
  }
160
177
 
161
- @Override public void finish()
178
+ @Override
179
+ public void finish()
162
180
  {
163
181
 
164
182
  }
165
183
 
166
- @Override public void close()
184
+ @Override
185
+ public void close()
167
186
  {
168
187
  this.mongo.close();
169
188
  }
170
189
 
171
- @Override public void abort()
190
+ @Override
191
+ public void abort()
172
192
  {
173
193
 
174
194
  }
175
195
 
176
- @Override public TaskReport commit()
196
+ @Override
197
+ public TaskReport commit()
177
198
  {
178
199
  return null;
179
200
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-mongodb_nest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - focuschange
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-05 00:00:00.000000000 Z
11
+ date: 2018-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -60,7 +60,7 @@ files:
60
60
  - src/main/java/org/embulk/output/mongodb_nest/PluginPageOutput.java
61
61
  - src/test/java/org/embulk/output/mongodb_nest/TestMongodbNestOutputPlugin.java
62
62
  - classpath/mongo-java-driver-3.7.0.jar
63
- - classpath/embulk-output-mongodb_nest-0.1.1.jar
63
+ - classpath/embulk-output-mongodb_nest-0.1.2.jar
64
64
  homepage: https://github.com/focuschange/embulk-output-mongodb_nest
65
65
  licenses:
66
66
  - MIT