Package org.OpenGeoPortal.Export.GeoCommons

Source Code of org.OpenGeoPortal.Export.GeoCommons.ExportRequestController

package org.OpenGeoPortal.Export.GeoCommons;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ObjectNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestContextHolder;

@Controller
@RequestMapping("/geocommons/requestExport")
public class ExportRequestController {
  final Logger logger = LoggerFactory.getLogger(this.getClass());
  @Autowired
  private GeoCommonsExportHandler geoCommonsExportHandler;
 

  @RequestMapping(method=RequestMethod.POST, produces="application/json")
  public @ResponseBody Map<String,String> handleExportRequest(HttpServletRequest request)
      throws ServletException, IOException {
    //given a list of ogpids, export them to geocommons
    //read the POST'ed JSON object
    ObjectMapper mapper = new ObjectMapper();
    JsonNode rootNode = mapper.readTree(request.getInputStream());
    String basemap = rootNode.path("basemap").getTextValue();
    String bbox = rootNode.path("extent").getTextValue();
    String username = rootNode.path("username").getTextValue();
    String password = rootNode.path("password").getTextValue();
   
    ObjectNode responseJson = mapper.createObjectNode();
    //response json format
    //{"status": "", "message": "", mapUrl: "", "layers": []}
    //status  where in the process
    //statusMessage text
    //mapUrl:
    //layers
    //layerId:
    //progress: dataset, map
    //format: shp, wms, etc.
    //url:

    /*if ((username.isEmpty())||(password.isEmpty())){
      response.sendError(500, "This request requires a valid GeoCommons username and password.");
      return;
    }*/
    String title = rootNode.path("title").getTextValue();
    String description = rootNode.path("description").getTextValue();
    JsonNode idArray = rootNode.path("OGPIDS");
    ArrayList<String> layers = new ArrayList<String>();
    for (JsonNode idNode : idArray){
      layers.add(idNode.getTextValue());
    }
    /*if (layers.isEmpty()) {
      //response.sendError(400, "No layers specified in request.");
      ArrayNode arrayNode = mapper.createArrayNode();
      responseJson.put("status", "");
      responseJson.put("statusMessage", "No layers specified in request");
      response.getOutputStream().print(responseJson.asText());
      return;
    }*/
 
    String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId();
    GeoCommonsExportRequest exportRequest = new GeoCommonsExportRequest();
    exportRequest.setSessionId(sessionId);
    exportRequest.setUsername(username);
    exportRequest.setPassword(password);
    exportRequest.setBasemap(basemap);
    exportRequest.setTitle(title);
    exportRequest.setDescription(description);
    exportRequest.setBbox(bbox);
    exportRequest.setLayerIds(layers);
   
    UUID requestId = geoCommonsExportHandler.requestExport(exportRequest);
    Map<String,String> map = new HashMap<String,String>();
    map.put("requestId", requestId.toString());
    return map;
  }
}
TOP

Related Classes of org.OpenGeoPortal.Export.GeoCommons.ExportRequestController

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.