001    package railo.runtime.db;
002    
003    import railo.runtime.PageContext;
004    import railo.runtime.exp.PageException;
005    
006    public interface DataSourceManager {
007    
008            /**
009             * return a database connection matching to datsource name 
010             * @param datasource datasource whished
011             * @param user username to datasource
012             * @param pass password to datasource
013             * @return return a Db Connectio9n Object
014             * @throws PageException 
015             * @deprecated use instead <code>getConnection(PageContext pc,DataSource ds, String user, String pass)</code>
016             */
017            public DatasourceConnection getConnection(PageContext pc,String datasource,
018                            String user, String pass) throws PageException;
019            
020            /**
021             * return a database connection matching to datsource name 
022             * @param ds datasource whished
023             * @param user username to datasource
024             * @param pass password to datasource
025             * @return return a Db Connectio9n Object
026             * @throws PageException 
027             */
028            public DatasourceConnection getConnection(PageContext pc,DataSource ds, String user, String pass) throws PageException;
029            
030            
031            public abstract void releaseConnection(PageContext pc,DatasourceConnection dc) throws PageException;
032    
033            /**
034             * set state of transaction to begin
035             */
036            public abstract void begin();
037    
038            /**
039             * set state of transaction to begin
040             * @param isolation isolation level of the transaction
041             */
042            public abstract void begin(String isolation);
043    
044            /**
045             * set state of transaction to begin
046             * @param isolation isolation level of the transaction
047             */
048            public abstract void begin(int isolation);
049    
050            /**
051             * rollback hanging transaction
052             * @throws DatabaseException
053             */
054            public abstract void rollback() throws PageException;
055            
056            public abstract void savepoint() throws PageException;
057    
058            /**
059             * commit hanging transaction
060             * @throws DatabaseException
061             */
062            public abstract void commit() throws PageException;
063    
064            /**
065             * @return return if manager is in autocommit mode or not
066             */
067            public abstract boolean isAutoCommit();
068    
069            /**
070             * ends the manual commit state
071             */
072            public abstract void end();
073    
074            public abstract void remove(String datasource);// FUTURE deprecated
075            //FUTURE public abstract void remove(DataSource datasource);
076    
077            public abstract void release();
078    
079    }