View Javadoc

1   package liquibase.database.core;
2   
3   import java.util.HashSet;
4   import java.util.Set;
5   
6   import liquibase.database.AbstractDatabase;
7   import liquibase.database.DatabaseConnection;
8   import liquibase.exception.DatabaseException;
9   
10  public class MaxDBDatabase extends AbstractDatabase {
11  
12      public static final String PRODUCT_NAME = "SAP DB";
13      protected Set<String> systemTablesAndViews = new HashSet<String>();
14  
15      public MaxDBDatabase() {
16          super();
17          systemTablesAndViews.add("---");
18  
19          systemTablesAndViews.add("ACTIVECONFIGURATION");
20          systemTablesAndViews.add("BACKUPTHREADS");
21          systemTablesAndViews.add("CACHESTATISTICS");
22          systemTablesAndViews.add("CATALOGCACHESTATISTICS");
23          systemTablesAndViews.add("COMMANDCACHESTATISTICS");
24          systemTablesAndViews.add("COMMANDCACHESTATISTICSRESET");
25          systemTablesAndViews.add("COMMANDSTATISTICS");
26          systemTablesAndViews.add("COMMANDSTATISTICSRESET");
27          systemTablesAndViews.add("CONSISTENTVIEWS");
28          systemTablesAndViews.add("DATACACHE");
29          systemTablesAndViews.add("DATASTATISTICS");
30          systemTablesAndViews.add("DATASTATISTICSRESET");
31          systemTablesAndViews.add("DATAVOLUMES");
32          systemTablesAndViews.add("DATASTATISTICSRESET");
33          systemTablesAndViews.add("FILEDIRECTORIES");
34          systemTablesAndViews.add("FILES");
35          systemTablesAndViews.add("HOTSTANDBYCOMPONENT");
36          systemTablesAndViews.add("HOTSTANDBYGROUP");
37          systemTablesAndViews.add("INSTANCE");
38          systemTablesAndViews.add("IOBUFFERCACHES");
39          systemTablesAndViews.add("IOTHREADSTATISTICS");
40          systemTablesAndViews.add("IOTHREADSTATISTICSRESET");
41          systemTablesAndViews.add("INDEXSIZE");
42          systemTablesAndViews.add("INDEXSTORAGEDETAILS");
43          systemTablesAndViews.add("LOGINFORMATION");
44          systemTablesAndViews.add("LOGQUEUESTATISTICS");
45          systemTablesAndViews.add("LOGQUEUESTATISTICSRESET");
46          systemTablesAndViews.add("LOGSTATISTICS");
47          systemTablesAndViews.add("LOGSTATISTICSRESET");
48          systemTablesAndViews.add("LOGVOLUMES");
49          systemTablesAndViews.add("MACHINECONFIGURATION");
50          systemTablesAndViews.add("MACHINEUTILIZATION");
51          systemTablesAndViews.add("MEMORYALLOCATORSTATISTICS");
52          systemTablesAndViews.add("OPTIMIZERINFORMATION");
53          systemTablesAndViews.add("READERWRITERLOCKINFORMATION");
54          systemTablesAndViews.add("READERWRITERLOCKSTATISTICS");
55          systemTablesAndViews.add("READERWRITERLOCKSTATISTICSRESET");
56          systemTablesAndViews.add("READERWRITERLOCKWAITINGTASKS");
57          systemTablesAndViews.add("REGIONINFORMATION");
58          systemTablesAndViews.add("REGIONSTATISTICS");
59          systemTablesAndViews.add("REGIONSTATISTICSRESET");
60          systemTablesAndViews.add("RESTARTINFORMATION");
61          systemTablesAndViews.add("SCHEMASIZE");
62          systemTablesAndViews.add("SERVERTASKS");
63          systemTablesAndViews.add("SESSIONS");
64          systemTablesAndViews.add("SNAPSHOTS");
65          systemTablesAndViews.add("SPINLOCKPOOLSTATISTICS");
66          systemTablesAndViews.add("SPINLOCKPOOLSTATISTICSRESET");
67          systemTablesAndViews.add("SPINLOCKSTATISTICS");
68          systemTablesAndViews.add("SPINLOCKSTATISTICSRESET");
69          systemTablesAndViews.add("TABLESIZE");
70          systemTablesAndViews.add("TABLESTORAGEDETAILS");
71          systemTablesAndViews.add("TASKGROUPSTATISTICS");
72          systemTablesAndViews.add("TASKGROUPSTATISTICSRESET");
73          systemTablesAndViews.add("TASKLOADBALANCINGINFORMATION");
74          systemTablesAndViews.add("TASKLOADBALANCINGTASKGROUPSTATES");
75          systemTablesAndViews.add("TASKLOADBALANCINGTASKMOVES");
76          systemTablesAndViews.add("TRANSACTIONHISTORY");
77          systemTablesAndViews.add("TRANSACTIONS");
78          systemTablesAndViews.add("UNLOADEDSTATEMENTS");
79          systemTablesAndViews.add("VERSION");
80      }
81  
82      @Override
83      public int getPriority() {
84          return PRIORITY_DEFAULT;
85      }
86  
87      @Override
88      public Set<String> getSystemTablesAndViews() {
89          return systemTablesAndViews;
90      }
91  
92      @Override
93      public String getTypeName() {
94          return "maxdb";
95      }
96  
97      @Override
98      public boolean supportsInitiallyDeferrableColumns() {
99          return false;
100     }
101 
102     @Override
103     public boolean supportsSequences() {
104         return true;
105     }
106 
107     @Override
108     public boolean isCorrectDatabaseImplementation(DatabaseConnection conn) throws DatabaseException {
109         return PRODUCT_NAME.equalsIgnoreCase(conn.getDatabaseProductName());
110     }
111 
112     @Override
113     public String getDefaultDriver(String url) {
114         if (url.startsWith("jdbc:sapdb")) {
115             return "com.sap.dbtech.jdbc.DriverSapDB";
116         }
117         return null;
118     }
119 
120     @Override
121     public String getCurrentDateTimeFunction() {
122         if (currentDateTimeFunction != null) {
123             return currentDateTimeFunction;
124         }
125 
126         return "TIMESTAMP";
127     }
128 
129     @Override
130     protected String getDefaultDatabaseSchemaName() throws DatabaseException { // NOPMD
131         return super.getDefaultDatabaseSchemaName().toUpperCase();
132     }
133 
134     @Override
135     public boolean isSystemTable(String catalogName, String schemaName, String tableName) {
136         if (super.isSystemTable(catalogName, schemaName, tableName)) {
137             return true;
138         } else if ("DOMAIN".equalsIgnoreCase(schemaName)) {
139             return true;
140         } else if ("SYSINFO".equalsIgnoreCase(schemaName)) {
141             return true;
142         } else if ("SYSLOADER".equalsIgnoreCase(schemaName)) {
143             return true;
144         } else if ("SYSDBA".equalsIgnoreCase(schemaName)) {
145             return true;
146         }
147         return false;
148     }
149 
150     @Override
151     public boolean isSystemView(String catalogName, String schemaName, String tableName) {
152         if (super.isSystemView(catalogName, schemaName, tableName)) {
153             return true;
154         } else if ("DOMAIN".equalsIgnoreCase(schemaName)) {
155             return true;
156         } else if ("SYSINFO".equalsIgnoreCase(schemaName)) {
157             return true;
158         } else if ("SYSLOADER".equalsIgnoreCase(schemaName)) {
159             return true;
160         } else if ("SYSDBA".equalsIgnoreCase(schemaName)) {
161             return true;
162         }
163         return false;
164     }
165 
166     @Override
167     public boolean supportsTablespaces() {
168         return false;
169     }
170 
171     @Override
172     public boolean supportsAutoIncrement() {
173         return false;
174     }
175 }