com.ibm.maximo.oslc.BulkProcessor Maven / Gradle / Ivy
package com.ibm.maximo.oslc;
import java.io.IOException;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
public class BulkProcessor {
private JsonArrayBuilder bulkArray = Json.createArrayBuilder();
private MaximoConnector mc;
private String uri;
public BulkProcessor(MaximoConnector mc, String uri){
this.mc = mc;
this.uri = uri;
}
public BulkProcessor create(JsonObject jo){
JsonObject obj = Json.createObjectBuilder().add("_data", jo).build();
this.bulkArray.add(obj);
return this;
}
public BulkProcessor update(JsonObject jo, String uri, String... properties){
JsonObjectBuilder objb = Json.createObjectBuilder().add("_data", jo);
this.addMeta(objb, "PATCH", uri, properties);
return this;
}
public BulkProcessor merge(JsonObject jo, String uri, String... properties){
JsonObjectBuilder objb = Json.createObjectBuilder().add("_data", jo);
this.addMeta(objb, "MERGE", uri, properties);
return this;
}
public BulkProcessor delete(String uri){
JsonObjectBuilder objb = Json.createObjectBuilder();
this.addMeta(objb, "DELETE", uri);
return this;
}
private void addMeta(JsonObjectBuilder objb, String method, String uri, String... properties){
JsonObjectBuilder objBuilder = Json.createObjectBuilder();
String propStr = this.propertiesBuilder(properties);
if(propStr != null){
objBuilder.add("properties", propStr);
}
if(method != null && !method.isEmpty()){
objBuilder.add("method", method);
}
if(uri != null && !uri.isEmpty()){
objBuilder.add("uri", uri);
}
JsonObject objMeta = objBuilder.build();
if(!objMeta.isEmpty()){
objb.add("_meta", objMeta);
}
this.bulkArray.add(objb.build());
}
public JsonArray processBulk(){
JsonArray jarr = null;
try {
jarr = this.mc.bulk(this.uri, this.bulkArray.build());
} catch (IOException e) {
e.printStackTrace();
} catch (OslcException e) {
e.printStackTrace();
}
return jarr;
}
private String propertiesBuilder(String... properties){
StringBuilder propStrb = new StringBuilder();
for(String property: properties){
propStrb.append(property).append(",");
}
if(propStrb.length()>0){
if(propStrb.toString().endsWith(",")){
return propStrb.substring(0,propStrb.length()-1);
}else{
return propStrb.toString();
}
}
return null;
}
}