Package com.sogou.qadev.service.cynthia.controller

Source Code of com.sogou.qadev.service.cynthia.controller.FilterController$FilterField

package com.sogou.qadev.service.cynthia.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

import com.alibaba.fastjson.JSONArray;
import com.sogou.qadev.cache.impl.FieldNameCache;
import com.sogou.qadev.service.cynthia.bean.Field;
import com.sogou.qadev.service.cynthia.bean.Filter;
import com.sogou.qadev.service.cynthia.bean.Template;
import com.sogou.qadev.service.cynthia.bean.UUID;
import com.sogou.qadev.service.cynthia.bean.UserInfo;
import com.sogou.qadev.service.cynthia.factory.DataAccessFactory;
import com.sogou.qadev.service.cynthia.service.DataAccessSession;
import com.sogou.qadev.service.cynthia.service.FilterAccessSession;
import com.sogou.qadev.service.cynthia.service.FilterQueryManager;
import com.sogou.qadev.service.cynthia.util.CommonUtil;
import com.sogou.qadev.service.login.bean.Key;
import com.sohu.rd.td.util.xml.XMLUtil;

/**
* @description:filter processor
* @author:liming
* @mail:liming@sogou-inc.com
* @date:2014-5-5 下午8:25:51
* @version:v1.0
*/
@Controller
@RequestMapping("/filter")
public class FilterController extends BaseController{

  /**
   * base fields
   */
  private static Map<String , String> baseFieldNameMap = new HashMap<String , String>();
 
  static
  {
    baseFieldNameMap.put("title", "标题");
    baseFieldNameMap.put("id", "编号");
    baseFieldNameMap.put("description", "描述");
    baseFieldNameMap.put("status_id", "状态");
    baseFieldNameMap.put("create_user", "创建人");
    baseFieldNameMap.put("create_time", "创建时间");
    baseFieldNameMap.put("assign_user", "指派人");
    baseFieldNameMap.put("last_modify_time", "修改时间");
    baseFieldNameMap.put("node_id", "项目");
  }
 
  private class FilterField{
    private String fieldId;
    private String fieldName;
   
    public FilterField(String fieldId, String fieldName){
      this.fieldId = fieldId;
      this.fieldName = fieldName;
    }
    public String getFieldId() {
      return fieldId;
    }
    public void setFieldId(String fieldId) {
      this.fieldId = fieldId;
    }
    public String getFieldName() {
      return fieldName;
    }
    public void setFieldName(String fieldName) {
      this.fieldName = fieldName;
    }
  }
 
