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