01: /**
02: * Sequoia: Database clustering technology.
03: * Copyright (C) 2002-2004 French National Institute For Research In Computer
04: * Science And Control (INRIA).
05: * Copyright (C) 2005 AmicoSoft, Inc. dba Emic Networks
06: * Contact: sequoia@continuent.org
07: *
08: * Licensed under the Apache License, Version 2.0 (the "License");
09: * you may not use this file except in compliance with the License.
10: * You may obtain a copy of the License at
11: *
12: * http://www.apache.org/licenses/LICENSE-2.0
13: *
14: * Unless required by applicable law or agreed to in writing, software
15: * distributed under the License is distributed on an "AS IS" BASIS,
16: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17: * See the License for the specific language governing permissions and
18: * limitations under the License.
19: *
20: * Initial developer(s): Emmanuel Cecchet.
21: * Contributor(s): Nicolas Modrzyk.
22: */package org.continuent.sequoia.controller.cache.result;
23:
24: import org.continuent.sequoia.controller.cache.result.entries.AbstractResultCacheEntry;
25: import org.continuent.sequoia.controller.requests.AbstractWriteRequest;
26: import org.continuent.sequoia.controller.requests.ParsingGranularities;
27: import org.continuent.sequoia.controller.requests.UpdateRequest;
28:
29: /**
30: * This is a query cache implementation with a database granularity:
31: * <ul>
32: * <li><code>DATABASE</code>: the cache is flushed each time the database is
33: * updated (every INSERT, UPDATE, DELETE, ... statement).</li>
34: * </ul>
35: *
36: * @author <a href="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet </a>
37: * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a>
38: * @version 1.0
39: */
40:
41: public class ResultCacheDatabase extends ResultCache {
42:
43: /**
44: * Builds a new ResultCache with a database granularity.
45: *
46: * @param maxEntries maximum number of entries
47: * @param pendingTimeout pending timeout for concurrent queries
48: */
49: public ResultCacheDatabase(int maxEntries, int pendingTimeout) {
50: super (maxEntries, pendingTimeout);
51: parsingGranularity = ParsingGranularities.NO_PARSING;
52: }
53:
54: /**
55: * @see org.continuent.sequoia.controller.cache.result.ResultCache#processAddToCache
56: */
57: protected void processAddToCache(AbstractResultCacheEntry qe) {
58: return;
59: }
60:
61: /**
62: * @see org.continuent.sequoia.controller.cache.result.AbstractResultCache#isUpdateNecessary(org.continuent.sequoia.controller.requests.UpdateRequest)
63: */
64: public boolean isUpdateNecessary(UpdateRequest request) {
65: return true;
66: }
67:
68: /**
69: * @see org.continuent.sequoia.controller.cache.result.ResultCache#processWriteNotify(org.continuent.sequoia.controller.requests.AbstractWriteRequest)
70: */
71: protected void processWriteNotify(AbstractWriteRequest request) {
72: flushCache();
73: }
74:
75: /**
76: * @see org.continuent.sequoia.controller.cache.result.ResultCache#getName()
77: */
78: public String getName() {
79: return "database";
80: }
81:
82: }
|