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 */
017package org.apache.activemq.store.jdbc;
018
019/**
020 * 
021 * 
022 * @org.apache.xbean.XBean element="statements"
023 * 
024 */
025public 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}