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

org.semanticwb.portal.util.SWBCookieMgr Maven / Gradle / Ivy

The newest version!
/*
 * SemanticWebBuilder es una plataforma para el desarrollo de portales y aplicaciones de integración,
 * colaboración y conocimiento, que gracias al uso de tecnología semántica puede generar contextos de
 * información alrededor de algún tema de interés o bien integrar información y aplicaciones de diferentes
 * fuentes, donde a la información se le asigna un significado, de forma que pueda ser interpretada y
 * procesada por personas y/o sistemas, es una creación original del Fondo de Información y Documentación
 * para la Industria INFOTEC, cuyo registro se encuentra actualmente en trámite.
 *
 * INFOTEC pone a su disposición la herramienta SemanticWebBuilder a través de su licenciamiento abierto al público (‘open source’),
 * en virtud del cual, usted podrá usarlo en las mismas condiciones con que INFOTEC lo ha diseñado y puesto a su disposición;
 * aprender de él; distribuirlo a terceros; acceder a su código fuente y modificarlo, y combinarlo o enlazarlo con otro software,
 * todo ello de conformidad con los términos y condiciones de la LICENCIA ABIERTA AL PÚBLICO que otorga INFOTEC para la utilización
 * del SemanticWebBuilder 4.0.
 *
 * INFOTEC no otorga garantía sobre SemanticWebBuilder, de ninguna especie y naturaleza, ni implícita ni explícita,
 * siendo usted completamente responsable de la utilización que le dé y asumiendo la totalidad de los riesgos que puedan derivar
 * de la misma.
 *
 * Si usted tiene cualquier duda o comentario sobre SemanticWebBuilder, INFOTEC pone a su disposición la siguiente
 * dirección electrónica:
 *  http://www.semanticwebbuilder.org
 */
package org.semanticwb.portal.util;

import java.util.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.semanticwb.SWBPlatform;


// TODO: Auto-generated Javadoc
/** Esta clase adminsitra las cookies de los usuarios del portal.
 *
 * This class manages user's cookies.
 * @author : Jorge Alberto Jim�nez
 */
public class SWBCookieMgr
{
    
    /** The cookies. */
    ArrayList cookies;

    /**
     * Instantiates a new sWB cookie mgr.
     */
    public SWBCookieMgr()
    {
        cookies = new ArrayList();
    }

    
    /**
     * Adds the cookie.
     * 
     * @param cookie the cookie
     */
    public void addCookie(SWBCookie cookie)
    {
        cookies.add(cookie);
    }

    /**
     * Sets the cookie.
     * 
     * @param cadenaCookie the cadena cookie
     * @param host the host
     * @param resid the resid
     * @return true, if successful
     * @return
     */
    public boolean setCookie(String cadenaCookie, String host, String resid)
    {
        //System.out.println("setCookie:"+cadenaCookie+" "+host+" "+resid);
        boolean regresa = false,bexistcookie = false;
        if (cadenaCookie != null)
        {
            String CookName = null;
            int pos = -1;
            pos = cadenaCookie.indexOf("=");
            if (pos != -1)
            {
                CookName = cadenaCookie.substring(0, pos);
            }
            //System.out.println("NCookie:"+CookName);

            SWBCookie cookie = null;
            Iterator itcookies = cookies.iterator();
            while (itcookies.hasNext())
            {
                cookie = (SWBCookie) itcookies.next();
                if (cookie.getName().equalsIgnoreCase(CookName) && cookie.getResID().equals(resid) && (host==null || host.equalsIgnoreCase(cookie.getHost())))
                {
                    //System.out.println("Ya existe el objeto Cookie");
                    bexistcookie = true;
                    break;
                }
            }
            if (!bexistcookie)
            {
                cookie = new SWBCookie();
                //System.out.println("Creo nuevo objeto Cookie");
            }

            if (host != null) cookie.setHost(host);
            cookie.setResID(resid);

            //System.out.println("cadenaCookie:"+cadenaCookie);
            
            StringTokenizer st = new StringTokenizer(cadenaCookie, ";");
            while (st.hasMoreElements())
            {
                String token = st.nextToken().trim();
                if (token == null)
                {
                    continue;
                }
                pos = -1;
                pos = token.indexOf("=");
                if(pos>-1)
                {
                    //System.out.println("token:"+token);
                    String aName = token.substring(0, pos);
                    String aValue = token.substring(pos + 1);
                    if (aName.equalsIgnoreCase("expires"))
                    {
                        cookie.setExpires(aValue);
                    } else if (aName.equalsIgnoreCase("path"))
                    {
                        cookie.setPath(aValue);
                    } else if (aName.equalsIgnoreCase("domain"))
                    {
                        cookie.setHost(aValue);
                    } else if (aName.equalsIgnoreCase(CookName))
                    {
                        cookie.setName(aName);
                        cookie.setValue(aValue);
                    }
                }

            }

            if (CookName != null && !bexistcookie)
            {
                //System.out.println("AddCookie:"+cookie);
                cookies.add(cookie);
                regresa = true;
            }
        }
        return regresa;
    }
    
    
    /**
     * Hace un parser de un String separando las cookies
     * name1=value1; name2=value2.
     * 
     * @param headercookies the headercookies
     * @param host the host
     * @param resid the resid
     */
    public void addCookies(String headercookies, String host, String resid)
    {
        StringTokenizer st=new StringTokenizer(headercookies,";");
        while(st.hasMoreTokens())
        {
            String token=st.nextToken();
            int pos = token.indexOf("=");
            String name=null;
            String value=null;
            if (pos != -1)
            {
                name=token.substring(0, pos);
                value=token.substring(pos+1);
            }
            if(name!=null && value!=null)
            {
                SWBCookie wbc=new SWBCookie(name.trim(),value.trim(),null,"/",host,resid);
                cookies.add(wbc);
            }
        }
            
    }
        

    
        /**
         * Gets the wBSSO cookies.
         * 
         * @return the wBSSO cookies
         * @return
         */
    public Iterator getWBSSOCookies()
    {
        String startName="_wb_sso";
        ArrayList ret=new ArrayList();
        Iterator itkeycokie = cookies.iterator();
        while (itkeycokie.hasNext())
        {
            SWBCookie WBC = (SWBCookie) itkeycokie.next();
            if (WBC != null)
            {    
                String name = WBC.getName();
                if(name.startsWith(startName))
                {
                    ret.add(WBC);
                }
            }
        }
        return ret.iterator();
    }

