1 22 23 package org.continuent.sequoia.controller.cache.result; 24 25 import java.util.Hashtable ; 26 27 import org.continuent.sequoia.common.xml.DatabasesXmlTags; 28 import org.continuent.sequoia.controller.cache.result.rules.EagerCaching; 29 import org.continuent.sequoia.controller.cache.result.rules.NoCaching; 30 import org.continuent.sequoia.controller.cache.result.rules.RelaxedCaching; 31 32 38 public class ResultCacheFactory 39 { 40 50 public static AbstractResultCache getCacheInstance(int granularityValue, 51 int maxEntries, int pendingTimeout) throws InstantiationException  52 { 53 AbstractResultCache currentRequestCache = null; 54 switch (granularityValue) 55 { 56 case CachingGranularities.TABLE : 57 currentRequestCache = new ResultCacheTable(maxEntries, pendingTimeout); 58 break; 59 case CachingGranularities.DATABASE : 60 currentRequestCache = new ResultCacheDatabase(maxEntries, 61 pendingTimeout); 62 break; 63 case CachingGranularities.COLUMN : 64 currentRequestCache = new ResultCacheColumn(maxEntries, pendingTimeout); 65 break; 66 case CachingGranularities.COLUMN_UNIQUE : 67 currentRequestCache = new ResultCacheColumnUnique(maxEntries, 68 pendingTimeout); 69 break; 70 default : 71 throw new InstantiationException ("Invalid Granularity Value"); 72 } 73 return currentRequestCache; 74 } 75 76 83 public static CacheBehavior getCacheBehaviorInstance(String behaviorString, 84 Hashtable options) 85 { 86 if (behaviorString.equalsIgnoreCase(DatabasesXmlTags.ELT_NoCaching)) 87 return new NoCaching(); 88 if (behaviorString.equals(DatabasesXmlTags.ELT_EagerCaching)) 89 { 90 long timeout = 1000 * Long.parseLong((String ) options 93 .get(DatabasesXmlTags.ATT_timeout)); 94 return new EagerCaching(timeout); 95 } 96 if (behaviorString.equals(DatabasesXmlTags.ELT_RelaxedCaching)) 97 { 98 long timeout = 1000 * Long.parseLong((String ) options 100 .get(DatabasesXmlTags.ATT_timeout)); 101 boolean keepIfNotDirty = new Boolean ((String ) options 102 .get(DatabasesXmlTags.ATT_keepIfNotDirty)).booleanValue(); 103 return new RelaxedCaching(keepIfNotDirty, timeout); 104 } 105 else 106 return null; 107 } 108 } | Popular Tags |