001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  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    package org.apache.activemq.store.jdbc;
018    
019    /**
020     * 
021     * 
022     * @org.apache.xbean.XBean element="statements"
023     * 
024     */
025    public class Statements {
026    
027        protected String messageTableName = "ACTIVEMQ_MSGS";
028        protected String durableSubAcksTableName = "ACTIVEMQ_ACKS";
029        protected String lockTableName = "ACTIVEMQ_LOCK";
030        protected String binaryDataType = "BLOB";
031        protected String containerNameDataType = "VARCHAR(250)";
032        protected String msgIdDataType = "VARCHAR(250)";
033        protected String sequenceDataType = "BIGINT";
034        protected String longDataType = "BIGINT";
035        protected String stringIdDataType = "VARCHAR(250)";
036        protected boolean useExternalMessageReferences;
037    
038        private String tablePrefix = "";
039        private String addMessageStatement;
040        private String updateMessageStatement;
041        private String removeMessageStatement;
042        private String findMessageSequenceIdStatement;
043        private String findMessageStatement;
044        private String findMessageByIdStatement;
045        private String findAllMessagesStatement;
046        private String findLastSequenceIdInMsgsStatement;
047        private String findLastSequenceIdInAcksStatement;
048        private String createDurableSubStatement;
049        private String findDurableSubStatement;
050        private String findAllDurableSubsStatement;
051        private String updateLastPriorityAckRowOfDurableSubStatement;
052        private String deleteSubscriptionStatement;
053        private String findAllDurableSubMessagesStatement;
054        private String findDurableSubMessagesStatement;
055        private String findDurableSubMessagesByPriorityStatement;
056        private String findAllDestinationsStatement;
057        private String removeAllMessagesStatement;
058        private String removeAllSubscriptionsStatement;
059        private String deleteOldMessagesStatement;
060        private String[] createSchemaStatements;
061        private String[] dropSchemaStatements;
062        private String lockCreateStatement;
063        private String lockUpdateStatement;
064        private String nextDurableSubscriberMessageStatement;
065        private String durableSubscriberMessageCountStatement;
066        private String lastAckedDurableSubscriberMessageStatement;
067        private String destinationMessageCountStatement;
068        private String findNextMessagesStatement;
069        private String findNextMessagesByPriorityStatement;
070        private boolean useLockCreateWhereClause;
071        private String findAllMessageIdsStatement;
072        private String lastProducerSequenceIdStatement;
073        private String selectDurablePriorityAckStatement;
074    
075        private String insertDurablePriorityAckStatement;
076        private String updateDurableLastAckStatement;
077        private String deleteOldMessagesStatementWithPriority;
078        private String durableSubscriberMessageCountStatementWithPriority;
079        private String dropAckPKAlterStatementEnd;
080    
081        public String[] getCreateSchemaStatements() {
082            if (createSchemaStatements == null) {
083                createSchemaStatements = new String[] {
084                    "CREATE TABLE " + getFullMessageTableName() + "(" + "ID " + sequenceDataType + " NOT NULL"
085                        + ", CONTAINER " + containerNameDataType + ", MSGID_PROD " + msgIdDataType + ", MSGID_SEQ "
086                        + sequenceDataType + ", EXPIRATION " + longDataType + ", MSG "
087                        + (useExternalMessageReferences ? stringIdDataType : binaryDataType)
088                        + ", PRIMARY KEY ( ID ) )",
089                    "CREATE INDEX " + getFullMessageTableName() + "_MIDX ON " + getFullMessageTableName() + " (MSGID_PROD,MSGID_SEQ)",
090                    "CREATE INDEX " + getFullMessageTableName() + "_CIDX ON " + getFullMessageTableName() + " (CONTAINER)",
091                    "CREATE INDEX " + getFullMessageTableName() + "_EIDX ON " + getFullMessageTableName() + " (EXPIRATION)",
092                    "CREATE TABLE " + getFullAckTableName() + "(" + "CONTAINER " + containerNameDataType + " NOT NULL"
093                        + ", SUB_DEST " + stringIdDataType 
094                        + ", CLIENT_ID " + stringIdDataType + " NOT NULL" + ", SUB_NAME " + stringIdDataType
095                        + " NOT NULL" + ", SELECTOR " + stringIdDataType + ", LAST_ACKED_ID " + sequenceDataType
096                        + ", PRIMARY KEY ( CONTAINER, CLIENT_ID, SUB_NAME))", 
097                    "CREATE TABLE " + getFullLockTableName() 
098                        + "( ID " + longDataType + " NOT NULL, TIME " + longDataType 
099                        + ", BROKER_NAME " + stringIdDataType + ", PRIMARY KEY (ID) )",
100                    "INSERT INTO " + getFullLockTableName() + "(ID) VALUES (1)", 
101                    "ALTER TABLE " + getFullMessageTableName() + " ADD PRIORITY " + sequenceDataType,
102                    "CREATE INDEX " + getFullMessageTableName() + "_PIDX ON " + getFullMessageTableName() + " (PRIORITY)",
103                    "ALTER TABLE " + getFullAckTableName() + " ADD PRIORITY " + sequenceDataType  + " DEFAULT 5 NOT NULL",
104                    "ALTER TABLE " + getFullAckTableName() + " " + getDropAckPKAlterStatementEnd(),
105                    "ALTER TABLE " + getFullAckTableName() + " ADD PRIMARY KEY (CONTAINER, CLIENT_ID, SUB_NAME, PRIORITY)",
106                };
107            }
108            return createSchemaStatements;
109        }
110    
111        public String getDropAckPKAlterStatementEnd() {
112            if (dropAckPKAlterStatementEnd == null) {
113                dropAckPKAlterStatementEnd = "DROP PRIMARY KEY";
114            }
115            return dropAckPKAlterStatementEnd;
116        }
117    
118        public void setDropAckPKAlterStatementEnd(String dropAckPKAlterStatementEnd) {
119            this.dropAckPKAlterStatementEnd = dropAckPKAlterStatementEnd;
120        }
121    
122        public String[] getDropSchemaStatements() {
123            if (dropSchemaStatements == null) {
124                dropSchemaStatements = new String[] {"DROP TABLE " + getFullAckTableName() + "",
125                                                     "DROP TABLE " + getFullMessageTableName() + "",
126                                                     "DROP TABLE " + getFullLockTableName() + ""};
127            }
128            return dropSchemaStatements;
129        }
130    
131        public String getAddMessageStatement() {
132            if (addMessageStatement == null) {
133                addMessageStatement = "INSERT INTO "
134                                      + getFullMessageTableName()
135                                      + "(ID, MSGID_PROD, MSGID_SEQ, CONTAINER, EXPIRATION, PRIORITY, MSG) VALUES (?, ?, ?, ?, ?, ?, ?)";
136            }
137            return addMessageStatement;
138        }
139    
140        public String getUpdateMessageStatement() {
141            if (updateMessageStatement == null) {
142                updateMessageStatement = "UPDATE " + getFullMessageTableName() + " SET MSG=? WHERE ID=?";
143            }
144            return updateMessageStatement;
145        }
146    
147        public String getRemoveMessageStatement() {
148            if (removeMessageStatement == null) {
149                removeMessageStatement = "DELETE FROM " + getFullMessageTableName() + " WHERE ID=?";
150            }
151            return removeMessageStatement;
152        }
153    
154        public String getFindMessageSequenceIdStatement() {
155            if (findMessageSequenceIdStatement == null) {
156                findMessageSequenceIdStatement = "SELECT ID, PRIORITY FROM " + getFullMessageTableName()
157                                                 + " WHERE MSGID_PROD=? AND MSGID_SEQ=? AND CONTAINER=?";
158            }
159            return findMessageSequenceIdStatement;
160        }
161    
162        public String getFindMessageStatement() {
163            if (findMessageStatement == null) {
164                findMessageStatement = "SELECT MSG FROM " + getFullMessageTableName() + " WHERE MSGID_PROD=? AND MSGID_SEQ=?";
165            }
166            return findMessageStatement;
167        }
168    
169        public String getFindMessageByIdStatement() {
170            if (findMessageByIdStatement == null) {
171                    findMessageByIdStatement = "SELECT MSG FROM " + getFullMessageTableName() + " WHERE ID=?";
172            }
173            return findMessageByIdStatement;
174        }
175        
176        public String getFindAllMessagesStatement() {
177            if (findAllMessagesStatement == null) {
178                findAllMessagesStatement = "SELECT ID, MSG FROM " + getFullMessageTableName()
179                                           + " WHERE CONTAINER=? ORDER BY ID";
180            }
181            return findAllMessagesStatement;
182        }
183        
184        public String getFindAllMessageIdsStatement() {
185            //  this needs to be limited maybe need to use getFindLastSequenceIdInMsgsStatement
186            // and work back for X
187            if (findAllMessageIdsStatement == null) {
188                findAllMessageIdsStatement = "SELECT ID, MSGID_PROD, MSGID_SEQ FROM " + getFullMessageTableName()
189                                           + " ORDER BY ID DESC";
190            }
191            return findAllMessageIdsStatement;
192        }
193    
194        public String getFindLastSequenceIdInMsgsStatement() {
195            if (findLastSequenceIdInMsgsStatement == null) {
196                findLastSequenceIdInMsgsStatement = "SELECT MAX(ID) FROM " + getFullMessageTableName();
197            }
198            return findLastSequenceIdInMsgsStatement;
199        }
200    
201        public String getLastProducerSequenceIdStatement() {
202            if (lastProducerSequenceIdStatement == null) {
203                lastProducerSequenceIdStatement = "SELECT MAX(MSGID_SEQ) FROM " + getFullMessageTableName()
204                                                + " WHERE MSGID_PROD=?";
205            }
206            return lastProducerSequenceIdStatement;
207        }
208    
209    
210        public String getFindLastSequenceIdInAcksStatement() {
211            if (findLastSequenceIdInAcksStatement == null) {
212                findLastSequenceIdInAcksStatement = "SELECT MAX(LAST_ACKED_ID) FROM " + getFullAckTableName();
213            }
214            return findLastSequenceIdInAcksStatement;
215        }
216    
217        public String getCreateDurableSubStatement() {
218            if (createDurableSubStatement == null) {
219                createDurableSubStatement = "INSERT INTO "
220                                            + getFullAckTableName()
221                                            + "(CONTAINER, CLIENT_ID, SUB_NAME, SELECTOR, LAST_ACKED_ID, SUB_DEST, PRIORITY) "
222                                            + "VALUES (?, ?, ?, ?, ?, ?, ?)";
223            }
224            return createDurableSubStatement;
225        }
226    
227        public String getFindDurableSubStatement() {
228            if (findDurableSubStatement == null) {
229                findDurableSubStatement = "SELECT SELECTOR, SUB_DEST " + "FROM " + getFullAckTableName()
230                                          + " WHERE CONTAINER=? AND CLIENT_ID=? AND SUB_NAME=?";
231            }
232            return findDurableSubStatement;
233        }
234    
235        public String getFindAllDurableSubsStatement() {
236            if (findAllDurableSubsStatement == null) {
237                findAllDurableSubsStatement = "SELECT SELECTOR, SUB_NAME, CLIENT_ID, SUB_DEST" + " FROM "
238                                              + getFullAckTableName() + " WHERE CONTAINER=? AND PRIORITY=0";
239            }
240            return findAllDurableSubsStatement;
241        }
242    
243        public String getUpdateLastPriorityAckRowOfDurableSubStatement() {
244            if (updateLastPriorityAckRowOfDurableSubStatement == null) {
245                updateLastPriorityAckRowOfDurableSubStatement = "UPDATE " + getFullAckTableName() + " SET LAST_ACKED_ID=?"
246                                                     + " WHERE CONTAINER=? AND CLIENT_ID=? AND SUB_NAME=? AND PRIORITY=?";
247            }
248            return updateLastPriorityAckRowOfDurableSubStatement;
249        }
250    
251        public String getDeleteSubscriptionStatement() {
252            if (deleteSubscriptionStatement == null) {
253                deleteSubscriptionStatement = "DELETE FROM " + getFullAckTableName()
254                                              + " WHERE CONTAINER=? AND CLIENT_ID=? AND SUB_NAME=?";
255            }
256            return deleteSubscriptionStatement;
257        }
258    
259        public String getFindAllDurableSubMessagesStatement() {
260            if (findAllDurableSubMessagesStatement == null) {
261                findAllDurableSubMessagesStatement = "SELECT M.ID, M.MSG FROM " + getFullMessageTableName()
262                                                     + " M, " + getFullAckTableName() + " D "
263                                                     + " WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
264                                                     + " AND M.CONTAINER=D.CONTAINER AND M.ID > D.LAST_ACKED_ID"
265                                                     + " ORDER BY M.PRIORITY DESC, M.ID";
266            }
267            return findAllDurableSubMessagesStatement;
268        }
269    
270        public String getFindDurableSubMessagesStatement() {
271            if (findDurableSubMessagesStatement == null) {
272                findDurableSubMessagesStatement = "SELECT M.ID, M.MSG FROM " + getFullMessageTableName() + " M, "
273                                                  + getFullAckTableName() + " D "
274                                                  + " WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
275                                                  + " AND M.CONTAINER=D.CONTAINER AND M.ID > D.LAST_ACKED_ID"
276                                                  + " AND M.ID > ?"
277                                                  + " ORDER BY M.ID";
278            }
279            return findDurableSubMessagesStatement;
280        }
281        
282        public String getFindDurableSubMessagesByPriorityStatement() {
283            if (findDurableSubMessagesByPriorityStatement == null) {
284                findDurableSubMessagesByPriorityStatement = "SELECT M.ID, M.MSG FROM " + getFullMessageTableName() + " M,"
285                                                  + " " + getFullAckTableName() + " D"
286                                                  + " WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
287                                                  + " AND M.CONTAINER=D.CONTAINER"
288                                                  + " AND M.PRIORITY=D.PRIORITY AND M.ID > D.LAST_ACKED_ID"
289                                                  + " AND M.ID > ? AND M.PRIORITY = ?"
290                                                  + " ORDER BY M.ID";
291            }
292            return findDurableSubMessagesByPriorityStatement;
293        }    
294    
295        public String findAllDurableSubMessagesStatement() {
296            if (findAllDurableSubMessagesStatement == null) {
297                findAllDurableSubMessagesStatement = "SELECT M.ID, M.MSG FROM " + getFullMessageTableName()
298                                                     + " M, " + getFullAckTableName() + " D "
299                                                     + " WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
300                                                     + " AND M.CONTAINER=D.CONTAINER AND M.ID > D.LAST_ACKED_ID"
301                                                     + " ORDER BY M.ID";
302            }
303            return findAllDurableSubMessagesStatement;
304        }
305    
306        public String getNextDurableSubscriberMessageStatement() {
307            if (nextDurableSubscriberMessageStatement == null) {
308                nextDurableSubscriberMessageStatement = "SELECT M.ID, M.MSG FROM "
309                                                        + getFullMessageTableName()
310                                                        + " M, "
311                                                        + getFullAckTableName()
312                                                        + " D "
313                                                        + " WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
314                                                        + " AND M.CONTAINER=D.CONTAINER AND M.ID > ?"
315                                                        + " ORDER BY M.ID ";
316            }
317            return nextDurableSubscriberMessageStatement;
318        }
319    
320        /**
321         * @return the durableSubscriberMessageCountStatement
322         */
323    
324        public String getDurableSubscriberMessageCountStatement() {
325            if (durableSubscriberMessageCountStatement == null) {
326                durableSubscriberMessageCountStatement = "SELECT COUNT(*) FROM "
327                                                         + getFullMessageTableName()
328                                                         + " M, "
329                                                         + getFullAckTableName()
330                                                         + " D "
331                                                         + " WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
332                                                         + " AND M.CONTAINER=D.CONTAINER "
333                                                         + "     AND M.ID >"
334                                                         + "          ( SELECT LAST_ACKED_ID FROM " + getFullAckTableName()
335                                                         + "           WHERE CONTAINER=D.CONTAINER AND CLIENT_ID=D.CLIENT_ID"
336                                                         + "           AND SUB_NAME=D.SUB_NAME )";
337    
338            }
339            return durableSubscriberMessageCountStatement;
340        }
341    
342        public String getDurableSubscriberMessageCountStatementWithPriority() {
343            if (durableSubscriberMessageCountStatementWithPriority == null) {
344                durableSubscriberMessageCountStatementWithPriority = "SELECT COUNT(*) FROM "
345                                                         + getFullMessageTableName()
346                                                         + " M, "
347                                                         + getFullAckTableName()
348                                                         + " D "
349                                                         + " WHERE D.CONTAINER=? AND D.CLIENT_ID=? AND D.SUB_NAME=?"
350                                                         + " AND M.CONTAINER=D.CONTAINER "
351                                                         + " AND M.PRIORITY=D.PRIORITY "
352                                                         + " AND M.ID > D.LAST_ACKED_ID";
353            }
354    
355            return durableSubscriberMessageCountStatementWithPriority;
356        }
357    
358        public String getFindAllDestinationsStatement() {
359            if (findAllDestinationsStatement == null) {
360                findAllDestinationsStatement = "SELECT DISTINCT CONTAINER FROM " + getFullAckTableName();
361            }
362            return findAllDestinationsStatement;
363        }
364    
365        public String getRemoveAllMessagesStatement() {
366            if (removeAllMessagesStatement == null) {
367                removeAllMessagesStatement = "DELETE FROM " + getFullMessageTableName() + " WHERE CONTAINER=?";
368            }
369            return removeAllMessagesStatement;
370        }
371    
372        public String getRemoveAllSubscriptionsStatement() {
373            if (removeAllSubscriptionsStatement == null) {
374                removeAllSubscriptionsStatement = "DELETE FROM " + getFullAckTableName() + " WHERE CONTAINER=?";
375            }
376            return removeAllSubscriptionsStatement;
377        }
378    
379        public String getDeleteOldMessagesStatementWithPriority() {
380            if (deleteOldMessagesStatementWithPriority == null) {
381                deleteOldMessagesStatementWithPriority = "DELETE FROM " + getFullMessageTableName()
382                                             + " WHERE ( EXPIRATION<>0 AND EXPIRATION<?)"
383                                             + " OR (ID <= "
384                                             + "     ( SELECT min(" + getFullAckTableName() + ".LAST_ACKED_ID)"
385                                             + "       FROM " + getFullAckTableName() + " WHERE "
386                                             +          getFullAckTableName() + ".CONTAINER="
387                                             +          getFullMessageTableName() + ".CONTAINER"
388                                             + "        AND " + getFullAckTableName() + ".PRIORITY=" + getFullMessageTableName() + ".PRIORITY )"
389                                             + "   )";
390            }
391            return deleteOldMessagesStatementWithPriority;
392        }
393    
394        public String getDeleteOldMessagesStatement() {
395            if (deleteOldMessagesStatement == null) {
396                deleteOldMessagesStatement = "DELETE FROM " + getFullMessageTableName()
397                                             + " WHERE ( EXPIRATION<>0 AND EXPIRATION<?)"
398                                             + " OR (ID <= "
399                                             + "     ( SELECT min(" + getFullAckTableName() + ".LAST_ACKED_ID)"
400                                             + "       FROM " + getFullAckTableName() + " WHERE "
401                                             +          getFullAckTableName() + ".CONTAINER="
402                                             +          getFullMessageTableName() + ".CONTAINER )"
403                                             + "   )";
404    
405            }
406            return deleteOldMessagesStatement;
407        }
408    
409    
410        public String getLockCreateStatement() {
411            if (lockCreateStatement == null) {
412                lockCreateStatement = "SELECT * FROM " + getFullLockTableName();
413                if (useLockCreateWhereClause) {
414                    lockCreateStatement += " WHERE ID = 1";
415                }
416                lockCreateStatement += " FOR UPDATE";
417            }
418            return lockCreateStatement;
419        }
420    
421        public String getLockUpdateStatement() {
422            if (lockUpdateStatement == null) {
423                lockUpdateStatement = "UPDATE " + getFullLockTableName() + " SET TIME = ? WHERE ID = 1";
424            }
425            return lockUpdateStatement;
426        }
427    
428        /**
429         * @return the destinationMessageCountStatement
430         */
431        public String getDestinationMessageCountStatement() {
432            if (destinationMessageCountStatement == null) {
433                destinationMessageCountStatement = "SELECT COUNT(*) FROM " + getFullMessageTableName()
434                                                   + " WHERE CONTAINER=?";
435            }
436            return destinationMessageCountStatement;
437        }
438    
439        /**
440         * @return the findNextMessagesStatement
441         */
442        public String getFindNextMessagesStatement() {
443            if (findNextMessagesStatement == null) {
444                findNextMessagesStatement = "SELECT ID, MSG FROM " + getFullMessageTableName()
445                                            + " WHERE CONTAINER=? AND ID > ? ORDER BY ID";
446            }
447            return findNextMessagesStatement;
448        }
449    
450        /**
451         * @return the findNextMessagesStatement
452         */
453        public String getFindNextMessagesByPriorityStatement() {
454            if (findNextMessagesByPriorityStatement == null) {
455                findNextMessagesByPriorityStatement = "SELECT ID, MSG FROM " + getFullMessageTableName()
456                                            + " WHERE CONTAINER=?"
457                                            + " AND ((ID > ? AND PRIORITY = ?) OR PRIORITY < ?)"
458                                            + " ORDER BY PRIORITY DESC, ID";
459            }
460            return findNextMessagesByPriorityStatement;
461        }    
462        
463        /**
464         * @return the lastAckedDurableSubscriberMessageStatement
465         */
466        public String getLastAckedDurableSubscriberMessageStatement() {
467            if (lastAckedDurableSubscriberMessageStatement == null) {
468                lastAckedDurableSubscriberMessageStatement = "SELECT MAX(LAST_ACKED_ID) FROM "
469                                                             + getFullAckTableName()
470                                                             + " WHERE CONTAINER=? AND CLIENT_ID=? AND SUB_NAME=?";                                                    
471            }
472            return lastAckedDurableSubscriberMessageStatement;
473        }
474    
475        public String getSelectDurablePriorityAckStatement() {
476            if (selectDurablePriorityAckStatement == null) {
477                selectDurablePriorityAckStatement = "SELECT LAST_ACKED_ID FROM " + getFullAckTableName()
478                                                        + " WHERE CONTAINER=? AND CLIENT_ID=? AND SUB_NAME=?"
479                                                        + " AND PRIORITY = ?";
480            }
481            return selectDurablePriorityAckStatement;
482        }
483    
484        public String getInsertDurablePriorityAckStatement() {
485            if (insertDurablePriorityAckStatement == null) {
486                insertDurablePriorityAckStatement = "INSERT INTO "
487                                      + getFullAckTableName()
488                                      + "(CONTAINER, CLIENT_ID, SUB_NAME, PRIORITY)"
489                                      + " VALUES (?, ?, ?, ?)";            
490           }
491            return insertDurablePriorityAckStatement;
492        }
493    
494    
495        public String getUpdateDurableLastAckStatement() {
496            if (updateDurableLastAckStatement == null) {
497                updateDurableLastAckStatement  = "UPDATE " + getFullAckTableName()
498                        + " SET LAST_ACKED_ID = ? WHERE CONTAINER=? AND CLIENT_ID=? AND SUB_NAME=?";
499            }
500            return  updateDurableLastAckStatement;
501        }
502    
503        public String getFullMessageTableName() {
504            return getTablePrefix() + getMessageTableName();
505        }
506    
507        public String getFullAckTableName() {
508            return getTablePrefix() + getDurableSubAcksTableName();
509        }
510    
511        public String getFullLockTableName() {
512            return getTablePrefix() + getLockTableName();
513        }
514    
515        /**
516         * @return Returns the containerNameDataType.
517         */
518        public String getContainerNameDataType() {
519            return containerNameDataType;
520        }
521    
522        /**
523         * @param containerNameDataType The containerNameDataType to set.
524         */
525        public void setContainerNameDataType(String containerNameDataType) {
526            this.containerNameDataType = containerNameDataType;
527        }
528    
529        /**
530         * @return Returns the messageDataType.
531         */
532        public String getBinaryDataType() {
533            return binaryDataType;
534        }
535    
536        /**
537         * @param messageDataType The messageDataType to set.
538         */
539        public void setBinaryDataType(String messageDataType) {
540            this.binaryDataType = messageDataType;
541        }
542    
543        /**
544         * @return Returns the messageTableName.
545         */
546        public String getMessageTableName() {
547            return messageTableName;
548        }
549    
550        /**
551         * @param messageTableName The messageTableName to set.
552         */
553        public void setMessageTableName(String messageTableName) {
554            this.messageTableName = messageTableName;
555        }
556    
557        /**
558         * @return Returns the msgIdDataType.
559         */
560        public String getMsgIdDataType() {
561            return msgIdDataType;
562        }
563    
564        /**
565         * @param msgIdDataType The msgIdDataType to set.
566         */
567        public void setMsgIdDataType(String msgIdDataType) {
568            this.msgIdDataType = msgIdDataType;
569        }
570    
571        /**
572         * @return Returns the sequenceDataType.
573         */
574        public String getSequenceDataType() {
575            return sequenceDataType;
576        }
577    
578        /**
579         * @param sequenceDataType The sequenceDataType to set.
580         */
581        public void setSequenceDataType(String sequenceDataType) {
582            this.sequenceDataType = sequenceDataType;
583        }
584    
585        /**
586         * @return Returns the tablePrefix.
587         */
588        public String getTablePrefix() {
589            return tablePrefix;
590        }
591    
592        /**
593         * @param tablePrefix The tablePrefix to set.
594         */
595        public void setTablePrefix(String tablePrefix) {
596            this.tablePrefix = tablePrefix;
597        }
598    
599        /**
600         * @return Returns the durableSubAcksTableName.
601         */
602        public String getDurableSubAcksTableName() {
603            return durableSubAcksTableName;
604        }
605    
606        /**
607         * @param durableSubAcksTableName The durableSubAcksTableName to set.
608         */
609        public void setDurableSubAcksTableName(String durableSubAcksTableName) {
610            this.durableSubAcksTableName = durableSubAcksTableName;
611        }
612    
613        public String getLockTableName() {
614            return lockTableName;
615        }
616    
617        public void setLockTableName(String lockTableName) {
618            this.lockTableName = lockTableName;
619        }
620    
621        public String getLongDataType() {
622            return longDataType;
623        }
624    
625        public void setLongDataType(String longDataType) {
626            this.longDataType = longDataType;
627        }
628    
629        public String getStringIdDataType() {
630            return stringIdDataType;
631        }
632    
633        public void setStringIdDataType(String stringIdDataType) {
634            this.stringIdDataType = stringIdDataType;
635        }
636    
637        public void setUseExternalMessageReferences(boolean useExternalMessageReferences) {
638            this.useExternalMessageReferences = useExternalMessageReferences;
639        }
640    
641        public boolean isUseExternalMessageReferences() {
642            return useExternalMessageReferences;
643        }
644    
645        public void setAddMessageStatement(String addMessageStatment) {
646            this.addMessageStatement = addMessageStatment;
647        }
648    
649        public void setCreateDurableSubStatement(String createDurableSubStatment) {
650            this.createDurableSubStatement = createDurableSubStatment;
651        }
652    
653        public void setCreateSchemaStatements(String[] createSchemaStatments) {
654            this.createSchemaStatements = createSchemaStatments;
655        }
656    
657        public void setDeleteOldMessagesStatement(String deleteOldMessagesStatment) {
658            this.deleteOldMessagesStatement = deleteOldMessagesStatment;
659        }
660    
661        public void setDeleteOldMessagesStatementWithPriority(String deleteOldMessagesStatmentWithPriority) {
662            this.deleteOldMessagesStatementWithPriority = deleteOldMessagesStatmentWithPriority;
663        }
664    
665        public void setDeleteSubscriptionStatement(String deleteSubscriptionStatment) {
666            this.deleteSubscriptionStatement = deleteSubscriptionStatment;
667        }
668    
669        public void setDropSchemaStatements(String[] dropSchemaStatments) {
670            this.dropSchemaStatements = dropSchemaStatments;
671        }
672    
673        public void setFindAllDestinationsStatement(String findAllDestinationsStatment) {
674            this.findAllDestinationsStatement = findAllDestinationsStatment;
675        }
676    
677        public void setFindAllDurableSubMessagesStatement(String findAllDurableSubMessagesStatment) {
678            this.findAllDurableSubMessagesStatement = findAllDurableSubMessagesStatment;
679        }
680    
681        public void setFindAllDurableSubsStatement(String findAllDurableSubsStatment) {
682            this.findAllDurableSubsStatement = findAllDurableSubsStatment;
683        }
684    
685        public void setFindAllMessagesStatement(String findAllMessagesStatment) {
686            this.findAllMessagesStatement = findAllMessagesStatment;
687        }
688    
689        public void setFindDurableSubStatement(String findDurableSubStatment) {
690            this.findDurableSubStatement = findDurableSubStatment;
691        }
692    
693        public void setFindLastSequenceIdInAcksStatement(String findLastSequenceIdInAcks) {
694            this.findLastSequenceIdInAcksStatement = findLastSequenceIdInAcks;
695        }
696    
697        public void setFindLastSequenceIdInMsgsStatement(String findLastSequenceIdInMsgs) {
698            this.findLastSequenceIdInMsgsStatement = findLastSequenceIdInMsgs;
699        }
700    
701        public void setFindMessageSequenceIdStatement(String findMessageSequenceIdStatment) {
702            this.findMessageSequenceIdStatement = findMessageSequenceIdStatment;
703        }
704    
705        public void setFindMessageStatement(String findMessageStatment) {
706            this.findMessageStatement = findMessageStatment;
707        }
708        
709        public void setFindMessageByIdStatement(String findMessageByIdStatement) {
710            this.findMessageByIdStatement = findMessageByIdStatement;
711        }
712    
713        public void setRemoveAllMessagesStatement(String removeAllMessagesStatment) {
714            this.removeAllMessagesStatement = removeAllMessagesStatment;
715        }
716    
717        public void setRemoveAllSubscriptionsStatement(String removeAllSubscriptionsStatment) {
718            this.removeAllSubscriptionsStatement = removeAllSubscriptionsStatment;
719        }
720    
721        public void setRemoveMessageStatment(String removeMessageStatement) {
722            this.removeMessageStatement = removeMessageStatement;
723        }
724    
725        public void setUpdateLastPriorityAckRowOfDurableSubStatement(String updateLastPriorityAckRowOfDurableSubStatement) {
726            this.updateLastPriorityAckRowOfDurableSubStatement = updateLastPriorityAckRowOfDurableSubStatement;
727        }
728    
729        public void setUpdateMessageStatement(String updateMessageStatment) {
730            this.updateMessageStatement = updateMessageStatment;
731        }
732    
733        public boolean isUseLockCreateWhereClause() {
734            return useLockCreateWhereClause;
735        }
736    
737        public void setUseLockCreateWhereClause(boolean useLockCreateWhereClause) {
738            this.useLockCreateWhereClause = useLockCreateWhereClause;
739        }
740    
741        public void setLockCreateStatement(String lockCreateStatement) {
742            this.lockCreateStatement = lockCreateStatement;
743        }
744    
745        public void setLockUpdateStatement(String lockUpdateStatement) {
746            this.lockUpdateStatement = lockUpdateStatement;
747        }
748    
749        /**
750         * @param findDurableSubMessagesStatement the
751         *                findDurableSubMessagesStatement to set
752         */
753        public void setFindDurableSubMessagesStatement(String findDurableSubMessagesStatement) {
754            this.findDurableSubMessagesStatement = findDurableSubMessagesStatement;
755        }
756    
757        /**
758         * @param nextDurableSubscriberMessageStatement the nextDurableSubscriberMessageStatement to set
759         */
760        public void setNextDurableSubscriberMessageStatement(String nextDurableSubscriberMessageStatement) {
761            this.nextDurableSubscriberMessageStatement = nextDurableSubscriberMessageStatement;
762        }
763    
764        /**
765         * @param durableSubscriberMessageCountStatement the durableSubscriberMessageCountStatement to set
766         */
767        public void setDurableSubscriberMessageCountStatement(String durableSubscriberMessageCountStatement) {
768            this.durableSubscriberMessageCountStatement = durableSubscriberMessageCountStatement;
769        }
770    
771        public void setDurableSubscriberMessageCountStatementWithPriority(String durableSubscriberMessageCountStatementWithPriority) {
772            this.durableSubscriberMessageCountStatementWithPriority = durableSubscriberMessageCountStatementWithPriority;
773        }
774    
775        /**
776         * @param findNextMessagesStatement the findNextMessagesStatement to set
777         */
778        public void setFindNextMessagesStatement(String findNextMessagesStatement) {
779            this.findNextMessagesStatement = findNextMessagesStatement;
780        }
781    
782        /**
783         * @param destinationMessageCountStatement the destinationMessageCountStatement to set
784         */
785        public void setDestinationMessageCountStatement(String destinationMessageCountStatement) {
786            this.destinationMessageCountStatement = destinationMessageCountStatement;
787        }
788    
789        /**
790         * @param lastAckedDurableSubscriberMessageStatement the lastAckedDurableSubscriberMessageStatement to set
791         */
792        public void setLastAckedDurableSubscriberMessageStatement(
793                                                                  String lastAckedDurableSubscriberMessageStatement) {
794            this.lastAckedDurableSubscriberMessageStatement = lastAckedDurableSubscriberMessageStatement;
795        }
796    
797    
798        public void setLastProducerSequenceIdStatement(String lastProducerSequenceIdStatement) {
799            this.lastProducerSequenceIdStatement = lastProducerSequenceIdStatement;
800        }
801    
802        public void setSelectDurablePriorityAckStatement(String selectDurablePriorityAckStatement) {
803            this.selectDurablePriorityAckStatement = selectDurablePriorityAckStatement;
804        }
805    
806        public void setInsertDurablePriorityAckStatement(String insertDurablePriorityAckStatement) {
807            this.insertDurablePriorityAckStatement = insertDurablePriorityAckStatement;
808        }
809    
810        public void setUpdateDurableLastAckStatement(String updateDurableLastAckStatement) {
811            this.updateDurableLastAckStatement = updateDurableLastAckStatement;
812        }    
813    }