001: package com.calipso.reportgenerator.reportmanager;
002:
003: import com.calipso.reportgenerator.common.InfoException;
004:
005: import java.util.HashMap;
006:
007: import com.calipso.reportgenerator.common.LanguageTraslator;
008:
009: /**
010: * Esta clase se encarga de cachear los repositorios
011: */
012: public class CacheRepository {
013: private HashMap cache;
014: private String repositoryName;
015:
016: /**
017: * Inicializa y asigna un nombre al repositorio
018: * @param name
019: */
020: public CacheRepository(String name) {
021: this .repositoryName = name;
022: }
023:
024: /**
025: * Devuelve el cache
026: * @return
027: */
028: public HashMap getCache() {
029: if (cache == null) {
030: cache = new HashMap();
031: }
032: return cache;
033: }
034:
035: /**
036: * Indica si existe un objeto cacheado con el nombre indicado
037: * @param name
038: * @return
039: */
040: public boolean containsObject(String name) {
041: return getCache().containsKey(name.toUpperCase());
042: }
043:
044: /**
045: * Indica si existe cacheado el objeto indicado
046: * @param object
047: * @return
048: */
049: public boolean containsObject(Object object) {
050: return getCache().containsValue(object);
051: }
052:
053: /**
054: * Agrega al repositorio de objectos cacheados el objeto indicado
055: * @param name Nombre del objeto
056: * @param object Objeto a cachear
057: */
058: public void addObject(String name, Object object) {
059: if (!containsObject(name)) {
060: System.out.println(repositoryName
061: + LanguageTraslator.traslate("494") + name);
062: getCache().put(name, object);
063: }
064: }
065:
066: /**
067: * Remueve el objeto del cache
068: * @param name Nombre del objeto
069: * @throws InfoException
070: */
071: public void removeObject(String name) throws InfoException {
072: if (name.equalsIgnoreCase("")) {
073: throw new InfoException(LanguageTraslator.traslate("72"));
074: } else {
075: if (getCache().remove(name) == null) {
076: throw new InfoException(LanguageTraslator
077: .traslate("73")
078: + name);
079: }
080: }
081: }
082:
083: /**
084: * Devuelve el objeto con el nombre indicado
085: * @param name
086: * @return
087: * @throws InfoException
088: */
089: public Object getObject(String name) throws InfoException {
090: Object returnObject = null;
091: if (name.equalsIgnoreCase("")) {
092: throw new InfoException(LanguageTraslator.traslate("74"));
093: } else {
094: returnObject = getCache().get(name);
095: System.out.println(repositoryName
096: + LanguageTraslator.traslate("495") + name);
097: if (returnObject == null) {
098: throw new InfoException(LanguageTraslator
099: .traslate("75")
100: + name);
101: } else {
102: return returnObject;
103: }
104: }
105: }
106:
107: /**
108: * Borra el cache
109: */
110: public void deleteAll() {
111: getCache().clear();
112: }
113:
114: /**
115: * Elimina del cache el objeto indicado
116: * @param name
117: */
118: public void delete(String name) {
119: getCache().remove(name);
120: }
121:
122: }
|