Skip to content
This repository has been archived by the owner on Jul 30, 2020. It is now read-only.

Commit

Permalink
Merge pull request #30 from kintone/v0.4.0
Browse files Browse the repository at this point in the history
V0.4.0
  • Loading branch information
youtr-s authored Jul 31, 2019
2 parents d8e135b + 4463fe7 commit adb9353
Show file tree
Hide file tree
Showing 5 changed files with 589 additions and 114 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>com.cybozu.kintone</groupId>
<artifactId>kintone-sdk</artifactId>
<version>0.3.0</version>
<version>0.4.0</version>
<packaging>jar</packaging>

<name>kintone-sdk</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@
public class BulksException extends Exception{
private static final long serialVersionUID = 1L;
private ArrayList<Object> results;
public Object getResults() {
return results;
}

public BulksException(ArrayList<Object> object) {
this.results = object;
}

public ArrayList<Object> getResults() {
return results;
}

}
91 changes: 48 additions & 43 deletions src/main/java/com/cybozu/kintone/client/module/record/Record.java
Original file line number Diff line number Diff line change
Expand Up @@ -682,10 +682,9 @@ public void deleteComment(Integer app, Integer record, Integer comment) throws K
DeleteCommentRecordRequest deleteCommentRequest = new DeleteCommentRecordRequest(app, record, comment);
String requestBody = parser.parseObject(deleteCommentRequest);
this.connection.request(ConnectionConstants.DELETE_REQUEST, ConnectionConstants.RECORD_COMMENT, requestBody);
;
}

