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 }