View Javadoc

    1   /***
    2    *
    3    * Copyright 2004 Hiram Chirino
    4    *
    5    * Licensed under the Apache License, Version 2.0 (the "License");
    6    * you may not use this file except in compliance with the License.
    7    * You may obtain a copy of the License at
    8    *
    9    * http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   **/
    18  package org.codehaus.activemq.store.jdbc.adapter;
    19
    20  import org.codehaus.activemq.store.jdbc.StatementProvider;
    21
    22
    23  /***
    24   * @version $Revision: 1.2 $
    25   */
    26  public class DefaultStatementProvider implements StatementProvider {
    27
    28      protected String tablePrefix = "";
    29      protected String messageTableName = "ACTIVEMQ_MSGS";
    30      protected String txTableName = "ACTIVEMQ_TXS";
    31      protected String durableSubAcksTableName = "ACTIVEMQ_ACKS";
    32
    33      protected String binaryDataType = "BLOB";
    34      protected String containerNameDataType = "VARCHAR(250)";
    35      protected String xidDataType = "VARCHAR(250)";
    36      protected String msgIdDataType = "VARCHAR(250)";
    37      protected String subscriptionIdDataType = "VARCHAR(250)";
    38      protected String sequenceDataType = "INTEGER";
    39      protected String stringIdDataType = "VARCHAR(250)";
    40
    41
    42
    43      public String [] getCreateSchemaStatments() {
    44          return new String[]{
    45              "CREATE TABLE "+tablePrefix+messageTableName+"("
    46              			   +"ID "+sequenceDataType
    47              			   +", CONTAINER "+containerNameDataType
    48              			   +", MSGID "+msgIdDataType
    49              			   +", MSG "+binaryDataType
    50              			   +")",
    51              "CREATE TABLE "+tablePrefix+txTableName+"("
    52              			   +"XID "+xidDataType
    53              			   +", TX "+binaryDataType
    54              			   +")",
    55              "CREATE TABLE "+tablePrefix+durableSubAcksTableName+"("
    56                             +"SUB "+subscriptionIdDataType
    57                             +", CONTAINER "+containerNameDataType
    58                             +", LAST_ACKED_ID "+sequenceDataType
    59              			   +", SE_ID INTEGER"
    60              			   +", SE_CLIENT_ID "+stringIdDataType
    61              			   +", SE_CONSUMER_NAME "+stringIdDataType
    62              			   +", SE_SELECTOR "+stringIdDataType
    63              			   +")",
    64          };
    65      }
    66      private int subscriberID;
    67      private String clientID;
    68      private String consumerName;
    69      private String destination;
    70      private String selector;
    71
    72      public String [] getDropSchemaStatments() {
    73          return new String[]{
    74              "DROP TABLE "+tablePrefix+durableSubAcksTableName+"",
    75              "DROP TABLE "+tablePrefix+messageTableName+"",
    76              "DROP TABLE "+tablePrefix+txTableName+""
    77          };
    78      }
    79
    80      public String getAddMessageStatment() {
    81          return "INSERT INTO "+tablePrefix+messageTableName+"(ID, CONTAINER, MSGID, MSG) VALUES (?, ?, ?, ?)";
    82      }
    83      public String getUpdateMessageStatment() {
    84          return "UPDATE "+tablePrefix+messageTableName+" SET MSG=? WHERE ID=?";
    85      }
    86      public String getRemoveMessageStatment() {
    87          return "DELETE FROM "+tablePrefix+messageTableName+" WHERE ID=?";
    88      }
    89      public String getFindMessageStatment() {
    90          return "SELECT MSG FROM "+tablePrefix+messageTableName+" WHERE ID=?";
    91      }
    92      public String getFindAllMessagesStatment() {
    93          return "SELECT ID, MSGID FROM "+tablePrefix+messageTableName+" WHERE CONTAINER=? ORDER BY ID";
    94      }
    95      public String getFindLastSequenceId() {
    96          return "SELECT MAX(ID) FROM "+tablePrefix+messageTableName+"";
    97      }
    98
    99      public String getAddXidStatment() {
    100         return "INSERT INTO "+tablePrefix+txTableName+"(XID, TX) VALUES (?, ?)";
    101     }
    102     public String getUpdateXidStatment() {
    103         return "UPDATE "+tablePrefix+txTableName+" SET TX=? WHERE XID=?";
    104     }
    105     public String getRemoveXidStatment() {
    106         return "DELETE FROM "+tablePrefix+txTableName+" WHERE XID=?";
    107     }
    108     public String getFindXidStatment() {
    109         return "SELECT TX FROM "+tablePrefix+txTableName+" WHERE XID=?";
    110     }
    111     public String getFindAllXidStatment() {
    112         return "SELECT XID FROM "+tablePrefix+txTableName+"";
    113     }
    114     public String getFindAllTxStatment() {
    115         return "SELECT XID, TX FROM "+tablePrefix+txTableName+"";
    116     }
    117
    118     public String getCreateDurableSubStatment() {
    119         return "INSERT INTO "+tablePrefix+durableSubAcksTableName
    120 				+"(SE_ID, SE_CLIENT_ID, SE_CONSUMER_NAME, SE_SELECTOR, SUB, CONTAINER) VALUES (?, ?, ?, ?, ?, ?)";
    121     }
    122
    123     public String getUpdateDurableSubStatment() {
    124         return "UPDATE "+tablePrefix+durableSubAcksTableName
    125 				+" SET SE_ID=?, SE_CLIENT_ID=?, SE_CONSUMER_NAME=?, SE_SELECTOR? WHERE SUB=? AND CONTAINER=?";
    126     }
    127
    128     public String getFindDurableSubStatment() {
    129         return "SELECT SE_ID, SE_CLIENT_ID, SE_CONSUMER_NAME, SE_SELECTOR, CONTAINER=? "+tablePrefix+durableSubAcksTableName
    130 				+" WHERE SUB=? AND CONTAINER=?";
    131     }
    132
    133     public String getUpdateLastAckOfDurableSub() {
    134         return "UPDATE "+tablePrefix+durableSubAcksTableName
    135 				+" SET LAST_ACKED_ID=? WHERE SUB=? AND CONTAINER=?";
    136     }
    137
    138     public String getFindAllDurableSubMessagesStatment() {
    139         return "SELECT M.ID, M.MSGID FROM "
    140 		        +tablePrefix+messageTableName+" M, "
    141 			    +tablePrefix+durableSubAcksTableName +" D "
    142 		        +" WHERE D.CONTAINER=? AND D.SUB=? "
    143 				+" AND M.CONTAINER=D.CONTAINER AND M.ID > D.LAST_ACKED_ID"
    144 				+" ORDER BY M.ID";
    145     }
    146
    147     /***
    148      * @return Returns the containerNameDataType.
    149      */
    150     public String getContainerNameDataType() {
    151         return containerNameDataType;
    152     }
    153     /***
    154      * @param containerNameDataType The containerNameDataType to set.
    155      */
    156     public void setContainerNameDataType(String containerNameDataType) {
    157         this.containerNameDataType = containerNameDataType;
    158     }
    159     /***
    160      * @return Returns the messageDataType.
    161      */
    162     public String getBinaryDataType() {
    163         return binaryDataType;
    164     }
    165     /***
    166      * @param messageDataType The messageDataType to set.
    167      */
    168     public void setBinaryDataType(String messageDataType) {
    169         this.binaryDataType = messageDataType;
    170     }
    171     /***
    172      * @return Returns the messageTableName.
    173      */
    174     public String getMessageTableName() {
    175         return messageTableName;
    176     }
    177     /***
    178      * @param messageTableName The messageTableName to set.
    179      */
    180     public void setMessageTableName(String messageTableName) {
    181         this.messageTableName = messageTableName;
    182     }
    183     /***
    184      * @return Returns the msgIdDataType.
    185      */
    186     public String getMsgIdDataType() {
    187         return msgIdDataType;
    188     }
    189     /***
    190      * @param msgIdDataType The msgIdDataType to set.
    191      */
    192     public void setMsgIdDataType(String msgIdDataType) {
    193         this.msgIdDataType = msgIdDataType;
    194     }
    195     /***
    196      * @return Returns the sequenceDataType.
    197      */
    198     public String getSequenceDataType() {
    199         return sequenceDataType;
    200     }
    201     /***
    202      * @param sequenceDataType The sequenceDataType to set.
    203      */
    204     public void setSequenceDataType(String sequenceDataType) {
    205         this.sequenceDataType = sequenceDataType;
    206     }
    207     /***
    208      * @return Returns the tablePrefix.
    209      */
    210     public String getTablePrefix() {
    211         return tablePrefix;
    212     }
    213     /***
    214      * @param tablePrefix The tablePrefix to set.
    215      */
    216     public void setTablePrefix(String tablePrefix) {
    217         this.tablePrefix = tablePrefix;
    218     }
    219     /***
    220      * @return Returns the txTableName.
    221      */
    222     public String getTxTableName() {
    223         return txTableName;
    224     }
    225     /***
    226      * @param txTableName The txTableName to set.
    227      */
    228     public void setTxTableName(String txTableName) {
    229         this.txTableName = txTableName;
    230     }
    231     /***
    232      * @return Returns the xidDataType.
    233      */
    234     public String getXidDataType() {
    235         return xidDataType;
    236     }
    237     /***
    238      * @param xidDataType The xidDataType to set.
    239      */
    240     public void setXidDataType(String xidDataType) {
    241         this.xidDataType = xidDataType;
    242     }
    243     /***
    244      * @return Returns the durableSubAcksTableName.
    245      */
    246     public String getDurableSubAcksTableName() {
    247         return durableSubAcksTableName;
    248     }
    249     /***
    250      * @param durableSubAcksTableName The durableSubAcksTableName to set.
    251      */
    252     public void setDurableSubAcksTableName(String durableSubAcksTableName) {
    253         this.durableSubAcksTableName = durableSubAcksTableName;
    254     }
    255     /***
    256      * @return Returns the subscriptionIdDataType.
    257      */
    258     public String getSubscriptionIdDataType() {
    259         return subscriptionIdDataType;
    260     }
    261     /***
    262      * @param subscriptionIdDataType The subscriptionIdDataType to set.
    263      */
    264     public void setSubscriptionIdDataType(String subscriptionIdDataType) {
    265         this.subscriptionIdDataType = subscriptionIdDataType;
    266     }
    267 }