Package com.dotmarketing.servlets

Source Code of com.dotmarketing.servlets.JSONCategoriesServlet

package com.dotmarketing.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dotcms.repackage.org.apache.commons.lang.StringEscapeUtils;
import com.dotcms.repackage.org.codehaus.jackson.map.DeserializationConfig.Feature;
import com.dotcms.repackage.org.codehaus.jackson.map.ObjectMapper;

import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.web.UserWebAPI;
import com.dotmarketing.business.web.WebAPILocator;
import com.dotmarketing.exception.DotDataException;
import com.dotmarketing.exception.DotRuntimeException;
import com.dotmarketing.exception.DotSecurityException;
import com.dotmarketing.portlets.categories.business.CategoryAPI;
import com.dotmarketing.portlets.categories.business.PaginatedCategories;
import com.dotmarketing.portlets.categories.model.Category;
import com.dotmarketing.util.UtilMethods;
import com.liferay.portal.PortalException;
import com.liferay.portal.SystemException;
import com.liferay.portal.model.User;

public class JSONCategoriesServlet extends HttpServlet implements Servlet {

  private static final long serialVersionUID = 1L;

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    UtilMethods.removeBrowserCache(response);

    UserWebAPI uWebAPI = WebAPILocator.getUserWebAPI();
    User user = null;

    try {

      user = uWebAPI.getLoggedInUser(request);
      String inode = request.getParameter("inode");
      String action = request.getParameter("action");
      String q = request.getParameter("q");
      String permission = request.getParameter("permission");
      String reorder = request.getParameter("reorder");

      if(UtilMethods.isSet(permission)) {
        loadPermission(inode, request, response);
        return;
      }

            q = StringEscapeUtils.unescapeJava( q );
      inode = (UtilMethods.isSet(inode) && inode.equals("undefined")) ? null : inode;
      q = (UtilMethods.isSet(q) && q.equals("undefined")) ? null : q;

      if(UtilMethods.isSet(action) && action.equals("export")) {
        exportCategories(request, response, inode, q);
        return;
      }

      ObjectMapper mapper = new ObjectMapper();
      mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);

      CategoryAPI catAPI = APILocator.getCategoryAPI();
      int start = -1;
      int count = -1;
      String startStr = request.getParameter("start");
      String countStr = request.getParameter("count");
      String sort = request.getParameter("sort");

      if(UtilMethods.isSet(startStr) && UtilMethods.isSet(countStr)) {
        start = Integer.parseInt(request.getParameter("start"));
        count = Integer.parseInt(request.getParameter("count"));
      }

      Boolean topLevelCats = !UtilMethods.isSet(inode);

      if(UtilMethods.isSet(reorder) && reorder.equalsIgnoreCase("TRUE")) {
        if(topLevelCats) {
          catAPI.sortTopLevelCategories();
        } else {
          catAPI.sortChildren(inode);
        }
      }

      PaginatedCategories pagCategories = topLevelCats?catAPI.findTopLevelCategories(user, false, start, count, q, sort):
          catAPI.findChildren(user, inode, false, start, count, q, sort);

      List<Map<String,Object>> items = new ArrayList<Map<String,Object>>();
      List<Category> categories = pagCategories.getCategories();

      if(categories!=null) {
        for (Category category : categories) {
          Map<String,Object> catMap = new HashMap<String,Object>();
          catMap.put("inode", category.getInode());
          catMap.put("category_name", category.getCategoryName());
          catMap.put("category_key", category.getKey());
          catMap.put("category_velocity_var_name", category.getCategoryVelocityVarName());
          catMap.put("sort_order", category.getSortOrder());
          catMap.put("keywords", category.getKeywords());
          items.add(catMap);
        }
      }

      Map<String,Object> m = new HashMap<String, Object>();
      m.put("items", items);
      m.put("numRows", pagCategories.getTotalCount());
      String s = mapper.writeValueAsString(m);
      response.setContentType("text/plain");
      response.getWriter().write(s);
      response.getWriter().flush();
      response.getWriter().close();

    } catch (DotDataException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (DotSecurityException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (DotRuntimeException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (PortalException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (SystemException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  private void exportCategories(HttpServletRequest request, HttpServletResponse response, String contextInode, String filter) throws ServletException, IOException {
    ServletOutputStream out = response.getOutputStream();
    response.setContentType("application/octet-stream");
    response.setHeader("Content-Disposition", "attachment; filename=\"categories_" + UtilMethods.dateToHTMLDate(new Date(),"M_d_yyyy") +".csv\"");

    UserWebAPI uWebAPI = WebAPILocator.getUserWebAPI();
    User user = null;

    try {
      user = uWebAPI.getLoggedInUser(request);
      CategoryAPI catAPI = APILocator.getCategoryAPI();
      List<Category> categories = UtilMethods.isSet(contextInode)?catAPI.findChildren(user, contextInode, false, filter):
        catAPI.findTopLevelCategories(user, false, filter);

      if(!categories.isEmpty()) {
        out.print("\"name\",\"key\",\"variable\",\"sort\"");
        out.print("\r\n");

        for (Category category : categories) {
          String catName = category.getCategoryName();
          String catKey = category.getKey();
          String catVar = category.getCategoryVelocityVarName();
          String catSort = Integer.toString(category.getSortOrder());
          catName = catName==null?"":catName;
          catKey = catKey==null?"":catKey;
          catVar = catVar==null?"":catVar;
          catSort = catSort==null?"":catSort;

//          if(catName.indexOf(",")>-1) {
//            catName = "'" + catName + "'";
//          }

          catName = "\"" + catName + "\"";
          catKey = "\"" + catKey + "\"";
          catVar = "\"" + catVar + "\"";

          out.print(catName+","+catKey+","+catVar+","+catSort);
          out.print("\r\n");
        }

      } else {
        out.print("There are no Categories to show");
        out.print("\r\n");
      }

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      out.flush();
      out.close();
    }
  }


  private void loadPermission(String inode, HttpServletRequest request, HttpServletResponse response) throws Exception {
    UserWebAPI uWebAPI = WebAPILocator.getUserWebAPI();
    User user = uWebAPI.getLoggedInUser(request);
    CategoryAPI categoryAPI = APILocator.getCategoryAPI();
    Category cat = categoryAPI.find(inode, user, false);
    request.setAttribute(com.dotmarketing.util.WebKeys.PERMISSIONABLE_EDIT, cat);
    RequestDispatcher rd = request.getRequestDispatcher("/html/portlet/ext/common/edit_permissions_tab_ajax.jsp");
    rd.include(request, response);
  }

}
TOP

Related Classes of com.dotmarketing.servlets.JSONCategoriesServlet

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.