Package ar.com.AmberSoft.iEvenTask.services

Source Code of ar.com.AmberSoft.iEvenTask.services.ListObjectiveWithVisibleFilterService

package ar.com.AmberSoft.iEvenTask.services;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.beanutils.MethodUtils;
import org.apache.log4j.Logger;
import org.hibernate.Query;

import com.extjs.gxt.ui.client.data.BaseDateFilterConfig;
import com.extjs.gxt.ui.client.data.BaseFilterConfig;

import ar.com.AmberSoft.iEvenTask.backend.entities.Entity;
import ar.com.AmberSoft.iEvenTask.backend.entities.User;
import ar.com.AmberSoft.iEvenTask.utils.Tools;
import ar.com.AmberSoft.util.LDAPUtils;
import ar.com.AmberSoft.util.ParamsConst;

public class ListObjectiveWithVisibleFilterService extends ListObjectiveService {
 
  private static Logger logger = Logger.getLogger(ListObjectiveWithVisibleFilterService.class);
 
  public static String SELECT_COUNT_DISTINCT = "SELECT COUNT ( DISTINCT T ) ";
 
  @SuppressWarnings("rawtypes")
  @Override
  protected void afterFrom(Map params) {
    super.afterFrom(params);
    queryText.append(" T left join T.visibles V");
  }

  @SuppressWarnings("rawtypes")
  @Override
  protected void previousCreateQuery(Map params) {
    super.previousCreateQuery(params);
    StringBuffer userQuery = new StringBuffer();
    userQuery.append(AND);
    userQuery.append(" V.usuario ");
    userQuery.append(EQUAL);
    userQuery.append(" :uservisible ");
   
    StringBuffer tmpBuffer = new StringBuffer(queryText);
    queryText = new StringBuffer();
    queryText.append("Select distinct T ");
    queryText.append(tmpBuffer);
    queryText.append(userQuery);
    queryTextWithoutOrder.append(userQuery);
   
    String sortField = (String) params.get(SORT_FIELD);
    Object sortDir = params.get(SORT_DIR);
   
    if ((sortField!=null) && (sortDir!=null)){
      try {
        String sortDirText = (String) MethodUtils.invokeExactMethod(sortDir, NAME, null);
        if (!"asignado".equals(sortField)){
          queryText.append(ORDER_BY);
          queryText.append(" T." + sortField);
          queryText.append(SPACE);
          queryText.append(sortDirText);
        else {
          params.put(ParamsConst.NOT_COMMON_PAGING, Boolean.TRUE);
        }
      } catch (Exception e) {
        logger.error(Tools.getStackTrace(e));
      }
    }

   
  }

  @SuppressWarnings("rawtypes")
  @Override
  protected void postCreateQuery(Map params) {
    super.postCreateQuery(params);

    queryCount = getSession().createQuery(SELECT_COUNT_DISTINCT + queryTextWithoutOrder.toString());
   
    HttpServletRequest request = (HttpServletRequest) params.get(ParamsConst.REQUEST);
    User user = (User) request.getSession().getAttribute(ParamsConst.USER);
   
    query.setString("uservisible", user.getId());
    queryCount.setString("uservisible", user.getId());
  }
 
  @Override
  public void setFiltersInQueryText(Map params) {
    queryText.append(WHERE);
    queryText.append(Entity.DELETE_COLUMN);
    queryText.append(IS_NULL);
    Collection filters = (Collection) params.get(FILTERS);
    if (filters!=null){
      Iterator it = filters.iterator();
      while (it.hasNext()) {
        queryText.append(AND);
        BaseFilterConfig filter = (BaseFilterConfig) it.next();
        if (!"asignado".equals(filter.getField())){
          queryText.append(" T." + filter.getField());
          String operator = (String)operatorOnWhere.get(filter.getClass().getName());
          if (operator !=null){
            queryText.append(operator);
          } else {
            if (filter instanceof BaseDateFilterConfig) {
              BaseDateFilterConfig dateFilter = (BaseDateFilterConfig) filter;
              if ("before".equals(dateFilter.getComparison())){
                queryText.append(" < ");
              } else if ("after".equals(dateFilter.getComparison())){
                queryText.append(" > ");
              } else {
                queryText.append(EQUAL);   
              }
            } else {
              queryText.append(EQUAL);
            }
           
          }
          queryText.append(QUESTION_SYMBOL);
        } else {

          HttpServletRequest request = (HttpServletRequest) params.get(ParamsConst.REQUEST);
          User user = null;
          if (request != null) {
            user = (User) request.getSession().getAttribute(ParamsConst.USER);
          }
          Map<String, User> users = null;
          if (user != null) {
            try {
              users = LDAPUtils.getUsersMap(user.getId(), user.getPassword());
            } catch (Exception e) {
              logger.error(Tools.getStackTrace(e));
            }
            if ((users!=null)&&(users.size()>0)){
              queryText.append(" T.id_usuario");
              queryText.append(" IN ( ");
             
              Collection values = users.values();
              Iterator itValues = values.iterator();
              queryText.append("''");
              while (itValues.hasNext()) {
                User actual = (User) itValues.next();
                if (actual.getName().indexOf((String)filter.getValue())>=0){
                  queryText.append(",'"+actual.getId()+"'");
                }
              }
             
              queryText.append(" )");
            }
          }
        }
      }
    }
  }
 
  public void setFiltersValuesInQuery(Map params, Query query) {
    Collection filters = (Collection) params.get(FILTERS);
    BaseFilterConfig filter = null;
    Boolean encontrado = Boolean.FALSE;
    if (filters!=null){
      int index = 0;
      Iterator it = filters.iterator();
      while (it.hasNext()) {
        filter = (BaseFilterConfig) it.next();
        if ("asignado".equals(filter.getField())){
          encontrado=!encontrado;
          break;
        }
      }
    }
    if ((filter!=null)&&(encontrado)){
      filters.remove(filter);
    }
    params.put(FILTERS, filters);
    super.setFiltersValuesInQuery(params, query);
  }
 
  @Override
  public void setOrder(Map params) {
  }
 
}
TOP

Related Classes of ar.com.AmberSoft.iEvenTask.services.ListObjectiveWithVisibleFilterService

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.