Package com.dotmarketing.servlets

Source Code of com.dotmarketing.servlets.JSONTagsServlet

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.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.codehaus.jackson.map.DeserializationConfig.Feature;
import com.dotcms.repackage.org.codehaus.jackson.map.ObjectMapper;
import com.dotcms.repackage.org.apache.commons.lang.StringEscapeUtils;

import com.dotmarketing.beans.Host;
import com.dotmarketing.business.APILocator;
import com.dotmarketing.business.web.UserWebAPI;
import com.dotmarketing.business.web.WebAPILocator;
import com.dotmarketing.db.HibernateUtil;
import com.dotmarketing.exception.DotDataException;
import com.dotmarketing.exception.DotRuntimeException;
import com.dotmarketing.exception.DotSecurityException;
import com.dotmarketing.tag.business.TagAPI;
import com.dotmarketing.tag.model.Tag;
import com.dotmarketing.util.Logger;
import com.dotmarketing.util.UtilMethods;
import com.liferay.portal.PortalException;
import com.liferay.portal.SystemException;
import com.liferay.portal.language.LanguageUtil;
import com.liferay.portal.model.User;

public class JSONTagsServlet 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);

      ObjectMapper mapper = new ObjectMapper();
      mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      TagAPI tagAPI = APILocator.getTagAPI();

      String termFilter = "";
      if(UtilMethods.isSet(request.getParameter("tagname"))) {
        termFilter = request.getParameter("tagname").toLowerCase();
      }

      boolean globalTagsFilter = false;

      if(UtilMethods.isSet(request.getParameter("global"))) {
        if(request.getParameter("global").equalsIgnoreCase("1"))
          globalTagsFilter = true;
      }

      String hostFilter = request.getSession().getAttribute(com.dotmarketing.util.WebKeys.CMS_SELECTED_HOST_ID).toString();

      String sort = request.getParameter("sort");

      String action = request.getParameter("action");

      if(UtilMethods.isSet(action) && action.equals("export")) {
        List<Tag> tagsList = tagAPI.getFilteredTags(termFilter, hostFilter, globalTagsFilter, sort, 0, 0);
        exportTags(request,  response,  tagsList);
        return;
      }

      if(UtilMethods.isSet(action) && action.equals("download")) {
        downloadCSVSampleFile(response);
        return;
      }

      int start = 0;
      int count = 20;
      String startStr = request.getParameter("start");
      String countStr = request.getParameter("count");

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


      List<Map<String,Object>> items = new ArrayList<Map<String,Object>>();

      List<Tag> tags = null;
      termFilter = StringEscapeUtils.unescapeJava(termFilter)
      if(UtilMethods.isSet(termFilter)){
        tags = tagAPI.getFilteredTags(termFilter, hostFilter, globalTagsFilter, sort, start, count);
      }else{
        tags = tagAPI.getFilteredTags("", hostFilter, globalTagsFilter, sort, start, count);
      }

      if(tags!=null) {
        for (Tag tag : tags) {
          String hostId = tag.getHostId();
          Host host = null;
          try{
            host = APILocator.getHostAPI().find(hostId, user, true);
          }
          catch (Exception e){
            Logger.error(this, "Unable to get host from tag Id:"+ tag.getHostId());
          }
          if (host!=null){
            Map<String,Object> tagMap = new HashMap<String,Object>();
            String hostName = "";
            if(host.isSystemHost())
              hostName = LanguageUtil.get(APILocator.getUserAPI().getSystemUser(), "tag-all-hosts");
            else
              hostName = host.getHostname();
            tagMap.put("tagId", tag.getTagId());
            tagMap.put("tagname", tag.getTagName());
            tagMap.put("hostId", tag.getHostId());
            tagMap.put("hostName", hostName);
            items.add(tagMap);
          }
        }
      }

      Map<String,Object> m = new HashMap<String, Object>();
      m.put("items", items);
      m.put("numRows", tagAPI.getFilteredTags(termFilter, hostFilter, globalTagsFilter, sort, 0, 0).size());
      String s = mapper.writeValueAsString(m);
      response.setContentType("text/plain");
      response.getWriter().write(s);
      response.getWriter().flush();
      response.getWriter().close();




    } 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 downloadCSVSampleFile(HttpServletResponse response) throws IOException {
    ServletOutputStream out = response.getOutputStream();
    try {
      response.setContentType("application/octet-stream; charset=UTF-8");
      response.setHeader("Content-Disposition", "attachment; filename=\"csv_sample_file.csv\"");
      out.print("Tag Name,Host ID");
      out.print("\r\n");

      out.print("Sample Tag,Host Identifier");
      out.print("\r\n");

      HibernateUtil.closeSession();

    }catch(Exception p){
      Logger.error(this,p.getMessage(),p);
    }
    finally{
      out.flush();
      out.close();
    }

  }

  /**
   * Export all tags into a single CSV file, including tag name, user id and the host id
   * @throws DotDataException
   * @throws IOException
   * @throws DotSecurityException
   */
  private void exportTags(HttpServletRequest request, HttpServletResponse response, List<Tag> tagsList) throws DotSecurityException, IOException{
    ServletOutputStream out = response.getOutputStream();
    try {
      response.setContentType("application/octet-stream; charset=UTF-8");
      response.setHeader("Content-Disposition", "attachment; filename=\"tags_" + UtilMethods.dateToHTMLDate(new Date(),"M_d_yyyy") +".csv\"");


      if(tagsList.size() > 0) {

        out.print("Tag Name,Host ID");
        out.print("\r\n");

        for(Tag tag : tagsList ){
          out.print(new String(tag.getTagName().getBytes("UTF-8"), "ISO-8859-1")+",");
          out.print(tag.getHostId());
          out.print("\r\n");
        }

        HibernateUtil.closeSession();

      }
      else {
        out.print("There are no Tags to show");
        out.print("\r\n");
      }
    }catch(Exception p){
      Logger.error(this,p.getMessage(),p);
    }
    finally{
      out.flush();
      out.close();
    }
  }


}

TOP

Related Classes of com.dotmarketing.servlets.JSONTagsServlet

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.