    /**
     * Gets the cookie.
     * 
     * @param host the host
     * @param path the path
     * @param dfecha the dfecha
     * @param resid the resid
     * @return the cookie
     * @return
     */
    public String getCookie(String host, String path, Date dfecha, String resid)
    {
        StringBuffer SBcookie = new StringBuffer();
        boolean entry = false;

        Iterator itkeycokie = cookies.iterator();
        while (itkeycokie.hasNext())
        {
            SWBCookie WBC = (SWBCookie) itkeycokie.next();
            if (WBC != null)
            {    //Checa si el objeto WBCookie coincide con los datos enviados
                String WBChost = WBC.getHost();
                String WBCpath = WBC.getPath();
                String rid = WBC.getResID();
                //Date dWBCexpires=new Date(WBC.getExpires());
                boolean bpath = false,bpath1 = false;
                if ((host.endsWith(WBChost) && resid.equals(rid) )|| (WBChost.equals("[*]") && rid.equals("")) )
                {
                    if (!WBCpath.equals("/"))
                    {
                        if (path.startsWith(WBCpath))
                        {
                            bpath = true;
                        }
                    } else
                        bpath1 = true;

                    if (bpath1 || bpath)
                    {
                        if (entry) SBcookie.append("; ");
                        SBcookie.append(WBC.getName() + "=" + WBC.getValue());
                        entry = true;
                    }
                }
            }
        }
        return SBcookie.toString();
    }

    /**
     * Have instance cookies.
     * 
     * @param resid the resid
     * @return true, if successful
     */
    public boolean haveInstanceCookies(String resid)
    {
        Iterator itkeycokie = cookies.iterator();
        while (itkeycokie.hasNext())
        {
            SWBCookie WBC = (SWBCookie) itkeycokie.next();
            if (WBC != null)
            {
                if(resid.equals(WBC.getResID()))
                {
                    return true;
                }
            }
        }
        return false;
    }
    
    /**
     * Removes the instance cookies.
     * 
     * @param resid the resid
     */
    public void removeInstanceCookies(String resid)
    {
        Iterator itkeycokie = cookies.iterator();
        while (itkeycokie.hasNext())
        {
            SWBCookie WBC = (SWBCookie) itkeycokie.next();
            if (WBC != null)
            {
                if(resid.equals(WBC.getResID()))
                {
                    itkeycokie.remove();
                }
            }
        }
    }
    
    
    /**
     * Clase que actua como utileria para busqueda,grabado y borrado
     * de cookies.
     * 
     * @param sName :
Este es el nombre de la cookie que este metodo debera
     * buscar en el sistema
* @param request :
request que recibe para buscar la cookie de acuerdo
     * al dominio del mismo
* @return :regresa el valor de la cookie en caso * de haberla encontrado, de lo contrario regresa nulo */ public String SearchCookie(String sName, HttpServletRequest request) { String name = null; String valor = null; String Cvalue = null; String ena = SWBPlatform.getEnv("wb/CookEnabled"); if (ena == null) { ena = "true"; } if (ena.equalsIgnoreCase("true")) { Cookie cooks[] = request.getCookies(); if (cooks != null) { for (int icook = 0; icook < cooks.length; icook++) { Cookie cook = cooks[icook]; name = cook.getName(); valor = cook.getValue(); if (name.equalsIgnoreCase(sName)) { Cvalue = valor; icook = cooks.length; } } } } return Cvalue; } /** * Adds the cookie. * * @param cookieName the cookie name * @param cookieValue the cookie value * @param save the save * @param cookieEnable the cookie enable * @param request the request * @param response the response */ public void AddCookie(String cookieName, String cookieValue, boolean save, boolean cookieEnable,HttpServletRequest request, HttpServletResponse response) { String ena=null; if(!cookieEnable){ ena = SWBPlatform.getEnv("wb/CookEnabled"); } if (ena == null){ ena = "true"; } if (ena.equalsIgnoreCase("true")) { Cookie cneecook = new Cookie(cookieName, cookieValue); if (save) { cneecook.setMaxAge(60 * 60 * 365); } else { cneecook.setMaxAge(-1); } cneecook.setPath("/"); response.addCookie(cneecook); } } /** * metodo que se encarga de grabar y borrar una cookie. * * @param cookieName :
Este es el nombre de la cookie que grabara o
     * borrara este metodo
* @param cookieValue :
Este es el valor de la cookie que sera grabada o borrada
* @param save :
si este parametro es true graba la cookie, de lo
     * contrario la borra
* @param request :
Este request es para grabar la cookie
* @param response :
Este response es para borrar la cookie
*/ public void AddCookie(String cookieName, String cookieValue, boolean save, HttpServletRequest request, HttpServletResponse response) { AddCookie(cookieName,cookieValue,save,false,request,response); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy