Package com.esri.gpt.catalog.arcgis.agportal.publication

Source Code of com.esri.gpt.catalog.arcgis.agportal.publication.AgpDeleteRequest

/*
* 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.esri.gpt.catalog.arcgis.agportal.publication;

import com.esri.gpt.framework.context.RequestContext;
import com.esri.gpt.framework.http.CredentialProvider;
import com.esri.gpt.framework.http.HttpClientRequest;
import com.esri.gpt.framework.http.HttpClientRequest.MethodName;
import com.esri.gpt.framework.http.StringHandler;
import com.esri.gpt.framework.util.Val;
import java.io.IOException;
import java.net.URLEncoder;
import org.json.JSONException;

/**
* Deletion request. Deletes single item from the user folder.
*/
public class AgpDeleteRequest extends AgpBaseRequest {

  private String folderName = "";
  private String itemId = "";

  /**
   * Creates instance of the request. End-point is extracted from the configuration file.
   * @param requestContext request context
   * @param credtialProvider credential provider
   * @param itemId id of the item to delete
   * @param folderName folder of the item
   */
  public AgpDeleteRequest(RequestContext requestContext, CredentialProvider credtialProvider, String itemId, String folderName) {
    this(requestContext, credtialProvider, EndPoint.extract(requestContext), itemId, folderName);
  }

  /**
   * Creates instance of the request.
   * @param requestContext request context
   * @param credtialProvider credential provider
   * @param endPoint ArcGIS portal end point
   * @param itemId id of the item to delete
   * @param folderName folder of the item
   */
  public AgpDeleteRequest(RequestContext requestContext, CredentialProvider credtialProvider, EndPoint endPoint, String itemId, String folderName) {
    super(requestContext, credtialProvider, endPoint);
    this.itemId = Val.chkStr(itemId);
    this.folderName = Val.chkStr(folderName);
  }

  /**
   * Gets folder name.
   * @return folder name
   */
  public String getFolderName() {
    return folderName;
  }

  /**
   * Gets item id.
   * @return item id
   */
  public String getItemId() {
    return itemId;
  }

  /**
   * Executes request.
   * @throws IOException if accessing end point failed
   * @throws JSONException if parsing response failed
   */
  public void execute() throws AgpServerException, AgpPublishException {
    try {
      StringHandler handler = new StringHandler();
      HttpClientRequest request = new HttpClientRequest();
      request.setContentHandler(handler);
      request.setCredentialProvider(credentialProvider);
      request.setMethodName(MethodName.POST);

      String token = fetchToken();
      request.setUrl(getDeleteUrl(token));
      execute(request);
      checkError(handler.getContent());
    } catch (IOException ex) {
      throw new AgpPublishException("Error executing request.", ex);
    }
  }

  /**
   * Creates URL of the 'delete' request.
   * @param token token
   * @return URL of the 'delete' request
   * @throws IOException if making URL fails
   */
  private String getDeleteUrl(String token) throws IOException {
    return ep.getBaseArcGISUrl()
            + "content/users/"
            + credentialProvider.getUsername() + (getFolderName().length() > 0 ? "/" + getFolderName() : "")
            + "/items/"
            + getItemId()
            + "/delete"
            + "?f=pjson&token="
            + URLEncoder.encode(token, "UTF-8");
  }
}
TOP

Related Classes of com.esri.gpt.catalog.arcgis.agportal.publication.AgpDeleteRequest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.