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[] 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}