  /**
   * @description:get the home filter of user
   * @date:2014-5-5 下午8:26:40
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/getHomeFilter.do")
  @ResponseBody
  public String getHomeFilter(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
    if (session.getAttribute("userName") == null) {
      return "119695";
    }
   
    String userName = session.getAttribute("userName").toString();
    DataAccessSession das = DataAccessFactory.getInstance().getSysDas();
    String filterId = das.queryHomeFilter(userName);
    if (filterId == null || filterId.equals("")) {
      return "119695";
    }else {
      return filterId;
    }
  }
 
  /**
   * @description:get the default query fields
   * @date:2014-5-5 下午8:27:04
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/getDefaultHeader.do")
  @ResponseBody
  public String getDefaultHeader(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
   
    List<FilterField> allDefaultList = new ArrayList<FilterController.FilterField>();
   
    allDefaultList.add(new FilterField("id", "编号"));
    allDefaultList.add(new FilterField("title", "标题"));
    allDefaultList.add(new FilterField("status_id", "状态"));
    allDefaultList.add(new FilterField("create_user", "创建人"));
    allDefaultList.add(new FilterField("create_time", "创建时间"));
    allDefaultList.add(new FilterField("assign_user", "指派人"));
    allDefaultList.add(new FilterField("last_modify_time", "修改时间"));
   
    return JSONArray.toJSONString(allDefaultList);
   
  }
 
  /**
   * @description:get the show info of filter, all show fields and hidden fields
   * @date:2014-5-5 下午8:27:20
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/getFilterShowInfo.do")
  @ResponseBody
  public String getFilterShowInfo(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
   
    String filterIdStr = request.getParameter("filterId");
    UUID filterId = DataAccessFactory.getInstance().createUUID(filterIdStr);
    DataAccessSession das = DataAccessFactory.getInstance().getSysDas();

    Filter filter = das.queryFilter(filterId);
   
    FilterField groupField = null;
    List<FilterField> showList = new ArrayList<FilterField>();
    List<FilterField> backList = new ArrayList<FilterField>();
    List<String> showFieldId = new ArrayList<String>();
   
    if(filter == null)
      return "";
   
    try {
      Document filterXmlDoc = XMLUtil.string2Document(filter.getXml(), "UTF-8");
     
      if (FilterQueryManager.isSysFilter(filter.getId().getValue())) {
        //系统过滤器
        List<Node> displayFieldNodes = XMLUtil.getNodes(filterXmlDoc, "query/templateType/display/field");
        showList.add(new FilterField("id", "编号"));
        showFieldId.add("id");
        for (Node node : displayFieldNodes) {
          if(XMLUtil.getAttribute(node,"id").equals("node_id"))
            continue;
          showFieldId.add(XMLUtil.getAttribute(node,"id"));
          showList.add(new FilterField(XMLUtil.getAttribute(node,"id"), XMLUtil.getAttribute(node,"name")));
        }
       
        groupField = new FilterField("node_id", "项目");
       
        for (String fieldId : baseFieldNameMap.keySet()) {
          if (!showFieldId.contains(fieldId)) {
            backList.add(new FilterField(fieldId, baseFieldNameMap.get(fieldId)));
          }
        }
      }else {
        Node templateNode = XMLUtil.getSingleNode(filterXmlDoc, "query/template");
        UUID templateId = DataAccessFactory.getInstance().createUUID(XMLUtil.getAttribute(templateNode,"id"));
       
        List<Node> displayFieldNodes = XMLUtil.getNodes(templateNode, "display/field");
        showList.add(new FilterField("id", "编号"));
        showFieldId.add("id");
        for (Node node : displayFieldNodes) {
          String fieldId = XMLUtil.getAttribute(node,"id");
          if(fieldId == null)
            continue;
          showFieldId.add(fieldId);
          if (CommonUtil.isPosNum(fieldId)) {
            //判断该字段目前存在
            if (FieldNameCache.getInstance().getFieldName(fieldId, templateId.getValue()) != null) {
              fieldId = "FIEL-" + fieldId;
            }else {
              continue;
            }
          }
         
          showList.add(new FilterField(fieldId, XMLUtil.getAttribute(node,"name")));
        }
       
        for (String fieldId : baseFieldNameMap.keySet()) {
          if (!showFieldId.contains(fieldId)) {
            backList.add(new FilterField(fieldId, baseFieldNameMap.get(fieldId)));
          }
        }
       
        Template template = das.queryTemplate(templateId);
       
        Set<Field> templateFields = template.getFields();
       
        for(Field field : templateFields)
        {
          if (!showFieldId.contains(field.getId().getValue())) {
            backList.add(new FilterField("FIEL-" + field.getId().getValue(), field.getName()));
          }
        }
       
        //分组字段
        Map<String, String> groupFieldMap = FilterAccessSession.getInstance().getGroupFieldMap(filter);
        if(groupFieldMap != null && groupFieldMap.keySet().size() > 0){
          for (String fieldId : groupFieldMap.keySet()) {
            String fieldName = groupFieldMap.get(fieldId);
            if(CommonUtil.isPosNum(fieldId)){
              if (FieldNameCache.getInstance().getFieldName(fieldId, templateId.getValue()) != null) {
                fieldId = "FIEL-" + fieldId;
              }else {
                continue;
              }
            }
            groupField = new FilterField(fieldId, fieldName);
            break;
          }
        }
      }
      Map<String, Object> returnMap = new HashMap<String, Object>();
      returnMap.put("groupField", groupField);
      returnMap.put("showFields", showList);
      returnMap.put("backFields", backList);
     
      return JSONArray.toJSONString(returnMap);
    } catch (Exception e) {
      e.printStackTrace();
      return "";
    }
  }
 
 
  /**
   * @description:get filter xml
   * @date:2014-5-5 下午8:28:20
   * @version:v1.0
   * @param request
   * @param response
   * @param session
   * @return
   * @throws Exception
   */
  @RequestMapping("/getFilterXml.do")
  @ResponseBody
  public String getFilterXml(HttpServletRequest request, HttpServletResponse response ,HttpSession session) throws Exception {
   
    Key key = (Key)session.getAttribute("key");
    String filterId = request.getParameter("filterId");
    Filter filter = das.queryFilter(DataAccessFactory.getInstance().createUUID(filterId));
    if (filter == null) {
      return "";
    }
    else {
      if(filter.getCreateUser().equals("admin@sohu-rd.com"))
         {
           Document filterDoc = XMLUtil.string2Document(filter.getXml(), "UTF-8");

           Node envNode = XMLUtil.getSingleNode(filterDoc, "query/env");

           XMLUtil.getSingleNode(envNode, "current_user").setTextContent(key.getUsername());

           UserInfo userInfo = das.queryUserInfoByUserName(key.getUsername());
           if (userInfo != null) {
             Node userListNode = filterDoc.createElement("user_list");
             userListNode.setTextContent(userInfo.getUserName());
             envNode.appendChild(userListNode);
        }

           filter.setXml(XMLUtil.document2String(filterDoc, "UTF-8"));
         }
     
      return filter.getXml().replaceAll("\\\r", "").replaceAll("\\\n", "").replaceAll("\\\"", "\\\\\\\"").trim();
    }
  }
}
TOP

Related Classes of com.sogou.qadev.service.cynthia.controller.FilterController$FilterField

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.