Thanks for the reply,
I'll take a look on it.
(I was away the last days)

Daniel


-----Original Message-----
From: Folkens, Brad [mailto:[EMAIL PROTECTED] 
Sent: Thursday, December 04, 2003 9:33 PM
To: 'Turbine Users List'
Subject: RE: user history action

HistoryObject.java
-------------------


package com.domain.util;

import java.util.*;
import java.text.SimpleDateFormat;

import org.apache.turbine.util.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.httpclient.URIException;

/**
 *  The history object stores each history line item
 *  for the HistoryTool.
 *
 [EMAIL PROTECTED]     bfolkens
 [EMAIL PROTECTED]    November 15, 2002
 */
public class HistoryObject
{
        private static Log log = LogFactory.getLog(HistoryObject.class);
        
        /**
         *  Description of the Field
         */
        private String pathInfo;
        private String title;
        /**
         *  Description of the Field
         */
        private Hashtable parameterData;

        private Date timestamp;


        /**
         *  Constructor for the HistoryObject object
         */
        public HistoryObject()
        {
                timestamp = new Date();
        }


        /**
         *  Gets the time attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]    The time value
         */
        public String getTime()
        {
                SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy
hh:mm");
                return (sdf.format(timestamp));
        }


        /**
         *  Sets the pathInfo attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]  s  The new pathInfo value
         */
        public void setPathInfo(String s)
        {
                this.pathInfo = s;
        }


        /**
         *  Sets the title attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]  s  The new title value
         */
        public void setTitle(String s)
        {
                this.title = s;
        }


        /**
         *  Sets the parameterData attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]  m  The new parameterData value
         */
        public void setParameterData(Hashtable m)
        {
                this.parameterData = m;
        }


        /**
         *  Gets the pathInfo attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]    The pathInfo value
         */
        public String getPathInfo()
        {
                return (pathInfo);
        }


        /**
         *  Gets the parameterData attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]    The parameterData value
         */
        public Hashtable getParameterData()
        {
                return (parameterData);
        }


        /**
         *  Gets the title attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]    The title value
         */
        public String getTitle()
        {
                return (title);
        }


        /**
         *  Get the name of the history object - essentially a line of
history.
         *
         [EMAIL PROTECTED]    The history description line
         */
        public String getName()
        {
                String tmpStr = new String();

                Hashtable h = getParameterData();
                Enumeration e = h.keys();
                while (e.hasMoreElements())
                {
                        try
                        {
                                String key = (String) e.nextElement();
                                String value = (String) h.get(key);
                                if (!key.equals("Search") &&
!key.equals("searchblank"))
                                {
                                        tmpStr += "'" + key + "=" +
translate(key, value) + "'";
                                        if (e.hasMoreElements())
                                        {
                                                tmpStr += ", ";
                                        }
                                }
                        }
                        catch (Exception ex)
                        {
                                log.error("Cannot format output string for
history: " + ex);
                        }
                }

                return (tmpStr);
        }


        /**
         *  Translate keys (for example int IDs -> Names) from search forms,
etc
         *  in the history list.  This makes certain int values a lot easier
to read.
         *
         [EMAIL PROTECTED]  key            The name of the key to transform
         [EMAIL PROTECTED]  value          Primary key to reference
         [EMAIL PROTECTED]                Translated key string
         [EMAIL PROTECTED]  Exception  From database access to resolve keys
         */
        public String translate(String key, String value)
                throws Exception
        {
                String tmpStr = value;

                if (key.equals("Someid"))
                {
                        // Find the id in the database
                        // i.e. tmpStr =
TbljobPeer.retrieveByPK(value).getName();
                }

                return (tmpStr);
        }


        /**
         *  Gets the URL attribute of the HistoryObject object
         *
         [EMAIL PROTECTED]  data  The rundata object from the calling VTL
         [EMAIL PROTECTED]       The URL value
         */
        public String getURL(RunData data)
        {
                String tmpStr = data.getServerScheme() + "://" +
data.getServerName() + getPathInfo();

                Hashtable h = getParameterData();
                Enumeration e = h.keys();
                if (e.hasMoreElements())
                {
                        tmpStr += "?";
                }
                while (e.hasMoreElements())
                {
                        String key = (String) e.nextElement();
                        String value = (String) h.get(key);
                        if (!key.equals("Search"))
                        {
                                try
                                {
                                        tmpStr += key + "=" +
URIUtil.encodeAll(value);
                                        if (e.hasMoreElements())
                                        {
                                                tmpStr += "&";
                                        }
                                }
                                catch (URIException urie)
                                {
                                        log.error("Cannot format url
correctly for history list:" + urie);
                                }
                        }
                }
                return (tmpStr);
        }
}










HistoryList.java
-----------------


package com.domain.tools;

import java.util.*;
import java.lang.reflect.*;

import javax.servlet.http.HttpSession;

import org.apache.turbine.modules.screens.VelocityScreen;

import org.apache.torque.util.Criteria;

import org.apache.velocity.context.Context;
import org.apache.turbine.services.velocity.TurbineVelocity;

import org.apache.turbine.util.*;
import org.apache.turbine.om.*;
import org.apache.turbine.om.security.*;


import com.domain.util.HistoryObject;

import org.apache.turbine.services.pull.ApplicationTool;
import org.apache.turbine.util.pool.Recyclable;

/**
 *  Description of the Class
 *
 [EMAIL PROTECTED]     bfolkens
 [EMAIL PROTECTED]    April 18, 2003
 */
public class HistoryList implements ApplicationTool, Recyclable
{
        User user = null;
        ArrayList historyList = null;


        /**
         *  Initialize the ApplicationTool
         *
         [EMAIL PROTECTED]  user  Description of the Parameter
         */
        public void init(Object user)
        {
                // session tool - so use user
                this.user = (User) user;
                this.historyList = new ArrayList();
        }


        /**
         *  Refresh the ApplicationTool
         */
        public void refresh()
        {
                // don't really need much here either
        }


        /**
         *  Adds a URL / Page to the history
         *
         [EMAIL PROTECTED]  title  The title of the history line
         [EMAIL PROTECTED]  data   The RunData object from the calling VTL 
         */
        public void addPage(String title, RunData data)
        {
                String strPathinfo = data.getRequest().getRequestURI();
                Map dataList = data.getRequest().getParameterMap();

                Hashtable dataHash = new Hashtable();
                if (dataList != null && dataList.size() > 0)
                {
                        Iterator i = dataList.entrySet().iterator();
                        while (i.hasNext())
                        {
                                Map.Entry entry = (Map.Entry) i.next();
                                if (entry != null && entry.getKey() != null
&& entry.getValue() != null)
                                {
                                        String key = new String((String)
entry.getKey());
                                        String value = new
String(((String[]) entry.getValue())[0]);
                                        if (value != null && value.length()
> 0)
                                        {
                                                dataHash.put(key, value);
                                        }
                                }
                        }
                }

                // Only add a new one if the current one is different from
the "top"
                boolean addTop = true;
                if(historyList != null && historyList.size() > 0)
                {
                        HistoryObject top =
(HistoryObject)historyList.get(0);
                        addTop = !top.getTitle().equals(title);
                }
                
                if(addTop)
                {
                        HistoryObject historyObject = new HistoryObject();
                        historyObject.setTitle(title);
                        historyObject.setPathInfo(strPathinfo);
                        historyObject.setParameterData(dataHash);
                        historyList.add(0,historyObject);

                        if(historyList.size() > 5)
                        {
                                historyList.remove(5);
                        }
                }
        }


        /**
         *  Gets the history list
         *
         [EMAIL PROTECTED]    The history list
         */
        public List getHistory()
        {
                return (historyList);
        }


        // Recyclable implementation
        /**
         *  Description of the Method
         */
        public void recycle()
        {
                // don't really need much else
        }


        private boolean disposed = false;


        /**
         *  Description of the Method
         */
        public void dispose()
        {
                disposed = true;
                user = null;
                historyList = null;
        }


        /**
         *  Gets the disposed attribute of the FormLoader object
         *
         [EMAIL PROTECTED]    The disposed value
         */
        public boolean isDisposed()
        {
                return (disposed);
        }
}









-----Original Message-----
From: Daniel Moldovan [mailto:[EMAIL PROTECTED] 
Sent: Thursday, December 04, 2003 2:21 AM
To: '[EMAIL PROTECTED]'
Subject: user history action

Hi,

 

I wonder if anyone can suggest me a history

mechanism. I mean another than the browser's

mechanism. I want to avoid than actions would be

executed again, and I want to skip some screens if

I want to. It should be a flexible mechanism.

 

If anyone already did this, I would appreciate if

he/she will share it.

 

Thanks,

 

Daniel

 

 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to