Skip to content

Commit 9758502

Browse files
authored
Merge pull request #47 from trocco-io/revert-40-transfer-json-type
2 parents 2e3f7ea + 6437898 commit 9758502

File tree

3 files changed

+40
-39
lines changed

3 files changed

+40
-39
lines changed

src/main/java/org/embulk/input/kintone/KintoneAccessor.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import com.google.gson.JsonSerializationContext;
99
import com.google.gson.JsonSerializer;
1010
import com.kintone.client.model.FileBody;
11+
import com.kintone.client.model.Group;
12+
import com.kintone.client.model.Organization;
13+
import com.kintone.client.model.User;
1114
import com.kintone.client.model.record.CalcFieldValue;
1215
import com.kintone.client.model.record.CheckBoxFieldValue;
1316
import com.kintone.client.model.record.DateFieldValue;
@@ -68,11 +71,11 @@ private String getAsString(final String fieldCode)
6871
case __REVISION__:
6972
return toString(record.getRevision(), Objects::toString);
7073
case CREATOR:
71-
return gson.toJson(record.getCreatorFieldValue());
74+
return toString(record.getCreatorFieldValue(), User::getCode);
7275
case CREATED_TIME:
7376
return toString(record.getCreatedTimeFieldValue(), (value) -> value.toInstant().toString());
7477
case MODIFIER:
75-
return gson.toJson(record.getModifierFieldValue());
78+
return toString(record.getModifierFieldValue(), User::getCode);
7679
case UPDATED_TIME:
7780
return toString(record.getUpdatedTimeFieldValue(), (value) -> value.toInstant().toString());
7881
case SINGLE_LINE_TEXT:
@@ -94,11 +97,11 @@ private String getAsString(final String fieldCode)
9497
case DROP_DOWN:
9598
return record.getDropDownFieldValue(fieldCode);
9699
case USER_SELECT:
97-
return gson.toJson(record.getUserSelectFieldValue(fieldCode));
100+
return toString(record.getUserSelectFieldValue(fieldCode), User::getCode);
98101
case ORGANIZATION_SELECT:
99-
return gson.toJson(record.getOrganizationSelectFieldValue(fieldCode));
102+
return toString(record.getOrganizationSelectFieldValue(fieldCode), Organization::getCode);
100103
case GROUP_SELECT:
101-
return gson.toJson(record.getGroupSelectFieldValue(fieldCode));
104+
return toString(record.getGroupSelectFieldValue(fieldCode), Group::getCode);
102105
case DATE:
103106
return toString(record.getDateFieldValue(fieldCode), LocalDate::toString);
104107
case TIME:
@@ -116,7 +119,7 @@ private String getAsString(final String fieldCode)
116119
case STATUS:
117120
return record.getStatusFieldValue();
118121
case STATUS_ASSIGNEE:
119-
return gson.toJson(record.getStatusAssigneeFieldValue());
122+
return toString(record.getStatusAssigneeFieldValue(), User::getCode);
120123
// 以下は値を取得できないもの
121124
case REFERENCE_TABLE:
122125
case LABEL:

src/main/java/org/embulk/input/kintone/KintoneInputPlugin.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,27 +208,27 @@ private Type buildType(final FieldType fieldType)
208208
case DATETIME:
209209
case UPDATED_TIME:
210210
return Types.TIMESTAMP;
211-
case CREATOR:
212-
case GROUP_SELECT:
213-
case MODIFIER:
214-
case ORGANIZATION_SELECT:
215-
case STATUS_ASSIGNEE:
216211
case SUBTABLE:
217-
case USER_SELECT:
218212
return Types.JSON;
219213
case CATEGORY:
220214
case CHECK_BOX:
215+
case CREATOR:
221216
case DATE:
222217
case DROP_DOWN:
223218
case FILE:
219+
case GROUP_SELECT:
224220
case LINK:
221+
case MODIFIER:
225222
case MULTI_LINE_TEXT:
226223
case MULTI_SELECT:
224+
case ORGANIZATION_SELECT:
227225
case RADIO_BUTTON:
228226
case RICH_TEXT:
229227
case SINGLE_LINE_TEXT:
230228
case STATUS:
229+
case STATUS_ASSIGNEE:
231230
case TIME:
231+
case USER_SELECT:
232232
return Types.STRING;
233233
default:
234234
return null;

