001    package railo.runtime.query;
002    
003    import java.util.Date;
004    
005    import railo.runtime.db.SQL;
006    import railo.runtime.type.Query;
007    
008    /**
009     * interface for a query cache
010     */
011    public interface QueryCache {
012    
013        /**
014         * clear expired queries from cache
015         */
016        public abstract void clearUnused();
017    
018        /**
019         * returns a Query from Query Cache or null if no match found
020         * @param sql
021         * @param datasource
022         * @param username
023         * @param password
024         * @param cacheAfter
025         * @return Query
026         */
027        public abstract Query getQuery(SQL sql, String datasource, String username,
028                String password, Date cacheAfter);
029    
030        /**
031         * sets a Query to Cache
032         * @param sql
033         * @param datasource
034         * @param username
035         * @param password
036         * @param value
037         * @param cacheBefore
038         */
039        public abstract void set(SQL sql, String datasource, String username,
040                String password, Object value, Date cacheBefore);
041    
042        /**
043         * clear the cache
044         */
045        public abstract void clear();
046    
047            /**
048             * removes query from cache
049             * @param sql
050             * @param datasource
051             * @param username
052             * @param password
053             */
054            public abstract void remove(SQL sql, String datasource,String username, String password);
055    
056            public abstract Object get(SQL sql, String datasource,String username, String password, Date cachedafter);
057    
058    }