/* * Copyright 2014 Baidu, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. */ package com.baidubce.services.moladb.model; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import com.baidubce.BceClientException; import com.baidubce.auth.BceCredentials; import com.baidubce.model.AbstractBceRequest; import com.baidubce.services.moladb.MolaDbConstants; import com.baidubce.util.JsonUtils; /** * Represents the input of a BatchWriteItem operation. */ public class BatchWriteItemRequest extends AbstractBceRequest { private Map<String, List<WriteRequest>> requestItems; /** * Constructs a new BatchWriteItemRequest object. * Callers should use the setter or fluent setter (with...) methods to * initialize any additional object members. */ public BatchWriteItemRequest() { } /** * Return a string representation of request information. * * @return A string representation of request information. */ public String toString() { Map<String, Object> rootObj = new HashMap<String, Object>(); Map<String, Object> reqItems = new HashMap<String, Object>(); Iterator<Entry<String, List<WriteRequest>>> iter = this.requestItems.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<String, List<WriteRequest>> entry = iter.next(); String tableName = (String) entry.getKey(); List<WriteRequest> val = (List<WriteRequest>) entry.getValue(); reqItems.put(tableName, toJsonObj(val)); } rootObj.put(MolaDbConstants.JSON_REQUEST_ITEMS, reqItems); return JsonUtils.toJsonString(rootObj); } /** * Set the request items for BatchWriteItem operation. * * @param requestItems The request items for BatchWriteItem operation. * @return Returns a reference to the object so that method calls can be chained together. */ public BatchWriteItemRequest withRequestItems( Map<String, List<WriteRequest>> requestItems) { this.setRequestItems(requestItems); return this; } /** * Set the request items for BatchWriteItem operation. * * @param requestItems The request items for BatchWriteItem operation, the type is Map. * @see WriteRequest */ public void setRequestItems(Map<String, List<WriteRequest>> requestItems) { this.requestItems = requestItems; } /** * Get the request items for BatchWriteItem operation. * * @return Returns items for BatchWriteItem operation. the type is Map. * @see WriteRequest */ public Map<String, List<WriteRequest>> getRequestItems() { return this.requestItems; } @Override public BatchWriteItemRequest withRequestCredentials(BceCredentials credentials) { this.setRequestCredentials(credentials); return this; } protected List<Object> toJsonObj(List<WriteRequest> requests) { List<Object> objList = new ArrayList<Object>(); for (Iterator<WriteRequest> iter = requests.iterator(); iter.hasNext();) { WriteRequest req = iter.next(); if (req instanceof DeleteRequest) { Map<String, Object> deleteObj = new HashMap<String, Object>(); deleteObj.put(MolaDbConstants.JSON_DELETE_REQUEST, ((DeleteRequest) req).toJsonObj()); objList.add(deleteObj); } else if (req instanceof PutRequest) { Map<String, Object> putObj = new HashMap<String, Object>(); putObj.put(MolaDbConstants.JSON_PUT_REQUEST, ((PutRequest) req).toJsonObj()); objList.add(putObj); } else { throw new BceClientException("Unknow write request:" + req.toString()); } } return objList; } }