diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TabularDataRowsXServlet.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TabularDataRowsXServlet.java new file mode 100644 index 0000000..f9ad814 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TabularDataRowsXServlet.java @@ -0,0 +1,112 @@ +package org.gcube.portlets.user.td.gwtservice.server; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringWriter; +import java.util.ArrayList; + +import javax.servlet.ServletException; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * + */ +public class TabularDataRowsXServlet extends HttpServlet { + + private static final long serialVersionUID = 3995054634540860599L; + + protected Logger logger = LoggerFactory + .getLogger(TabularDataRowsXServlet.class); + + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + handleRequest(req, resp); + } + + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + handleRequest(req, resp); + } + + protected void handleRequest(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { + logger.debug("TabularDataServlet handleRequest"); + + try { + + HttpSession session = request.getSession(); + + if(session==null){ + logger.error("Error getting the upload session, no session valid found: "+session); + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "ERROR-Error getting the user session, no session found"+session); + return ; + } + logger.info("Session id: "+session.getId()); + + + ServletInputStream in = request.getInputStream(); + InputStreamReader buffIn = new InputStreamReader(in); + char[] buffer = new char[1024]; + int n = 0; + StringWriter out = new StringWriter(); + + while (-1 != (n = buffIn.read(buffer))) { + out.write(buffer, 0, n); + } + ; + logger.debug("Stream: " + out); + + JSONObject jsonRequest = new JSONObject(out.toString()); + logger.debug("JSON request:" + jsonRequest.toString()); + + //RowIds + JSONArray ids = null; + ArrayList rowsIds=new ArrayList(); + try { + ids = jsonRequest.getJSONArray("rowsIds"); + } catch (JSONException e) { + logger.debug("rowsIds: " + e.getLocalizedMessage()); + } + + if (ids != null) { + for (int i = 0; i < ids.length(); i++) { + String filter = ids.getString(i); + + rowsIds.add(filter); + } + } + logger.debug("rowsIds:" + rowsIds.size()); + + /* + DataSourceX dataSource = SessionUtil.getDataSource( + request.getSession(), tdSessionId);*/ + String json=new String();// = dataSource.getRowsAsJson(rowsIds); + + + response.getOutputStream().write(json.getBytes()); + response.setStatus(HttpServletResponse.SC_OK); + // logger.trace("JSON: "+json); + logger.trace("Response sent (" + json.length() + " bytes)"); + + } catch (Exception e) { + logger.error("Error processing the json data request", e); + response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, + "Error processing the json data request: " + e.getMessage()); + return; + } + } + +} diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/DataService.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/DataService.java new file mode 100644 index 0000000..d735093 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/DataService.java @@ -0,0 +1,5 @@ +package org.gcube.portlets.user.td.gwtservice.server.trservice; + +public class DataService { + +}