001    /**
002     * 
003     * Copyright 2004 Hiram Chirino
004     * 
005     * Licensed under the Apache License, Version 2.0 (the "License"); 
006     * you may not use this file except in compliance with the License. 
007     * You may obtain a copy of the License at 
008     * 
009     * http://www.apache.org/licenses/LICENSE-2.0
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS, 
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
014     * See the License for the specific language governing permissions and 
015     * limitations under the License. 
016     * 
017     **/
018    package org.activemq.store.jdbc.adapter;
019    
020    import org.activemq.store.jdbc.StatementProvider;
021    
022    /**
023     * A StatementProvider filter that caches the responses
024     * of the filtered StatementProvider.
025     * 
026     * @version $Revision: 1.1 $
027     */
028    public class CachingStatementProvider implements StatementProvider {
029        
030        final private StatementProvider statementProvider;
031    
032        private String addMessageStatment;
033        private String addXidStatment;
034        private String[] createSchemaStatments;
035        private String[] dropSchemaStatments;
036        private String findAllMessagesStatment;
037        private String findAllXidStatment;
038        private String findLastSequenceIdInMsgs;
039        private String findMessageStatment;
040        private String removeMessageStatment;
041        private String removeXidStatment;
042        private String updateMessageStatment;
043            private String createDurableSubStatment;
044            private String updateDurableSubStatment;
045            private String findDurableSubStatment;
046            private String findAllDurableSubMessagesStatment;
047            private String updateLastAckOfDurableSub;
048            private String findMessageSequenceIdStatment;
049        private String removeAllMessagesStatment;
050        private String removeAllSubscriptionsStatment;
051        private String deleteSubscriptionStatment;
052        private String deleteOldMessagesStatment;
053        private String findLastSequenceIdInAcks;
054    
055        public CachingStatementProvider(StatementProvider statementProvider) {
056            this.statementProvider = statementProvider;
057        }
058        
059        public StatementProvider getNext() {
060            return statementProvider;
061        }
062        
063        public String getAddMessageStatment() {
064            if (addMessageStatment == null) {
065                addMessageStatment = statementProvider.getAddMessageStatment();
066            }
067            return addMessageStatment;
068        }
069    
070        public String getAddXidStatment() {
071            if (addXidStatment == null) {
072                addXidStatment = statementProvider.getAddXidStatment();
073            }
074            return addXidStatment;
075        }
076    
077        public String[] getCreateSchemaStatments() {
078            if( createSchemaStatments==null ) {
079                createSchemaStatments = statementProvider.getCreateSchemaStatments();
080            }
081            return createSchemaStatments;
082        }
083    
084        public String[] getDropSchemaStatments() {
085            if( dropSchemaStatments==null ) {
086                dropSchemaStatments = statementProvider.getDropSchemaStatments();
087            }
088            return dropSchemaStatments;
089        }
090    
091        public String getFindAllMessagesStatment() {
092            if( findAllMessagesStatment==null ) {
093                findAllMessagesStatment = statementProvider.getFindAllMessagesStatment();
094            }
095            return findAllMessagesStatment;
096        }
097    
098        public String getFindAllXidStatment() {
099            if( findAllXidStatment==null ) {
100                findAllXidStatment = statementProvider.getFindAllXidStatment();
101            }
102            return findAllXidStatment;
103        }
104    
105        public String getFindLastSequenceIdInMsgs() {
106            if( findLastSequenceIdInMsgs==null ) {
107                findLastSequenceIdInMsgs = statementProvider.getFindLastSequenceIdInMsgs();
108            }
109            return findLastSequenceIdInMsgs;
110        }
111    
112        public String getFindLastSequenceIdInAcks() {
113            if( findLastSequenceIdInAcks==null ) {
114                findLastSequenceIdInAcks = statementProvider.getFindLastSequenceIdInAcks();
115            }
116            return findLastSequenceIdInAcks;
117        }
118    
119        public String getFindMessageStatment() {
120            if( findMessageStatment==null ) {
121                findMessageStatment = statementProvider.getFindMessageStatment();
122            }
123            return findMessageStatment;
124        }
125    
126        /**
127         * @return
128         */
129        public String getRemoveMessageStatment() {
130            if( removeMessageStatment==null ) {
131                removeMessageStatment = statementProvider.getRemoveMessageStatment();
132            }
133            return removeMessageStatment;
134        }
135    
136        public String getRemoveXidStatment() {
137            if( removeXidStatment==null ) {
138                removeXidStatment = statementProvider.getRemoveXidStatment();
139            }
140            return removeXidStatment;
141        }
142    
143        public String getUpdateMessageStatment() {
144            if( updateMessageStatment==null ) {
145                updateMessageStatment = statementProvider.getUpdateMessageStatment();
146            }
147            return updateMessageStatment;
148        }
149    
150            public String getCreateDurableSubStatment() {
151                    if(createDurableSubStatment==null) {
152                            createDurableSubStatment = statementProvider.getCreateDurableSubStatment();
153                    }
154                    return createDurableSubStatment;
155            }
156    
157            public String getUpdateDurableSubStatment() {
158                    if( updateDurableSubStatment == null ) {
159                            updateDurableSubStatment = statementProvider.getUpdateDurableSubStatment();
160                    }
161                    return updateDurableSubStatment;
162            }
163    
164            public String getFindDurableSubStatment() {
165                    if(findDurableSubStatment==null) {
166                            findDurableSubStatment = statementProvider.getFindDurableSubStatment();
167                    }
168                    return findDurableSubStatment;
169            }
170    
171            public String getFindAllDurableSubMessagesStatment() {
172                    if(findAllDurableSubMessagesStatment==null) {
173                            findAllDurableSubMessagesStatment = statementProvider.getFindAllDurableSubMessagesStatment();
174                    }
175                    return findAllDurableSubMessagesStatment;
176            }
177    
178            public String getUpdateLastAckOfDurableSub() {
179                    if(updateLastAckOfDurableSub==null) {
180                            updateLastAckOfDurableSub = statementProvider.getUpdateLastAckOfDurableSub();
181                    }
182                    return updateLastAckOfDurableSub;
183            }
184    
185            public String getFindMessageSequenceIdStatment() {
186                    if ( findMessageSequenceIdStatment==null ) {
187                            findMessageSequenceIdStatment = statementProvider.getFindMessageSequenceIdStatment();
188                    }
189                    return findMessageSequenceIdStatment;
190            }
191    
192        public String getRemoveAllMessagesStatment() {
193                    if ( removeAllMessagesStatment==null ) {
194                        removeAllMessagesStatment = statementProvider.getRemoveAllMessagesStatment();
195                    }
196                    return removeAllMessagesStatment;
197        }
198    
199        public String getRemoveAllSubscriptionsStatment() {
200                    if ( removeAllSubscriptionsStatment==null ) {
201                        removeAllSubscriptionsStatment = statementProvider.getRemoveAllSubscriptionsStatment();
202                    }
203                    return removeAllSubscriptionsStatment;
204        }
205    
206        public String getDeleteSubscriptionStatment() {
207            if ( deleteSubscriptionStatment==null ) {
208                deleteSubscriptionStatment = statementProvider.getDeleteSubscriptionStatment();
209            }
210            return deleteSubscriptionStatment;
211        }
212    
213        public String getDeleteOldMessagesStatment() {
214            if ( deleteOldMessagesStatment==null ) {
215                deleteOldMessagesStatment = statementProvider.getDeleteOldMessagesStatment();
216            }
217            return deleteOldMessagesStatment;
218        }
219    }