package es.ejie.frmk.infraestructura.poolCache;

import java.io.Serializable;

/**
 * Clase que representa un elemeneto almacenable en la caché.
 * @version 1.0 Fecha: 09-feb-04 (Q70Cache)
 * @version 2.0 Fecha: 21-feb-04
 */
public class Q70ElementoCache implements Serializable{
		Object cachedData;
		protected long enCacheDesde;
		protected long ultimoAcceso;

		/**
		* Construye una caché con el nombre especificado
	 	* @param dato Objeto para almacenar en la caché.
		*/
		public Q70ElementoCache(Object dato) {
			long ahora = System.currentTimeMillis();
			this.cachedData = dato;
			enCacheDesde = ahora;
			ultimoAcceso = ahora;
		}

		/**
		 * Método que retorna el objeto almacenado.
		 * @return Object almacenado.
		 */
		protected Object getCachedData() {
			ultimoAcceso = System.currentTimeMillis();
			return cachedData;
		}

		/**
		 * Método que determina si un elemento en la caché debe ser eliminado.
		 * @param ahora Tiempo actual.
		 * @param taccess Tiempo de inactividad. 
		 * @param tlive Tiempo de vida.
		 * @return true si debe ser eliminado.
		 */
		protected boolean hasExpired(long ahora, long taccess, long tlive) {
			if (ahora > ultimoAcceso + taccess || ahora > enCacheDesde + tlive){				
				return true;
			}
			else return false;
		}


	}	