src/test/java/org/embulk/input/kintone/TestKintoneAccessor.java

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,11 @@ public void testAccess()
129129
Record testRecord = createTestRecord();
130130
KintoneAccessor accessor = new KintoneAccessor(testRecord);
131131
String multiValue = "sample1\nsample2";
132-
String userSelectValue = "[{\"name\":\"name1\",\"code\":\"code1\"},{\"name\":\"name2\",\"code\":\"code2\"}]";
133-
String groupSelect = "[{\"name\":\"name3\",\"code\":\"code3\"},{\"name\":\"name4\",\"code\":\"code4\"}]";
134-
String orgSelect = "[{\"name\":\"name5\",\"code\":\"code5\"},{\"name\":\"name5\",\"code\":\"code6\"}]";
135-
String assigneeSelect = "[{\"name\":\"name7\",\"code\":\"code7\"},{\"name\":\"name8\",\"code\":\"code8\"}]";
132+
String userSelect = "code1\ncode2";
133+
String groupSelect = "code3\ncode4";
134+
String orgSelect = "code5\ncode6";
135+
String assigneeSelect = "code7\ncode8";
136136
String subTableValue = "[{\"id\":1,\"value\":{\"sample field1\":{\"type\":\"SINGLE_LINE_TEXT\",\"value\":\"sample_text1\"}}}]";
137-
String creatorValue = "{\"name\":\"name9\",\"code\":\"code9\"}";
138-
String modifierValue = "{\"name\":\"name10\",\"code\":\"code10\"}";
139137
assertEquals(testRecord.getSingleLineTextFieldValue("文字列__1行"), accessor.get("文字列__1行"));
140138
assertEquals("1", accessor.get("数値"));
141139
assertEquals(testRecord.getMultiLineTextFieldValue("文字列__複数行"), accessor.get("文字列__複数行"));
@@ -148,17 +146,17 @@ public void testAccess()
148146
assertEquals("2018-01-01", accessor.get("日付"));
149147
assertEquals("12:34", accessor.get("時刻"));
150148
assertEquals("2018-01-02T02:30:00Z", accessor.get("日時"));
151-
assertEquals(userSelectValue, accessor.get("ユーザー選択"));
149+
assertEquals(userSelect, accessor.get("ユーザー選択"));
152150
assertEquals(groupSelect, accessor.get("グループ選択"));
153151
assertEquals(orgSelect, accessor.get("組織選択"));
154152
assertEquals(assigneeSelect, accessor.get("作業者"));
155153
assertEquals(subTableValue, accessor.get("サブテーブル"));
156154
assertEquals("sample_record_number", accessor.get("レコード番号"));
157155
assertEquals("123", accessor.get("$id"));
158156
assertEquals("456", accessor.get("$revision"));
159-
assertEquals(creatorValue, accessor.get("作成者"));
157+
assertEquals("code9", accessor.get("作成者"));
160158
assertEquals("2012-01-11T11:30:00Z", accessor.get("作成日時"));
161-
assertEquals(modifierValue, accessor.get("更新者"));
159+
assertEquals("code10", accessor.get("更新者"));
162160
assertEquals("2012-01-11T11:30:00Z", accessor.get("更新日時"));
163161
assertEquals("1.23E-12", accessor.get("計算(Calc)"));
164162
assertEquals("1234", accessor.get("数値(Calc)"));
@@ -178,9 +176,9 @@ public void testFields()
178176
assertEquals("APPCODE-1", accessor.get("レコード番号"));
179177
assertEquals("1", accessor.get("$id"));
180178
assertEquals("5", accessor.get("$revision"));
181-
assertEquals("{\"name\":\"Noboru Sato\",\"code\":\"sato\"}", accessor.get("作成者"));
179+
assertEquals("sato", accessor.get("作成者"));
182180
assertEquals("2021-01-11T11:11:11Z", accessor.get("作成日時"));
183-
assertEquals("{\"name\":\"Misaki Kato\",\"code\":\"guest/kato@cybozu.com\"}", accessor.get("更新者"));
181+
assertEquals("guest/kato@cybozu.com", accessor.get("更新者"));
184182
assertEquals("2022-02-22T22:22:22Z", accessor.get("更新日時"));
185183
assertEquals("テストです。", accessor.get("文字列(1行)"));
186184
assertEquals("テスト\nです。", accessor.get("文字列(複数行)"));
@@ -191,9 +189,9 @@ public void testFields()
191189
assertEquals("選択肢3", accessor.get("ラジオボタン"));
192190
assertEquals("選択肢4\n選択肢5", accessor.get("複数選択"));
193191
assertEquals("選択肢6", accessor.get("ドロップダウン"));
194-
assertEquals("[{\"name\":\"Noboru Sato\",\"code\":\"guest/sato@cybozu.com\"},{\"name\":\"Misaki Kato\",\"code\":\"kato\"}]", accessor.get("ユーザー選択"));
195-
assertEquals("[{\"name\":\"開発部\",\"code\":\"kaihatsu\"},{\"name\":\"人事部\",\"code\":\"jinji\"}]", accessor.get("組織選択"));
196-
assertEquals("[{\"name\":\"プロジェクトマネージャー\",\"code\":\"project_manager\"},{\"name\":\"チームリーダー\",\"code\":\"team_leader\"}]", accessor.get("グループ選択"));
192+
assertEquals("guest/sato@cybozu.com\nkato", accessor.get("ユーザー選択"));
193+
assertEquals("kaihatsu\njinji", accessor.get("組織選択"));
194+
assertEquals("project_manager\nteam_leader", accessor.get("グループ選択"));
197195
assertEquals("2012-01-11", accessor.get("日付"));
198196
assertEquals("11:30", accessor.get("時刻"));
199197
assertEquals("2012-01-11T11:30:00Z", accessor.get("日時"));
@@ -202,7 +200,7 @@ public void testFields()
202200
assertEquals("[{\"id\":48290,\"value\":{\"リッチエディター\":{\"type\":\"RICH_TEXT\",\"value\":\"\\u003ca href\\u003d\\\"https://www.cybozu.com\\\"\\u003eサイボウズ\\u003c/a\\u003e\"},\"グループ選択\":{\"type\":\"GROUP_SELECT\",\"value\":[{\"name\":\"プロジェクトマネージャー\",\"code\":\"project_manager\"},{\"name\":\"チームリーダー\",\"code\":\"team_leader\"}]},\"文字列(1行)\":{\"type\":\"SINGLE_LINE_TEXT\",\"value\":\"テストです。\"},\"ラジオボタン\":{\"type\":\"RADIO_BUTTON\",\"value\":\"選択肢3\"},\"ドロップダウン\":{\"type\":\"DROP_DOWN\",\"value\":\"選択肢6\"},\"組織選択\":{\"type\":\"ORGANIZATION_SELECT\",\"value\":[{\"name\":\"開発部\",\"code\":\"kaihatsu\"},{\"name\":\"人事部\",\"code\":\"jinji\"}]},\"ユーザー選択\":{\"type\":\"USER_SELECT\",\"value\":[{\"name\":\"Noboru Sato\",\"code\":\"guest/sato@cybozu.com\"},{\"name\":\"Misaki Kato\",\"code\":\"kato\"}]},\"日時\":{\"type\":\"DATETIME\",\"value\":\"2012-01-11T11:30:00Z\"},\"文字列(複数行)\":{\"type\":\"MULTI_LINE_TEXT\",\"value\":\"テスト\\nです。\"},\"時刻\":{\"type\":\"TIME\",\"value\":\"11:30\"},\"チェックボックス\":{\"type\":\"CHECK_BOX\",\"value\":[\"選択肢1\",\"選択肢2\"]},\"複数選択\":{\"type\":\"MULTI_SELECT\",\"value\":[\"選択肢4\",\"選択肢5\"]},\"数値\":{\"type\":\"NUMBER\",\"value\":\"123\"},\"添付ファイル\":{\"type\":\"FILE\",\"value\":[{\"contentType\":\"text/plain\",\"fileKey\":\"201202061155587E339F9067544F1A92C743460E3D12B3297\",\"name\":\"17to20_VerupLog (1).txt\",\"size\":\"23175\"},{\"contentType\":\"application/json\",\"fileKey\":\"201202061155583C763E30196F419E83E91D2E4A03746C273\",\"name\":\"17to20_VerupLog.txt\",\"size\":\"23176\"}]},\"リンク\":{\"type\":\"LINK\",\"value\":\"https://cybozu.co.jp/\"},\"計算\":{\"type\":\"CALC\",\"value\":\"456\"},\"日付\":{\"type\":\"DATE\",\"value\":\"2012-01-11\"}}},{\"id\":48291,\"value\":{\"リッチエディター\":{\"type\":\"RICH_TEXT\",\"value\":\"\\u003ca href\\u003d\\\"https://www.cybozu.com\\\"\\u003eサイボウズ\\u003c/a\\u003e\"},\"グループ選択\":{\"type\":\"GROUP_SELECT\",\"value\":[{\"name\":\"プロジェクトマネージャー\",\"code\":\"project_manager\"},{\"name\":\"チームリーダー\",\"code\":\"team_leader\"}]},\"文字列(1行)\":{\"type\":\"SINGLE_LINE_TEXT\",\"value\":\"テストです。\"},\"ラジオボタン\":{\"type\":\"RADIO_BUTTON\",\"value\":\"選択肢3\"},\"ドロップダウン\":{\"type\":\"DROP_DOWN\",\"value\":\"選択肢6\"},\"組織選択\":{\"type\":\"ORGANIZATION_SELECT\",\"value\":[{\"name\":\"開発部\",\"code\":\"kaihatsu\"},{\"name\":\"人事部\",\"code\":\"jinji\"}]},\"ユーザー選択\":{\"type\":\"USER_SELECT\",\"value\":[{\"name\":\"Noboru Sato\",\"code\":\"guest/sato@cybozu.com\"},{\"name\":\"Misaki Kato\",\"code\":\"kato\"}]},\"日時\":{\"type\":\"DATETIME\",\"value\":\"2012-01-11T11:30:00Z\"},\"文字列(複数行)\":{\"type\":\"MULTI_LINE_TEXT\",\"value\":\"テスト\\nです。\"},\"時刻\":{\"type\":\"TIME\",\"value\":\"11:30\"},\"チェックボックス\":{\"type\":\"CHECK_BOX\",\"value\":[\"選択肢1\",\"選択肢2\"]},\"複数選択\":{\"type\":\"MULTI_SELECT\",\"value\":[\"選択肢4\",\"選択肢5\"]},\"数値\":{\"type\":\"NUMBER\",\"value\":\"123\"},\"添付ファイル\":{\"type\":\"FILE\",\"value\":[{\"contentType\":\"text/plain\",\"fileKey\":\"201202061155587E339F9067544F1A92C743460E3D12B3297\",\"name\":\"17to20_VerupLog (1).txt\",\"size\":\"23175\"},{\"contentType\":\"application/json\",\"fileKey\":\"201202061155583C763E30196F419E83E91D2E4A03746C273\",\"name\":\"17to20_VerupLog.txt\",\"size\":\"23176\"}]},\"リンク\":{\"type\":\"LINK\",\"value\":\"https://cybozu.co.jp/\"},\"計算\":{\"type\":\"CALC\",\"value\":\"456\"},\"日付\":{\"type\":\"DATE\",\"value\":\"2012-01-11\"}}}]", accessor.get("テーブル"));
203201
assertEquals("category1\ncategory2", accessor.get("カテゴリー"));
204202
assertEquals("未処理", accessor.get("ステータス"));
205-
assertEquals("[{\"name\":\"Noboru Sato\",\"code\":\"sato\"},{\"name\":\"Misaki Kato\",\"code\":\"kato\"}]", accessor.get("作業者"));
203+
assertEquals("sato\nkato", accessor.get("作業者"));
206204
}
207205

