2323import java .io .IOException ;
2424import java .util .ArrayList ;
2525import java .util .Arrays ;
26+ import java .util .Collection ;
27+ import java .util .HashMap ;
2628import java .util .List ;
29+ import java .util .Map ;
2730
2831import org .junit .Before ;
2932import org .junit .Test ;
3033
34+ import com .arangodb .entity .BaseDocument ;
35+ import com .arangodb .entity .CollectionOptions ;
36+ import com .arangodb .entity .CollectionType ;
3137import com .arangodb .entity .ImportResultEntity ;
38+ import com .arangodb .util .ImportOptions ;
39+ import com .arangodb .util .ImportOptions .OnDuplicate ;
40+ import com .arangodb .util .ImportOptionsJson ;
41+ import com .arangodb .util .ImportOptionsRaw ;
42+ import com .arangodb .util .ImportOptionsRaw .ImportType ;
3243import com .arangodb .util .TestUtils ;
3344
3445/**
3950public class ArangoDriverImportTest extends BaseTest {
4051
4152 private static final String UT_IMPORT_TEST = "ut-import-test" ;
53+ private static final String UT_IMPORT_TEST_EDGE = "ut-import-test-edge" ;
4254
4355 @ Before
4456 public void setUp () {
@@ -50,6 +62,16 @@ public void setUp() {
5062 driver .createCollection (UT_IMPORT_TEST );
5163 } catch (final ArangoException e ) {
5264 }
65+ try {
66+ driver .deleteCollection (UT_IMPORT_TEST_EDGE );
67+ } catch (final ArangoException e ) {
68+ }
69+ try {
70+ CollectionOptions options = new CollectionOptions ();
71+ options .setType (CollectionType .EDGE );
72+ driver .createCollection (UT_IMPORT_TEST_EDGE , options );
73+ } catch (final ArangoException e ) {
74+ }
5375 }
5476
5577 @ Test
@@ -85,6 +107,244 @@ public void test_import_documents_404() throws ArangoException, IOException {
85107
86108 }
87109
110+ @ Test
111+ public void test_import_xsv_404 () throws ArangoException , IOException {
112+
113+ try {
114+ driver .deleteCollection (UT_IMPORT_TEST );
115+ } catch (final ArangoException e ) {
116+ }
117+
118+ final List <List <?>> values = new ArrayList <List <?>>();
119+ values .add (Arrays .asList ("firstName" , "lastName" , "age" , "gender" ));
120+ values .add (Arrays .asList ("Joe" , "Public" , 42 , "male" , 10 )); // error
121+ values .add (Arrays .asList ("Jane" , "Doe" , 31 , "female" ));
122+
123+ try {
124+ driver .importDocuments (UT_IMPORT_TEST , values );
125+ fail ();
126+ } catch (final ArangoException e ) {
127+ assertThat (e .getCode (), is (404 ));
128+ assertThat (e .getErrorNumber (), is (1203 ));
129+ }
130+
131+ }
132+
133+ @ Test
134+ public void test_import_updateOnDuplicate () throws ArangoException , IOException {
135+
136+ Collection <BaseDocument > docs = new ArrayList <BaseDocument >();
137+ for (int i = 0 ; i < 100 ; i ++) {
138+ BaseDocument doc = new BaseDocument ();
139+ doc .setDocumentKey (String .valueOf (i ));
140+ docs .add (doc );
141+ }
142+ ImportOptionsJson options = new ImportOptionsJson ();
143+ {
144+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
145+ assertThat (result .getStatusCode (), is (201 ));
146+ assertThat (result .isError (), is (false ));
147+ assertThat (result .getCreated (), is (docs .size ()));
148+ }
149+ options .setOnDuplicate (OnDuplicate .UPDATE );
150+ {
151+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
152+ assertThat (result .getStatusCode (), is (201 ));
153+ assertThat (result .isError (), is (false ));
154+ assertThat (result .getCreated (), is (0 ));
155+ assertThat (result .getUpdated (), is (docs .size ()));
156+ }
157+ }
158+
159+ @ Test
160+ public void test_import_ignoreOnDuplicate () throws ArangoException , IOException {
161+
162+ Collection <BaseDocument > docs = new ArrayList <BaseDocument >();
163+ for (int i = 0 ; i < 100 ; i ++) {
164+ BaseDocument doc = new BaseDocument ();
165+ doc .setDocumentKey (String .valueOf (i ));
166+ docs .add (doc );
167+ }
168+ ImportOptionsJson options = new ImportOptionsJson ();
169+ {
170+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
171+ assertThat (result .getStatusCode (), is (201 ));
172+ assertThat (result .isError (), is (false ));
173+ assertThat (result .getCreated (), is (docs .size ()));
174+ }
175+ options .setOnDuplicate (OnDuplicate .IGNORE );
176+ {
177+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
178+ assertThat (result .getStatusCode (), is (201 ));
179+ assertThat (result .isError (), is (false ));
180+ assertThat (result .getCreated (), is (0 ));
181+ assertThat (result .getIgnored (), is (docs .size ()));
182+ }
183+ }
184+
185+ @ Test
186+ public void test_import_replaceOnDuplicate () throws ArangoException , IOException {
187+
188+ Collection <BaseDocument > docs = new ArrayList <BaseDocument >();
189+ for (int i = 0 ; i < 100 ; i ++) {
190+ BaseDocument doc = new BaseDocument ();
191+ doc .setDocumentKey (String .valueOf (i ));
192+ docs .add (doc );
193+ }
194+ ImportOptionsJson options = new ImportOptionsJson ();
195+ {
196+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
197+ assertThat (result .getStatusCode (), is (201 ));
198+ assertThat (result .isError (), is (false ));
199+ assertThat (result .getCreated (), is (docs .size ()));
200+ }
201+ options .setOnDuplicate (OnDuplicate .REPLACE );
202+ {
203+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
204+ assertThat (result .getStatusCode (), is (201 ));
205+ assertThat (result .isError (), is (false ));
206+ assertThat (result .getCreated (), is (0 ));
207+ assertThat (result .getUpdated (), is (docs .size ()));
208+ }
209+ }
210+
211+ @ Test
212+ public void test_import_errorOnDuplicate () throws ArangoException , IOException {
213+
214+ Collection <BaseDocument > docs = new ArrayList <BaseDocument >();
215+ for (int i = 0 ; i < 100 ; i ++) {
216+ BaseDocument doc = new BaseDocument ();
217+ doc .setDocumentKey (String .valueOf (i ));
218+ docs .add (doc );
219+ }
220+ ImportOptionsJson options = new ImportOptionsJson ();
221+ {
222+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
223+ assertThat (result .getStatusCode (), is (201 ));
224+ assertThat (result .isError (), is (false ));
225+ assertThat (result .getCreated (), is (docs .size ()));
226+ }
227+ options .setOnDuplicate (OnDuplicate .ERROR );
228+ {
229+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
230+ assertThat (result .getStatusCode (), is (201 ));
231+ assertThat (result .isError (), is (false ));
232+ assertThat (result .getCreated (), is (0 ));
233+ assertThat (result .getErrors (), is (docs .size ()));
234+ }
235+ }
236+
237+ @ Test
238+ public void test_import_overwrite () throws ArangoException , IOException {
239+ ImportOptionsJson options = new ImportOptionsJson ();
240+ {
241+ Collection <BaseDocument > docs = new ArrayList <BaseDocument >();
242+ for (int i = 0 ; i < 100 ; i ++) {
243+ BaseDocument doc = new BaseDocument ();
244+ doc .setDocumentKey (String .valueOf (i ));
245+ docs .add (doc );
246+ }
247+ {
248+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
249+ assertThat (result .getStatusCode (), is (201 ));
250+ assertThat (result .isError (), is (false ));
251+ assertThat (result .getCreated (), is (docs .size ()));
252+ assertThat (docs .size (), is (driver .getDocuments (UT_IMPORT_TEST ).size ()));
253+ }
254+ }
255+ {
256+ Collection <BaseDocument > docs2 = new ArrayList <BaseDocument >();
257+ for (int i = 0 ; i < 50 ; i ++) {
258+ BaseDocument doc = new BaseDocument ();
259+ doc .setDocumentKey (String .valueOf (-i ));
260+ docs2 .add (doc );
261+ }
262+ options .setOverwrite (true );
263+ {
264+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs2 , options );
265+ assertThat (result .getStatusCode (), is (201 ));
266+ assertThat (result .isError (), is (false ));
267+ assertThat (result .getCreated (), is (docs2 .size ()));
268+ assertThat (docs2 .size (), is (driver .getDocuments (UT_IMPORT_TEST ).size ()));
269+ }
270+ }
271+ }
272+
273+ @ Test
274+ public void test_import_from_to_Prefix () throws ArangoException , IOException {
275+ ImportOptionsJson options = new ImportOptionsJson ();
276+ {
277+ Collection <BaseDocument > docs = new ArrayList <BaseDocument >();
278+ for (int i = 0 ; i < 100 ; i ++) {
279+ BaseDocument doc = new BaseDocument ();
280+ doc .setDocumentKey (String .valueOf (i ));
281+ docs .add (doc );
282+ }
283+ {
284+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST , docs , options );
285+ assertThat (result .getStatusCode (), is (201 ));
286+ assertThat (result .isError (), is (false ));
287+ assertThat (result .getCreated (), is (docs .size ()));
288+ }
289+ }
290+ {
291+ Collection <Map <String , Object >> edgeDocs = new ArrayList <Map <String , Object >>();
292+ for (int i = 0 ; i < 100 ; i ++) {
293+ final HashMap <String , Object > doc = new HashMap <String , Object >();
294+ doc .put (BaseDocument .KEY , String .valueOf (i ));
295+ doc .put (BaseDocument .FROM , String .valueOf (i ));
296+ doc .put (BaseDocument .TO , String .valueOf (i ));
297+ edgeDocs .add (doc );
298+ }
299+ options .setFromPrefix (UT_IMPORT_TEST );
300+ options .setToPrefix (UT_IMPORT_TEST );
301+ final ImportResultEntity result = driver .importDocuments (UT_IMPORT_TEST_EDGE , edgeDocs , options );
302+ assertThat (result .getStatusCode (), is (201 ));
303+ assertThat (result .isError (), is (false ));
304+ assertThat (result .getCreated (), is (edgeDocs .size ()));
305+ }
306+ }
307+
308+ @ Test
309+ public void test_import_rawList () throws ArangoException {
310+ String values = "[{\" _key\" :\" a\" },{\" _key\" :\" b\" }]" ;
311+ ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw (ImportType .LIST );
312+ final ImportResultEntity result = driver .importDocumentsRaw (UT_IMPORT_TEST , values , importOptionsRaw );
313+ assertThat (result .getStatusCode (), is (201 ));
314+ assertThat (result .isError (), is (false ));
315+ assertThat (result .getCreated (), is (2 ));
316+ }
317+
318+ @ Test
319+ public void test_import_rawDocuments () throws ArangoException {
320+ String values = "{\" _key\" :\" a\" }\n {\" _key\" :\" b\" }" ;
321+ ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw (ImportType .DOCUMENTS );
322+ final ImportResultEntity result = driver .importDocumentsRaw (UT_IMPORT_TEST , values , importOptionsRaw );
323+ assertThat (result .getStatusCode (), is (201 ));
324+ assertThat (result .isError (), is (false ));
325+ assertThat (result .getCreated (), is (2 ));
326+ }
327+
328+ @ Test
329+ public void test_import_rawAutoList () throws ArangoException {
330+ String values = "[{\" _key\" :\" a\" },{\" _key\" :\" b\" }]" ;
331+ ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw (ImportType .LIST );
332+ final ImportResultEntity result = driver .importDocumentsRaw (UT_IMPORT_TEST , values , importOptionsRaw );
333+ assertThat (result .getStatusCode (), is (201 ));
334+ assertThat (result .isError (), is (false ));
335+ assertThat (result .getCreated (), is (2 ));
336+ }
337+
338+ @ Test
339+ public void test_import_rawAutoDocuments () throws ArangoException {
340+ String values = "{\" _key\" :\" a\" }\n {\" _key\" :\" b\" }" ;
341+ ImportOptionsRaw importOptionsRaw = new ImportOptionsRaw (ImportType .AUTO );
342+ final ImportResultEntity result = driver .importDocumentsRaw (UT_IMPORT_TEST , values , importOptionsRaw );
343+ assertThat (result .getStatusCode (), is (201 ));
344+ assertThat (result .isError (), is (false ));
345+ assertThat (result .getCreated (), is (2 ));
346+ }
347+
88348 @ Test
89349 public void test_import_xsv () throws ArangoException , IOException {
90350
@@ -100,7 +360,9 @@ public void test_import_xsv() throws ArangoException, IOException {
100360 assertThat (result .getCreated (), is (2 ));
101361 assertThat (result .getErrors (), is (0 ));
102362 assertThat (result .getEmpty (), is (0 ));
103-
363+ assertThat (result .getUpdated (), is (0 ));
364+ assertThat (result .getIgnored (), is (0 ));
365+ assertThat (result .getDetails ().size (), is (0 ));
104366 }
105367
106368 @ Test
@@ -118,30 +380,22 @@ public void test_import_xsv_errors() throws ArangoException, IOException {
118380 assertThat (result .getCreated (), is (1 ));
119381 assertThat (result .getErrors (), is (1 ));
120382 assertThat (result .getEmpty (), is (0 ));
121-
383+ assertThat (result .getUpdated (), is (0 ));
384+ assertThat (result .getIgnored (), is (0 ));
385+ assertThat (result .getDetails ().size (), is (0 ));
122386 }
123387
124388 @ Test
125- public void test_import_xsv_404 () throws ArangoException , IOException {
126-
127- try {
128- driver .deleteCollection (UT_IMPORT_TEST );
129- } catch (final ArangoException e ) {
130- }
389+ public void test_import_xsv_raw () throws ArangoException , IOException {
131390
132- final List <List <?>> values = new ArrayList <List <?>>();
133- values .add (Arrays .asList ("firstName" , "lastName" , "age" , "gender" ));
134- values .add (Arrays .asList ("Joe" , "Public" , 42 , "male" , 10 )); // error
135- values .add (Arrays .asList ("Jane" , "Doe" , 31 , "female" ));
391+ final String values = "[\" firstName\" ,\" lastName\" ,\" age\" ,\" gender\" ]\n [\" Joe\" ,\" Public\" ,42,\" male\" ]\n [\" Jane\" ,\" Doe\" ,31,\" female\" ]" ;
136392
137- try {
138- driver .importDocuments (UT_IMPORT_TEST , values );
139- fail ();
140- } catch (final ArangoException e ) {
141- assertThat (e .getCode (), is (404 ));
142- assertThat (e .getErrorNumber (), is (1203 ));
143- }
393+ final ImportResultEntity result = driver .importDocumentsByHeaderValuesRaw (UT_IMPORT_TEST , values ,
394+ new ImportOptions ());
144395
396+ assertThat (result .getStatusCode (), is (201 ));
397+ assertThat (result .isError (), is (false ));
398+ assertThat (result .getCreated (), is (2 ));
145399 }
146400
147401}
0 commit comments