private BulkRequestResponse updateBulkRecord(int app, ArrayList<RecordUpdateItem> records) throws KintoneAPIException {
private BulkRequestResponse updateBulkRecord(Integer app, ArrayList<RecordUpdateItem> records) throws KintoneAPIException {
BulkRequest bulkRequest = new BulkRequest(this.connection);
int length = records.size();
int loopTimes = (int) length / LIMIT_UPDATE_RECORD;
Expand All @@ -704,7 +703,7 @@ private BulkRequestResponse updateBulkRecord(int app, ArrayList<RecordUpdateItem
return bulkRequest.execute();
}

private BulkRequestResponse addBulkRecord(int app, ArrayList<HashMap<String, FieldValue>> records) throws KintoneAPIException {
private BulkRequestResponse addBulkRecord(Integer app, ArrayList<HashMap<String, FieldValue>> records) throws KintoneAPIException {
BulkRequest bulkRequest = new BulkRequest(this.connection);
int length = records.size();
int loopTimes = (int) length / LIMIT_POST_RECORD;
Expand Down Expand Up @@ -744,58 +743,61 @@ private BulkRequestResponse deleteBulkRecord(Integer app, ArrayList<Integer> ids
return bulkRequest.execute();
}

public BulkRequestResponse deleteAllRecordsByQuery(Integer app, String query) throws BulksException {
public BulkRequestResponse deleteAllRecordsByQuery(Integer app, String query) throws BulksException, KintoneAPIException {
BulkRequestResponse requestResponse = new BulkRequestResponse();
try {
ArrayList<String> fields = new ArrayList<>();
fields.add("Record_number");
GetRecordsResponse getRecordsRequest = getAllRecordsByQuery(app, query, fields, true);
ArrayList<HashMap<String, FieldValue>> recordsArray = getRecordsRequest.getRecords();
int totalRecords = getRecordsRequest.getTotalCount();
ArrayList<String> fields = new ArrayList<>();
fields.add("$id");
GetRecordsResponse getRecordsRequest = getAllRecordsByQuery(app, query, fields, true);
ArrayList<HashMap<String, FieldValue>> recordsArray = getRecordsRequest.getRecords();
int totalRecords = getRecordsRequest.getTotalCount();

int numRecordsPerBulk = NUM_BULK_REQUEST * LIMIT_DELETE_RECORD;
int numBulkRequest = totalRecords / numRecordsPerBulk;
int numRecordsPerBulk = NUM_BULK_REQUEST * LIMIT_DELETE_RECORD;
int numBulkRequest = totalRecords / numRecordsPerBulk;

if ((totalRecords % numRecordsPerBulk) > 0) {
numBulkRequest++;
}
if (totalRecords > 0 && totalRecords < numRecordsPerBulk) {
numBulkRequest = 1;
}
ArrayList<Integer> ids = new ArrayList<>();
recordsArray.forEach(item -> {
Integer id = Integer.parseInt(item.get("Record_number").getValue().toString());
ids.add(id);
});

int offset = 0;
for (int i = 0; i < numBulkRequest; i++) {
int end = (totalRecords - offset) < numRecordsPerBulk ? totalRecords : (offset + numRecordsPerBulk);
List<Integer> idPerBulk = ids.subList(offset, end);
ArrayList<Integer> idPerBulkArray = new ArrayList<>(idPerBulk);

try {
BulkRequestResponse requestResponsePerBulk = this.deleteBulkRecord(app, idPerBulkArray);
requestResponse.addResponses(requestResponsePerBulk.getResults());
} catch (KintoneAPIException e) {
requestResponse.addResponse(e);
throw new BulksException(requestResponse.getResults());
}
offset += numRecordsPerBulk;
if ((totalRecords % numRecordsPerBulk) > 0) {
numBulkRequest++;
}
if (totalRecords > 0 && totalRecords < numRecordsPerBulk) {
numBulkRequest = 1;
}
ArrayList<Integer> ids = new ArrayList<>();
recordsArray.forEach(item -> {
Integer id = Integer.parseInt(item.get("$id").getValue().toString());
ids.add(id);
});

int offset = 0;
for (int i = 0; i < numBulkRequest; i++) {
int end = (totalRecords - offset) < numRecordsPerBulk ? totalRecords : (offset + numRecordsPerBulk);
List<Integer> idPerBulk = ids.subList(offset, end);
ArrayList<Integer> idPerBulkArray = new ArrayList<>(idPerBulk);

try {
BulkRequestResponse requestResponsePerBulk = this.deleteBulkRecord(app, idPerBulkArray);
requestResponse.addResponses(requestResponsePerBulk.getResults());
} catch (KintoneAPIException e) {
requestResponse.addResponse(e);
throw new BulksException(requestResponse.getResults());
}
return requestResponse;
} catch (KintoneAPIException e) {
throw new BulksException(requestResponse.getResults());
offset += numRecordsPerBulk;
}
return requestResponse;
}

public BulkRequestResponse deleteAllRecordsByQuery(Integer app) throws BulksException, KintoneAPIException {
return deleteAllRecordsByQuery(app, "");
}

public BulkRequestResponse addAllRecords(Integer app, ArrayList<HashMap<String, FieldValue>> records) throws BulksException {
if (records == null) {
records = new ArrayList<HashMap<String, FieldValue>>();
}
int numRecordsPerBulk = NUM_BULK_REQUEST * LIMIT_POST_RECORD;
int numBulkRequest = (int) (records.size() / numRecordsPerBulk);
if ((records.size() % numRecordsPerBulk) > 0) {
numBulkRequest++;
}
if (records.size() > 0 && records.size() < numRecordsPerBulk) {
if (records.size() >= 0 && records.size() < numRecordsPerBulk) {
numBulkRequest = 1;
}
int offset = 0;
Expand All @@ -818,12 +820,15 @@ public BulkRequestResponse addAllRecords(Integer app, ArrayList<HashMap<String,
}

public BulkRequestResponse updateAllRecords(Integer app, ArrayList<RecordUpdateItem> records) throws BulksException {
if (records == null) {
records = new ArrayList<RecordUpdateItem>();
}
int numRecordsPerBulk = NUM_BULK_REQUEST * LIMIT_UPDATE_RECORD;
int numBulkRequest = (int) records.size() / numRecordsPerBulk;
if ((records.size() % numRecordsPerBulk) > 0) {
numBulkRequest++;
}
if (records.size() > 0 && records.size() < numRecordsPerBulk) {
if (records.size() >= 0 && records.size() < numRecordsPerBulk) {
numBulkRequest = 1;
}
int offset = 0;
Expand Down
Loading

0 comments on commit adb9353

Please sign in to comment.