All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.jinahya.sql.database.metadata.bind.Schema Maven / Gradle / Ivy

/*
 * Copyright 2011 Jin Kwon .
 *
 * Licensed 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 com.github.jinahya.sql.database.metadata.bind;


import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.commons.lang3.builder.CompareToBuilder;


/**
 * An entity class for binding the result of
 * {@link java.sql.DatabaseMetaData#getSchemas(java.lang.String, java.lang.String)}.
 *
 * @author Jin Kwon <jinahya_at_gmail.com>
 */
@XmlRootElement
@XmlType(
    propOrder = {
        "tableSchem",
        // ---------------------------------------------------------------------
        "crossReferences",
        "functions", "procedures",
        //"superTables",
        //"superTypes",
        "tables",
        "UDTs",
        // ---------------------------------------------------------------------
        "unknownResults"
    }
)
public class Schema extends AbstractChild
    implements Comparable, TableDomain {


    // by TABLE_CATALOG and TABLE_SCHEM.
    @Override
    public int compareTo(final Schema o) {

        return new CompareToBuilder()
            .append(tableCatalog, o.getTableCatalog())
            .append(tableSchem, o.getTableSchem())
            .build();
    }


    @Override
    public List getCrossReferences() {
        return crossReferences;
    }


    @Override
    public void setCrossReferences(List crossReferences) {
        this.crossReferences = crossReferences;
    }


    @Override
    public String toString() {

        return super.toString() + "{"
               + "tableCatalog=" + tableCatalog
               + ", tableSchem=" + tableSchem
               + "}";
    }


    // ------------------------------------------------------------ tableCatalog
    public String getTableCatalog() {

        return tableCatalog;
    }


    public void setTableCatalog(final String tableCatalog) {

        this.tableCatalog = tableCatalog;
    }


    Schema tableCatalog(final String tableCatalog) {

        setTableCatalog(tableCatalog);

        return this;
    }


    // -------------------------------------------------------------- tableSchem
    public String getTableSchem() {

        return tableSchem;
    }


    public void setTableSchem(final String tableSchem) {

        this.tableSchem = tableSchem;
    }


    Schema tableSchem(final String tableSchem) {

        setTableSchem(tableSchem);

        return this;
    }


    // ----------------------------------------------------------------- catalog
    // just for class diagram
    private Catalog getCatalog() {

        return getParent();
    }


//    public void setCatalog(final Catalog catalog) {
//
//        setParent(catalog);
//    }
    // --------------------------------------------------------------- functions
    public List getFunctions() {

        if (functions == null) {
            functions = new ArrayList();
        }

        return functions;
    }


    public void setFunctions(List functions) {
        this.functions = functions;
    }


    // -------------------------------------------------------------- procedures
    public List getProcedures() {

        if (procedures == null) {
            procedures = new ArrayList();
        }

        return procedures;
    }


    public void setProcedures(List procedures) {
        this.procedures = procedures;
    }


//    // ------------------------------------------------------------- superTables
//    public List getSuperTables() {
//
//        if (superTables == null) {
//            superTables = new ArrayList();
//        }
//
//        return superTables;
//    }
//    // -------------------------------------------------------------- superTypes
//    public List getSuperTypes() {
//
//        if (superTypes == null) {
//            superTypes = new ArrayList();
//        }
//
//        return superTypes;
//    }
    // ------------------------------------------------------------------ tables
    @Override
    public List getTables() {

        if (tables == null) {
            tables = new ArrayList
(); } return tables; } public void setTables(List
tables) { this.tables = tables; } // -------------------------------------------------------------------- UDTs public List getUDTs() { if (UDTs == null) { UDTs = new ArrayList(); } return UDTs; } public void setUDTs(List UDTs) { this.UDTs = UDTs; } // ------------------------------------------------------------------------- @Label("TABLE_CATALOG") @NillableBySpecification @XmlAttribute private String tableCatalog; @Label("TABLE_SCHEM") @XmlElement(required = true) private String tableSchem; @XmlElementRef private List crossReferences; @Invocation( name = "getFunctions", types = {String.class, String.class, String.class}, argsarr = { @InvocationArgs({":tableCatalog", ":tableSchem", "null"}) } ) @XmlElementRef private List functions; @Invocation( name = "getProcedures", types = {String.class, String.class, String.class}, argsarr = { @InvocationArgs({":tableCatalog", ":tableSchem", "null"}) } ) @XmlElementRef private List procedures; // @Invocation( // name = "getSuperTables", // types = {String.class, String.class, String.class}, // argsarr = { // @InvocationArgs({":tableCatalog", ":tableSchem", "null"}) // } // ) // @XmlElementRef // private List superTables; // @Invocation( // name = "getSuperTypes", // types = {String.class, String.class, String.class}, // argsarr = { // @InvocationArgs({":tableCatalog", ":tableSchem", "null"}) // } // ) // @XmlElementRef // private List superTypes; @Invocation( name = "getTables", types = {String.class, String.class, String.class, String[].class}, argsarr = { @InvocationArgs({":tableCatalog", ":tableSchem", "null", "null"}) } ) @XmlElementRef private List
tables; @Invocation( name = "getUDTs", types = {String.class, String.class, String.class, int[].class}, argsarr = { @InvocationArgs({":tableCatalog", ":tableSchem", "null", "null"}) } ) @XmlElementRef private List UDTs; @XmlElement(name = "unknownResult", nillable = true) private List unknownResults; }