/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.aplikator.server.persistence.empiredb.oracle;
// java
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.oracle.DBDatabaseDriverOracle;
/**
* Represents the data model of the system tables. They are required to parse
* the data models.
* <p/>
*/
public class EmpireSYSDatabaseOracle extends DBDatabase {
// Table for all columns of a schema with their comments
public static class DBColComments extends DBTable {
private final static long serialVersionUID = 1L;
public DBTableColumn C_OWNER;
public DBTableColumn C_TABLE_NAME;
public DBTableColumn C_COLUMN_NAME;
public DBTableColumn C_COMMENTS;
// Constructor
public DBColComments(DBDatabase db) {
super("ALL_COL_COMMENTS", db);
// add all Colums
C_OWNER = addColumn("OWNER", DataType.TEXT, 50, false);
C_TABLE_NAME = addColumn("TABLE_NAME", DataType.TEXT, 50, false);
C_COLUMN_NAME = addColumn("COLUMN_NAME", DataType.TEXT, 50, false);
C_COMMENTS = addColumn("COMMENTS", DataType.TEXT, 500, false);
}
}
// Table for all columns of a schema with their comments
public static class DBColInfo extends DBTable {
private final static long serialVersionUID = 1L;
public DBTableColumn C_OWNER;
public DBTableColumn C_TABLE_NAME;
public DBTableColumn C_COLUMN_NAME;
public DBTableColumn C_DATA_TYPE;
public DBTableColumn C_DATA_TYPE_MOD;
public DBTableColumn C_DATA_TYPE_OWNER;
public DBTableColumn C_NULLABLE;
public DBTableColumn C_DATA_LENGTH;
public DBTableColumn C_DATA_PRECISION;
public DBTableColumn C_DATA_SCALE;
public DBTableColumn C_CHAR_LENGTH;
// Constructor
public DBColInfo(DBDatabase db) {
super("ALL_TAB_COLUMNS", db);
// add all Colums
C_OWNER = addColumn("OWNER", DataType.TEXT, 30, false);
C_TABLE_NAME = addColumn("TABLE_NAME", DataType.TEXT, 30, false);
C_COLUMN_NAME = addColumn("COLUMN_NAME", DataType.TEXT, 30, false);
C_DATA_TYPE = addColumn("DATA_TYPE", DataType.TEXT, 50, false);
C_DATA_TYPE_MOD = addColumn("DATA_TYPE_MOD", DataType.TEXT, 50,
false);
C_DATA_TYPE_OWNER = addColumn("DATA_TYPE_OWNER", DataType.TEXT, 50,
false);
C_NULLABLE = addColumn("NULLABLE", DataType.TEXT, 1, false);
C_DATA_LENGTH = addColumn("DATA_LENGTH", DataType.DECIMAL, 0, false);
C_DATA_PRECISION = addColumn("DATA_PRECISION", DataType.DECIMAL, 0,
false);
C_DATA_SCALE = addColumn("DATA_SCALE", DataType.DECIMAL, 0, false);
C_CHAR_LENGTH = addColumn("CHAR_LENGTH", DataType.DECIMAL, 0, false);
}
}
// Table for all constraints
public static class DBConstraints extends DBTable {
private final static long serialVersionUID = 1L;
public DBTableColumn C_CONSTRAINT_NAME;
public DBTableColumn C_TABLE_NAME;
public DBTableColumn C_R_CONSTRAINT_NAME;
public DBTableColumn C_CONSTRAINT_TYPE;
public DBTableColumn C_STATUS;
// Constructor
public DBConstraints(DBDatabase db) {
super("USER_CONSTRAINTS", db);
// add all Colums
C_CONSTRAINT_NAME = addColumn("CONSTRAINT_NAME", DataType.TEXT,
100, false);
C_TABLE_NAME = addColumn("TABLE_NAME", DataType.TEXT, 100, false);
C_R_CONSTRAINT_NAME = addColumn("R_CONSTRAINT_NAME", DataType.TEXT,
100, false);
C_CONSTRAINT_TYPE = addColumn("CONSTRAINT_TYPE", DataType.TEXT, 1,
false);
C_STATUS = addColumn("STATUS", DataType.TEXT, 20, false);
}
}
// Table for all tables of a schema with their comments
public static class DBTabComments extends DBTable {
private static final long serialVersionUID = 1L;
public DBTableColumn C_OWNER;
public DBTableColumn C_TABLE_NAME;
public DBTableColumn C_TABLE_TYPE;
public DBTableColumn C_COMMENTS;
// Constructor
public DBTabComments(DBDatabase db) {
super("ALL_TAB_COMMENTS", db);
// add all Colums
C_OWNER = addColumn("OWNER", DataType.TEXT, 50, false);
C_TABLE_NAME = addColumn("TABLE_NAME", DataType.TEXT, 50, false);
C_TABLE_TYPE = addColumn("TABLE_TYPE", DataType.TEXT, 50, false);
C_COMMENTS = addColumn("COMMENTS", DataType.TEXT, 500, false);
}
}
public static class DBTabSequences extends DBTable {
private static final long serialVersionUID = 1L;
public DBTableColumn C_SEQUENCE_NAME;
public DBTabSequences(DBDatabase db) {
super("USER_SEQUENCES", db);
C_SEQUENCE_NAME = addColumn("SEQUENCE_NAME", DataType.TEXT, 50,
true);
}
}
//Table for Indexes
public static class DBTabIndexes extends DBTable {
private static final long serialVersionUID = 1L;
public DBTableColumn C_INDEX_NAME;
public DBTableColumn C_TABLE_NAME;
public DBTableColumn C_INDEX_TYPE;
public DBTableColumn C_UNIQUENESS;
public DBTabIndexes(DBDatabase db) {
super("USER_INDEXES", db);
C_INDEX_NAME = addColumn("INDEX_NAME", DataType.TEXT, 100, false);
C_TABLE_NAME = addColumn("TABLE_NAME", DataType.TEXT, 100, false);
C_INDEX_TYPE = addColumn("INDEX_TYPE", DataType.TEXT, 100, false);
C_UNIQUENESS = addColumn("UNIQUENESS", DataType.TEXT, 100, false);
setPrimaryKey(C_INDEX_NAME);
}
}
//Table for Index columns
public static class DBIndexesCols extends DBTable {
private static final long serialVersionUID = 1L;
public DBTableColumn C_INDEX_NAME;
public DBTableColumn C_TABLE_NAME;
public DBTableColumn C_COLUMN_NAME;
public DBTableColumn C_COLUMN_POSITION;
public DBTableColumn C_COLUMN_LENGTH;
public DBTableColumn C_CHAR_LENGTH;
public DBTableColumn C_DESCEND;
public DBIndexesCols(DBDatabase db) {
super("USER_IND_COLUMNS", db);
C_INDEX_NAME = addColumn("INDEX_NAME", DataType.TEXT, 100, false);
C_TABLE_NAME = addColumn("TABLE_NAME", DataType.TEXT, 100, false);
C_COLUMN_NAME = addColumn("COLUMN_NAME", DataType.TEXT, 100, false);
C_COLUMN_POSITION = addColumn("COLUMN_POSITION", DataType.DECIMAL, 10, false);
C_COLUMN_LENGTH = addColumn("COLUMN_LENGTH", DataType.DECIMAL, 10, false);
C_CHAR_LENGTH = addColumn("CHAR_LENGTH", DataType.DECIMAL, 10, false);
C_DESCEND = addColumn("DESCEND", DataType.TEXT, 4, false);
setPrimaryKey(C_INDEX_NAME, C_COLUMN_NAME);
}
}
// Table for Columns and Tables a constraint is associated to
public static class DBUserConCol extends DBTable {
private final static long serialVersionUID = 1L;
public DBTableColumn C_CONSTRAINT_NAME;
public DBTableColumn C_TABLE_NAME;
public DBTableColumn C_COLUMN_NAME;
public DBTableColumn C_OWNER;
public DBTableColumn C_POSITION;
// Constructor
public DBUserConCol(DBDatabase db) {
super("USER_CONS_COLUMNS", db);
// add all Colums
C_CONSTRAINT_NAME = addColumn("CONSTRAINT_NAME", DataType.TEXT,
100, false);
C_TABLE_NAME = addColumn("TABLE_NAME", DataType.TEXT, 100, false);
C_COLUMN_NAME = addColumn("COLUMN_NAME", DataType.TEXT, 100, false);
C_OWNER = addColumn("OWNER", DataType.TEXT, 100, false);
C_POSITION = addColumn("POSITION", DataType.INTEGER, 5, false);
setPrimaryKey(C_CONSTRAINT_NAME);
}
}
private final static long serialVersionUID = 1L;
public DBTabComments TC = null;
public DBColInfo CI = null;
public DBColComments CC = null;
public DBConstraints CO = null;
public DBUserConCol UC = null;
public DBTabSequences SQ = null;
public DBTabIndexes IX = null;
public DBIndexesCols IC = null;
public EmpireSYSDatabaseOracle(DBDatabaseDriverOracle driver) {
// System schema
super("SYS");
// Set Driver (do not use open(...)!)
this.driver = driver;
// Add Tables
TC = new DBTabComments(this);
CI = new DBColInfo(this);
CC = new DBColComments(this);
CO = new DBConstraints(this);
UC = new DBUserConCol(this);
SQ = new DBTabSequences(this);
IX = new DBTabIndexes(this);
IC = new DBIndexesCols(this);
}
}