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 findMessageAttributesStatment;
041 private String findMessageAttributesForUpdateStatment;
042 private String removeMessageStatment;
043 private String removeXidStatment;
044 private String updateMessageStatment;
045 private String createDurableSubStatment;
046 private String updateDurableSubStatment;
047 private String findDurableSubStatment;
048 private String findAllDurableSubMessagesStatment;
049 private String updateLastAckOfDurableSub;
050 private String findMessageSequenceIdStatment;
051 private String removeAllMessagesStatment;
052 private String removeAllSubscriptionsStatment;
053 private String deleteSubscriptionStatment;
054 private String deleteOldMessagesStatment;
055 private String findExpiredMessagesStatement;
056 private String deleteMessageStatement;
057 private String findLastSequenceIdInAcks;
058 private String setDeadLetterFlagStatement;
059
060 public CachingStatementProvider(StatementProvider statementProvider) {
061 this.statementProvider = statementProvider;
062 }
063
064 public StatementProvider getNext() {
065 return statementProvider;
066 }
067
068 public String getAddMessageStatment() {
069 if (addMessageStatment == null) {
070 addMessageStatment = statementProvider.getAddMessageStatment();
071 }
072 return addMessageStatment;
073 }
074
075 public String getAddXidStatment() {
076 if (addXidStatment == null) {
077 addXidStatment = statementProvider.getAddXidStatment();
078 }
079 return addXidStatment;
080 }
081
082 public String[] getCreateSchemaStatments() {
083 if( createSchemaStatments==null ) {
084 createSchemaStatments = statementProvider.getCreateSchemaStatments();
085 }
086 return createSchemaStatments;
087 }
088
089 public String[] getDropSchemaStatments() {
090 if( dropSchemaStatments==null ) {
091 dropSchemaStatments = statementProvider.getDropSchemaStatments();
092 }
093 return dropSchemaStatments;
094 }
095
096 public String getFindAllMessagesStatment() {
097 if( findAllMessagesStatment==null ) {
098 findAllMessagesStatment = statementProvider.getFindAllMessagesStatment();
099 }
100 return findAllMessagesStatment;
101 }
102
103 public String getFindAllXidStatment() {
104 if( findAllXidStatment==null ) {
105 findAllXidStatment = statementProvider.getFindAllXidStatment();
106 }
107 return findAllXidStatment;
108 }
109
110 public String getFindLastSequenceIdInMsgs() {
111 if( findLastSequenceIdInMsgs==null ) {
112 findLastSequenceIdInMsgs = statementProvider.getFindLastSequenceIdInMsgs();
113 }
114 return findLastSequenceIdInMsgs;
115 }
116
117 public String getFindLastSequenceIdInAcks() {
118 if( findLastSequenceIdInAcks==null ) {
119 findLastSequenceIdInAcks = statementProvider.getFindLastSequenceIdInAcks();
120 }
121 return findLastSequenceIdInAcks;
122 }
123
124 public String getFindMessageStatment() {
125 if( findMessageStatment==null ) {
126 findMessageStatment = statementProvider.getFindMessageStatment();
127 }
128 return findMessageStatment;
129 }
130
131 public String getFindMessageAttributesStatment() {
132 if( findMessageAttributesStatment==null ) {
133 findMessageAttributesStatment = statementProvider.getFindMessageAttributesStatment();
134 }
135 return findMessageAttributesStatment;
136 }
137
138 public String getFindMessageAttributesForUpdateStatment() {
139 if( findMessageAttributesForUpdateStatment==null ) {
140 findMessageAttributesForUpdateStatment = statementProvider.getFindMessageAttributesForUpdateStatment();
141 }
142 return findMessageAttributesForUpdateStatment;
143 }
144
145 /**
146 * @return
147 */
148 public String getRemoveMessageStatment() {
149 if( removeMessageStatment==null ) {
150 removeMessageStatment = statementProvider.getRemoveMessageStatment();
151 }
152 return removeMessageStatment;
153 }
154
155 public String getRemoveXidStatment() {
156 if( removeXidStatment==null ) {
157 removeXidStatment = statementProvider.getRemoveXidStatment();
158 }
159 return removeXidStatment;
160 }
161
162 public String getUpdateMessageStatment() {
163 if( updateMessageStatment==null ) {
164 updateMessageStatment = statementProvider.getUpdateMessageStatment();
165 }
166 return updateMessageStatment;
167 }
168
169 public String getCreateDurableSubStatment() {
170 if(createDurableSubStatment==null) {
171 createDurableSubStatment = statementProvider.getCreateDurableSubStatment();
172 }
173 return createDurableSubStatment;
174 }
175
176 public String getUpdateDurableSubStatment() {
177 if( updateDurableSubStatment == null ) {
178 updateDurableSubStatment = statementProvider.getUpdateDurableSubStatment();
179 }
180 return updateDurableSubStatment;
181 }
182
183 public String getFindDurableSubStatment() {
184 if(findDurableSubStatment==null) {
185 findDurableSubStatment = statementProvider.getFindDurableSubStatment();
186 }
187 return findDurableSubStatment;
188 }
189
190 public String getFindAllDurableSubMessagesStatment() {
191 if(findAllDurableSubMessagesStatment==null) {
192 findAllDurableSubMessagesStatment = statementProvider.getFindAllDurableSubMessagesStatment();
193 }
194 return findAllDurableSubMessagesStatment;
195 }
196
197 public String getUpdateLastAckOfDurableSub() {
198 if(updateLastAckOfDurableSub==null) {
199 updateLastAckOfDurableSub = statementProvider.getUpdateLastAckOfDurableSub();
200 }
201 return updateLastAckOfDurableSub;
202 }
203
204 public String getFindMessageSequenceIdStatment() {
205 if ( findMessageSequenceIdStatment==null ) {
206 findMessageSequenceIdStatment = statementProvider.getFindMessageSequenceIdStatment();
207 }
208 return findMessageSequenceIdStatment;
209 }
210
211 public String getRemoveAllMessagesStatment() {
212 if ( removeAllMessagesStatment==null ) {
213 removeAllMessagesStatment = statementProvider.getRemoveAllMessagesStatment();
214 }
215 return removeAllMessagesStatment;
216 }
217
218 public String getRemoveAllSubscriptionsStatment() {
219 if ( removeAllSubscriptionsStatment==null ) {
220 removeAllSubscriptionsStatment = statementProvider.getRemoveAllSubscriptionsStatment();
221 }
222 return removeAllSubscriptionsStatment;
223 }
224
225 public String getDeleteSubscriptionStatment() {
226 if ( deleteSubscriptionStatment==null ) {
227 deleteSubscriptionStatment = statementProvider.getDeleteSubscriptionStatment();
228 }
229 return deleteSubscriptionStatment;
230 }
231
232 public String getDeleteOldMessagesStatment() {
233 if ( deleteOldMessagesStatment==null ) {
234 deleteOldMessagesStatment = statementProvider.getDeleteOldMessagesStatment();
235 }
236 return deleteOldMessagesStatment;
237 }
238
239 public String getFindExpiredMessagesStatment() {
240 if ( findExpiredMessagesStatement==null) {
241 findExpiredMessagesStatement = statementProvider.getFindExpiredMessagesStatment();
242 }
243 return findExpiredMessagesStatement;
244 }
245
246 public String getDeleteMessageStatement() {
247 if ( deleteMessageStatement==null) {
248 deleteMessageStatement = statementProvider.getDeleteMessageStatement();
249 }
250 return deleteMessageStatement;
251 }
252
253 public String getSetDeadLetterFlagStatement() {
254 if ( setDeadLetterFlagStatement==null) {
255 setDeadLetterFlagStatement = statementProvider.getSetDeadLetterFlagStatement();
256 }
257 return setDeadLetterFlagStatement;
258 }
259
260 public void setTablePrefix(String tablePrefix) {
261 statementProvider.setTablePrefix(tablePrefix);
262 }
263
264 public String getTablePrefix() {
265 return statementProvider.getTablePrefix();
266 }
267 }