1 /***
2 *
3 * Copyright 2004 Hiram Chirino
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.codehaus.activemq.store.jdbc.adapter;
19
20 import org.codehaus.activemq.store.jdbc.StatementProvider;
21
22 /***
23 * A StatementProvider filter that caches the responses
24 * of the filtered StatementProvider.
25 *
26 * @version $Revision: 1.2 $
27 */
28 public class CachingStatementProvider implements StatementProvider {
29
30 final private StatementProvider statementProvider;
31
32 private String addMessageStatment;
33 private String addXidStatment;
34 private String[] createSchemaStatments;
35 private String[] dropSchemaStatments;
36 private String findAllMessagesStatment;
37 private String findAllTxStatment;
38 private String findAllXidStatment;
39 private String findLastSequenceId;
40 private String findMessageStatment;
41 private String findXidStatment;
42 private String removeMessageStatment;
43 private String removeXidStatment;
44 private String updateMessageStatment;
45 private String updateXidStatment;
46
47 private String createDurableSubStatment;
48
49 private String updateDurableSubStatment;
50
51 private String findDurableSubStatment;
52
53 private String findAllDurableSubMessagesStatment;
54
55 private String updateLastAckOfDurableSub;
56
57 /***
58 * @param statementProvider
59 */
60 public CachingStatementProvider(StatementProvider statementProvider) {
61 this.statementProvider = statementProvider;
62 }
63
64 public StatementProvider getNext() {
65 return statementProvider;
66 }
67
68 /***
69 * @return
70 */
71 public String getAddMessageStatment() {
72 if (addMessageStatment == null) {
73 addMessageStatment = statementProvider.getAddMessageStatment();
74 }
75 return addMessageStatment;
76 }
77
78 /***
79 * @return
80 */
81 public String getAddXidStatment() {
82 if (addXidStatment == null) {
83 addXidStatment = statementProvider.getAddXidStatment();
84 }
85 return addXidStatment;
86 }
87
88 /***
89 * @return
90 */
91 public String[] getCreateSchemaStatments() {
92 if( createSchemaStatments==null ) {
93 createSchemaStatments = statementProvider.getCreateSchemaStatments();
94 }
95 return createSchemaStatments;
96 }
97
98 /***
99 * @return
100 */
101 public String[] getDropSchemaStatments() {
102 if( dropSchemaStatments==null ) {
103 dropSchemaStatments = statementProvider.getDropSchemaStatments();
104 }
105 return dropSchemaStatments;
106 }
107
108 /***
109 * @return
110 */
111 public String getFindAllMessagesStatment() {
112 if( findAllMessagesStatment==null ) {
113 findAllMessagesStatment = statementProvider.getFindAllMessagesStatment();
114 }
115 return findAllMessagesStatment;
116 }
117
118 /***
119 * @return
120 */
121 public String getFindAllTxStatment() {
122 if( findAllTxStatment == null ) {
123 findAllTxStatment = statementProvider.getFindAllTxStatment();
124 }
125 return findAllTxStatment;
126 }
127
128 /***
129 * @return
130 */
131 public String getFindAllXidStatment() {
132 if( findAllXidStatment==null ) {
133 findAllXidStatment = statementProvider.getFindAllXidStatment();
134 }
135 return findAllXidStatment;
136 }
137
138 /***
139 * @return
140 */
141 public String getFindLastSequenceId() {
142 if( findLastSequenceId==null ) {
143 findLastSequenceId = statementProvider.getFindLastSequenceId();
144 }
145 return findLastSequenceId;
146 }
147
148 /***
149 * @return
150 */
151 public String getFindMessageStatment() {
152 if( findMessageStatment==null ) {
153 findMessageStatment = statementProvider.getFindMessageStatment();
154 }
155 return findMessageStatment;
156 }
157
158 /***
159 * @return
160 */
161 public String getFindXidStatment() {
162 if( findXidStatment==null ) {
163 findXidStatment = statementProvider.getFindXidStatment();
164 }
165 return findXidStatment;
166 }
167
168 /***
169 * @return
170 */
171 public String getRemoveMessageStatment() {
172 if( removeMessageStatment==null ) {
173 removeMessageStatment = statementProvider.getRemoveMessageStatment();
174 }
175 return removeMessageStatment;
176 }
177
178 /***
179 * @return
180 */
181 public String getRemoveXidStatment() {
182 if( removeXidStatment==null ) {
183 removeXidStatment = statementProvider.getRemoveXidStatment();
184 }
185 return removeXidStatment;
186 }
187
188 /***
189 * @return
190 */
191 public String getUpdateMessageStatment() {
192 if( updateMessageStatment==null ) {
193 updateMessageStatment = statementProvider.getUpdateMessageStatment();
194 }
195 return updateMessageStatment;
196 }
197
198 /***
199 * @return
200 */
201 public String getUpdateXidStatment() {
202 if( updateXidStatment==null ) {
203 updateXidStatment = statementProvider.getUpdateXidStatment();
204 }
205 return updateXidStatment;
206 }
207
208 /***
209 * @see org.codehaus.activemq.store.jdbc.StatementProvider#getCreateDurableSubStatment()
210 */
211 public String getCreateDurableSubStatment() {
212 if(createDurableSubStatment==null) {
213 createDurableSubStatment = statementProvider.getCreateDurableSubStatment();
214 }
215 return createDurableSubStatment;
216 }
217
218 /***
219 * @see org.codehaus.activemq.store.jdbc.StatementProvider#getUpdateDurableSubStatment()
220 */
221 public String getUpdateDurableSubStatment() {
222 if( updateDurableSubStatment == null ) {
223 updateDurableSubStatment = statementProvider.getUpdateDurableSubStatment();
224 }
225 return updateDurableSubStatment;
226 }
227
228 /***
229 * @see org.codehaus.activemq.store.jdbc.StatementProvider#getFindDurableSubStatment()
230 */
231 public String getFindDurableSubStatment() {
232 if(findDurableSubStatment==null) {
233 findDurableSubStatment = statementProvider.getFindDurableSubStatment();
234 }
235 return findDurableSubStatment;
236 }
237 /***
238 * @return
239 */
240 public String getFindAllDurableSubMessagesStatment() {
241 if(findAllDurableSubMessagesStatment==null) {
242 findAllDurableSubMessagesStatment = statementProvider.getFindAllDurableSubMessagesStatment();
243 }
244 return findAllDurableSubMessagesStatment;
245 }
246 /***
247 * @return
248 */
249 public String getUpdateLastAckOfDurableSub() {
250 if(updateLastAckOfDurableSub==null) {
251 updateLastAckOfDurableSub = statementProvider.getUpdateLastAckOfDurableSub();
252 }
253 return updateLastAckOfDurableSub;
254 }
255 }