All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javabeanstack.data.DataUtil Maven / Gradle / Ivy

The newest version!
/*
* JavaBeanStack FrameWork
*
* Copyright (C) 2018 Jorge Enciso
* Email: [email protected]
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301  USA
 */

package org.javabeanstack.data;

import java.util.ArrayList;
import java.util.List;
import org.javabeanstack.security.model.IUserSession;
import org.javabeanstack.model.IAppCompany;
import static org.javabeanstack.util.Fn.nvl;
import static org.javabeanstack.util.Strings.isNullorEmpty;
import static org.javabeanstack.util.Strings.textMerge;


/**
 * Clases utiles para filtrado de datos y otros.
 * 
 * @author Jorge Enciso
 */
public class DataUtil {
    private DataUtil(){
    }
   
    /**
     * Devuelve un filtro correspondiente a la empresa logueada que será utilizado
     * en los selects de datos.
     * 
     * @param userSession sesión del usuario
     * @return un filtro correspondiente a la empresa logueada
     */
    public static String getCompanyFilter(IUserSession userSession) {
        return getCompanyFilter(userSession, "");
    }
    
    /**
     * Devuelve un filtro correspondiente a la empresa logueada que será utilizado
     * en los selects de datos.
     * 
     * @param userSession sesión del usuario
     * @param alias alias de la tabla
     * @return un filtro correspondiente a la empresa logueada
     */
    public static String getCompanyFilter(IUserSession userSession,String alias) {
        alias = (isNullorEmpty(alias)) ? "" : alias + ".";        
        String result = "";
        Long idcompany = userSession.getIdCompany();
        if (nvl(idcompany, 0L) == 0L) {
            return "";
        }
        if (userSession.getCompany() != null && !userSession.getCompany().getCompanyList().isEmpty()) {
            Long idcompanyChild;
            for (IAppCompany company : userSession.getCompany().getCompanyList()) {
                idcompanyChild = company.getIdcompany();
                // Si existe una mascara cambiando el idcompany
                if (nvl(company.getIdcompanymask(),0L) != 0L){
                    idcompanyChild = company.getIdcompanymask();
                }
                result += "," + idcompanyChild;
            }
            if (!"".equals(nvl(result, ""))) {
                result = alias+"idcompany in (" + idcompany + result + ")";
            }
        } else {
            result = alias+"idcompany = " + idcompany;
        }
        return result;
    }

    /**
     * En caso de que la empresa a la que se logueo el usuario sea el padre
     * de un grupo de empresas, devuelve una lista de empresas pertenecientes a
     * ese grupo.
     * @param userSession sesión del usuario.
     * @return lista de empresas pertenecientes al grupo
     */
    public static List getCompanyList(IUserSession userSession) {
        List result = new ArrayList();
        Long idcompany = userSession.getIdCompany();
        if (nvl(idcompany, 0L) == 0L) {
            return null;
        }
        result.add(idcompany);
        if (userSession.getCompany() != null && !userSession.getCompany().getCompanyList().isEmpty()) {
            Long idcompanyChild;
            for (IAppCompany company : userSession.getCompany().getCompanyList()) {
                idcompanyChild = company.getIdcompany();
                // Si existe una mascara cambiando el idcompany
                if (nvl(company.getIdcompanymask(),0L) != 0L){
                    idcompanyChild = company.getIdcompanymask();
                }
                result.add(idcompanyChild);
            }
        }
        return result;
    }

    /**
     * Filtro de empresa logueada más el periodo activo, datos a ser utilizado en los selects
     * @param userSession sesión del usuario.
     * @return Filtro de empresa logueada más el periodo activo
     */
    public static String getCompanyAndPeriodFilter(IUserSession userSession) {    
        return getCompanyAndPeriodFilter(userSession,"");
    }
    
    /**
     * Filtro de empresa logueada más el periodo activo, datos a ser utilizado en los selects
     * @param userSession sesión del usuario.
     * @param alias alias de la tabla
     * @return Filtro de empresa logueada más el periodo activo
     */
    public static String getCompanyAndPeriodFilter(IUserSession userSession, String alias) {
        String result = "";
        alias = (isNullorEmpty(alias)) ? "" : alias + ".";
        Long idcompany = userSession.getIdCompany();
        Long idperiodo = userSession.getCompany().getIdperiod();
        if (nvl(idcompany, 0L) == 0L) {
            return "";
        }
        result = "(" + alias + "idcompany = " + idcompany + ")";
        if (userSession.getCompany() != null && !userSession.getCompany().getCompanyList().isEmpty()) {
            String separador = " or ";
            for (IAppCompany company : userSession.getCompany().getCompanyList()) {
                result += separador;

                idcompany = (nvl(company.getIdcompanymask(),0L) != 0L ? company.getIdcompanymask() : company.getIdcompany());
                // Agregar filtro de empresa si no los tiene
                result += textMerge("({alias}idcompany = {idempresa}", "alias", alias, "idempresa", idcompany);
                result += ")";
            }
            result = "(" + result + ")";
        }
        if (nvl(idperiodo, 0L) != 0L) {
            result = "("+result+" and " + alias + "idperiod=" + idperiodo+")";
        }
        return result;
    }

    /**
     * Devuelve filtro del periodo activo de la empresa logueada
     * @param userSession sesión del usuario
     * @return filtro del periodo activo de la empresa logueada
     */
    public static String getPeriodFilter(IUserSession userSession) {
        return getPeriodFilter(userSession,"");
    }

    /**
     * Devuelve filtro del periodo activo de la empresa logueada
     * @param userSession sesión del usuario
     * @param alias alias de la tabla
     * @return filtro del periodo activo de la empresa logueada
     */
    public static String getPeriodFilter(IUserSession userSession, String alias) {
        String result;
        alias = (isNullorEmpty(alias)) ? "" : alias + ".";
        Long idperiodo = userSession.getCompany().getIdperiod();
        if (nvl(idperiodo, 0L) == 0L) {
            idperiodo = 1L;
        }
        result = alias+"idperiod = " + idperiodo;        
        return result;
    }

    /**
     * Devuelve el id de periodo activo de la empresa logueada.
     * @param userSession sesión del usuario.
     * @return id de periodo activo de la empresa logueada.
     */
    public static Long getCompanyIdPeriod(IUserSession userSession) {
        Long result = 1L;
        Long idperiodo = userSession.getCompany().getIdperiod();
        if (nvl(idperiodo, 0L) != 0L) {
            result = idperiodo;
        }
        return result;
    }
    
    public static String getDateTimeType(String engine){
        if (engine.equals("ORACLE")){
            return "DATE";
        }
        return "DATETIME";
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy