001 package com.sptci.rwt;
002
003 import java.sql.Connection;
004 import java.sql.DatabaseMetaData;
005 import java.sql.SQLException;
006
007 import java.util.ArrayList;
008 import java.util.Collection;
009 import java.util.logging.Level;
010
011 import com.sptci.util.CloseJDBCResources;
012
013 /**
014 * An analyser for analysing sequence type objects in the database.
015 *
016 * <p>© Copyright 2007 <a href='http://sptci.com/' target='_new'>Sans Pareil Technologies, Inc.</a></p>
017 * @author Rakesh Vidyadharan 2007-09-25
018 * @version $Id: SequenceAnalyser.java 4123 2008-05-25 21:49:01Z rakesh $
019 */
020 public class SequenceAnalyser extends Analyser
021 {
022 /**
023 * Create a new instance of the class using the specified connection
024 * manager.
025 *
026 * @param manager The manager for obtaining database connections.
027 */
028 public SequenceAnalyser( final ConnectionManager manager )
029 {
030 super( manager );
031 }
032
033 /**
034 * Returns a collection of {@link SequenceMetaData} objects that contain
035 * all information pertaining to the sequences in the specified schema.
036 *
037 * @see Analyser#analyse
038 * @see AbstractSequenceAnalyser#analyse
039 * @param parameters Must contain the <code>catalog/schema</code> from
040 * which sequence metadata are to be retrieved.
041 */
042 @Override
043 public Collection<SequenceMetaData> analyse( final MetaData... parameters )
044 throws SQLException
045 {
046 Connection connection = null;
047 AbstractSequenceAnalyser analyser = new StandardSequenceAnalyser( manager );
048
049 try
050 {
051 connection = manager.open();
052 final DatabaseMetaData dmd = connection.getMetaData();
053 final String name = dmd.getDatabaseProductName().toLowerCase();
054
055 if ( name.contains( "oracle" ) )
056 {
057 analyser = new OracleSequenceAnalyser( manager );
058 }
059 }
060 finally
061 {
062 CloseJDBCResources.close( connection );
063 }
064
065 return analyser.analyse( parameters );
066 }
067 }