Skip to content

Commit 6b7a491

Browse files
author
a-brandt
committed
added import options and raw import
1 parent 741211e commit 6b7a491

File tree

3 files changed

+88
-8
lines changed

3 files changed

+88
-8
lines changed

src/main/java/com/arangodb/ArangoDriver.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@
8181
import com.arangodb.util.GraphEdgesOptions;
8282
import com.arangodb.util.GraphQueryUtil;
8383
import com.arangodb.util.GraphVerticesOptions;
84+
import com.arangodb.util.ImportOptions;
85+
import com.arangodb.util.ImportOptionsRaw;
8486
import com.arangodb.util.MapBuilder;
8587
import com.arangodb.util.ShortestPathOptions;
8688
import com.arangodb.util.TraversalQueryOptions;
@@ -2964,7 +2966,7 @@ public List<UserEntity> getUsers() throws ArangoException {
29642966
}
29652967

29662968
/**
2967-
* Creates documents in the collection.
2969+
* Creates documents in a collection.
29682970
*
29692971
* @param collection
29702972
* the collection as a string
@@ -2975,7 +2977,45 @@ public List<UserEntity> getUsers() throws ArangoException {
29752977
*/
29762978
public ImportResultEntity importDocuments(final String collection, final Collection<?> values)
29772979
throws ArangoException {
2978-
return importDriver.importDocuments(getDefaultDatabase(), collection, values);
2980+
return importDriver.importDocuments(getDefaultDatabase(), collection, values, new ImportOptions());
2981+
}
2982+
2983+
/**
2984+
* Creates documents in a collection.
2985+
*
2986+
* @param collection
2987+
* the collection as a string
2988+
* @param values
2989+
* a list of Objects that will be stored as documents
2990+
* @param importOptions
2991+
* options for importing documents
2992+
* @return ImportResultEntity
2993+
* @throws ArangoException
2994+
*/
2995+
public ImportResultEntity importDocuments(
2996+
final String collection,
2997+
final Collection<?> values,
2998+
final ImportOptions importOptions) throws ArangoException {
2999+
return importDriver.importDocuments(getDefaultDatabase(), collection, values, importOptions);
3000+
}
3001+
3002+
/**
3003+
* Creates documents in a collection.
3004+
*
3005+
* @param collection
3006+
* the collection as a string
3007+
* @param values
3008+
* a raw string containing JSON data
3009+
* @param importOptions
3010+
* options for importing documents
3011+
* @return ImportResultEntity
3012+
* @throws ArangoException
3013+
*/
3014+
public ImportResultEntity importDocumentsRaw(
3015+
final String collection,
3016+
final String values,
3017+
final ImportOptionsRaw importOptionsRaw) throws ArangoException {
3018+
return importDriver.importDocumentsRaw(getDefaultDatabase(), collection, values, importOptionsRaw);
29793019
}
29803020

29813021
/**

src/main/java/com/arangodb/InternalImportDriver.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,25 @@
44

55
import com.arangodb.entity.ImportResultEntity;
66
import com.arangodb.impl.BaseDriverInterface;
7+
import com.arangodb.util.ImportOptions;
8+
import com.arangodb.util.ImportOptionsRaw;
79

810
/**
911
* Created by fbartels on 10/27/14.
1012
*/
1113
public interface InternalImportDriver extends BaseDriverInterface {
1214

13-
ImportResultEntity importDocuments(String database, String collection, Collection<?> values) throws ArangoException;
15+
ImportResultEntity importDocuments(
16+
String database,
17+
String collection,
18+
Collection<?> values,
19+
ImportOptions importOptions) throws ArangoException;
20+
21+
ImportResultEntity importDocumentsRaw(
22+
String database,
23+
String collection,
24+
String values,
25+
ImportOptionsRaw importOptionsRaw) throws ArangoException;
1426

1527
ImportResultEntity importDocumentsByHeaderValues(
1628
String database,

src/main/java/com/arangodb/impl/InternalImportDriverImpl.java

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717
package com.arangodb.impl;
1818

1919
import java.util.Collection;
20+
import java.util.Map;
2021

2122
import com.arangodb.ArangoConfigure;
2223
import com.arangodb.ArangoException;
2324
import com.arangodb.entity.EntityFactory;
2425
import com.arangodb.entity.ImportResultEntity;
2526
import com.arangodb.http.HttpManager;
2627
import com.arangodb.http.HttpResponseEntity;
28+
import com.arangodb.util.ImportOptions;
29+
import com.arangodb.util.ImportOptionsRaw;
2730
import com.arangodb.util.MapBuilder;
2831

2932
/**
@@ -39,12 +42,37 @@ public class InternalImportDriverImpl extends BaseArangoDriverImpl implements co
3942
}
4043

4144
@Override
42-
public ImportResultEntity importDocuments(String database, String collection, Collection<?> values)
43-
throws ArangoException {
45+
public ImportResultEntity importDocuments(
46+
String database,
47+
String collection,
48+
Collection<?> values,
49+
ImportOptions importOptions) throws ArangoException {
4450

45-
HttpResponseEntity res = httpManager.doPost(createEndpointUrl(database, "/_api/import"),
46-
new MapBuilder().put(COLLECTION, collection).put("type", "array").get(),
47-
EntityFactory.toJsonString(values));
51+
Map<String, Object> map = importOptions.toMap();
52+
map.put("type", "list");
53+
54+
return importDocumentsInternal(database, collection, EntityFactory.toJsonString(values), map);
55+
}
56+
57+
@Override
58+
public ImportResultEntity importDocumentsRaw(
59+
String database,
60+
String collection,
61+
String values,
62+
ImportOptionsRaw importOptionsRaw) throws ArangoException {
63+
64+
return importDocumentsInternal(database, collection, values, importOptionsRaw.toMap());
65+
}
66+
67+
public ImportResultEntity importDocumentsInternal(
68+
String database,
69+
String collection,
70+
String values,
71+
Map<String, Object> importOptions) throws ArangoException {
72+
73+
importOptions.put(COLLECTION, collection);
74+
75+
HttpResponseEntity res = httpManager.doPost(createEndpointUrl(database, "/_api/import"), importOptions, values);
4876

4977
return createEntity(res, ImportResultEntity.class);
5078

0 commit comments

Comments
 (0)