001 /**
002 *
003 * Copyright 2004 Hiram Chirino
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * 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 **/
018 package org.activemq.store.jdbc;
019
020 import java.sql.Connection;
021 import java.sql.SQLException;
022
023 import javax.jms.JMSException;
024 import javax.transaction.xa.XAException;
025
026 import org.activemq.message.ActiveMQXid;
027 import org.activemq.service.SubscriberEntry;
028 import org.activemq.store.TransactionStore.RecoveryListener;
029 import org.activemq.util.LongSequenceGenerator;
030
031 /**
032 * @version $Revision: 1.1 $
033 */
034 public interface JDBCAdapter {
035
036 public interface MessageListResultHandler {
037 public void onMessage(long seq, String messageID) throws JMSException;
038 }
039
040 public abstract LongSequenceGenerator getSequenceGenerator();
041 public abstract void doCreateTables(Connection c) throws SQLException;
042 public abstract void doDropTables(Connection c) throws SQLException;
043 public abstract void initSequenceGenerator(Connection c);
044 public abstract void doAddMessage(Connection c, long seq, String messageID,
045 String destinationName, byte[] data, long expiration) throws SQLException,
046 JMSException;
047 public abstract byte[] doGetMessage(Connection c, long seq)
048 throws SQLException;
049 public abstract void doRemoveMessage(Connection c, long seq)
050 throws SQLException;
051 public abstract void doRecover(Connection c, String destinationName, MessageListResultHandler listener)
052 throws SQLException, JMSException;
053 public abstract void doRemoveXid(Connection c, ActiveMQXid xid)
054 throws SQLException, XAException;
055 public abstract void doAddXid(Connection c, ActiveMQXid xid)
056 throws SQLException, XAException;
057 public abstract void doLoadPreparedTransactions(Connection c,
058 RecoveryListener listener) throws SQLException;
059 public abstract void doSetLastAck(Connection c, String destinationName, String sub, long seq)
060 throws SQLException, JMSException;
061 public abstract void doRecoverSubscription(Connection c, String destinationName, String sub, MessageListResultHandler listener)
062 throws SQLException, JMSException;
063 public abstract void doSetSubscriberEntry(Connection c, String destinationName, String sub, SubscriberEntry subscriberEntry)
064 throws SQLException, JMSException;
065 public abstract SubscriberEntry doGetSubscriberEntry(Connection c, String destinationName, String sub)
066 throws SQLException, JMSException;
067 public abstract Long getMessageSequenceId(Connection c, String messageID)
068 throws SQLException, JMSException;
069 public abstract void doRemoveAllMessages(Connection c, String destinationName)
070 throws SQLException, JMSException;
071 public abstract void doDeleteSubscription(Connection c, String destinationName, String subscription)
072 throws SQLException, JMSException;
073 public abstract void doDeleteOldMessages(Connection c)
074 throws SQLException, JMSException;
075 }