208206
private Record record()
@@ -268,10 +266,10 @@ public void testNullFields()
268266
assertNull(accessor.get("$id"));
269267
assertNull(accessor.get("$revision"));
270268
assertNull(accessor.get("作成者"));
271-
assertEquals("{}", accessor.get("作成者(null項目)"));
269+
assertNull(accessor.get("作成者(null項目)"));
272270
assertNull(accessor.get("作成日時"));
273271
assertNull(accessor.get("更新者"));
274-
assertEquals("{}", accessor.get("更新者(null項目)"));
272+
assertNull(accessor.get("更新者(null項目)"));
275273
assertNull(accessor.get("更新日時"));
276274
assertNull(accessor.get("文字列(1行)"));
277275
assertNull(accessor.get("文字列(複数行)"));
@@ -284,15 +282,15 @@ public void testNullFields()
284282
assertEquals("", accessor.get("複数選択(空)"));
285283
assertEquals("", accessor.get("複数選択(null要素)"));
286284
assertNull(accessor.get("ドロップダウン"));
287-
assertEquals("[]", accessor.get("ユーザー選択(空)"));
288-
assertEquals("[null,null]", accessor.get("ユーザー選択(null要素)"));
289-
assertEquals("[{},{}]", accessor.get("ユーザー選択(null項目)"));
290-
assertEquals("[]", accessor.get("組織選択(空)"));
291-
assertEquals("[null,null]", accessor.get("組織選択(null要素)"));
292-
assertEquals("[{},{}]", accessor.get("組織選択(null項目)"));
293-
assertEquals("[]", accessor.get("グループ選択(空)"));
294-
assertEquals("[null,null]", accessor.get("グループ選択(null要素)"));
295-
assertEquals("[{},{}]", accessor.get("グループ選択(null項目)"));
285+
assertEquals("", accessor.get("ユーザー選択(空)"));
286+
assertEquals("", accessor.get("ユーザー選択(null要素)"));
287+
assertEquals("", accessor.get("ユーザー選択(null項目)"));
288+
assertEquals("", accessor.get("組織選択(空)"));
289+
assertEquals("", accessor.get("組織選択(null要素)"));
290+
assertEquals("", accessor.get("組織選択(null項目)"));
291+
assertEquals("", accessor.get("グループ選択(空)"));
292+
assertEquals("", accessor.get("グループ選択(null要素)"));
293+
assertEquals("", accessor.get("グループ選択(null項目)"));
296294
assertNull(accessor.get("日付"));
297295
assertNull(accessor.get("時刻"));
298296
assertNull(accessor.get("日時"));
@@ -308,7 +306,7 @@ public void testNullFields()
308306
assertEquals("", accessor.get("カテゴリー(null要素)"));
309307
*/
310308
assertNull(accessor.get("ステータス"));
311-
assertEquals("[]", accessor.get("作業者(空)"));
309+
assertEquals("", accessor.get("作業者(空)"));
312310
/* ビルトインフィールドは 1 つしか追加できない
313311
assertEquals("", accessor.get("作業者(null要素)"));
314312
assertEquals("", accessor.get("作業者(null項目)"));

0 commit comments

Comments
 (0)