001    /*
002     * JBoss DNA (http://www.jboss.org/dna)
003     * See the COPYRIGHT.txt file distributed with this work for information
004     * regarding copyright ownership.  Some portions may be licensed
005     * to Red Hat, Inc. under one or more contributor license agreements.
006     * See the AUTHORS.txt file in the distribution for a full listing of 
007     * individual contributors. 
008     *
009     * JBoss DNA is free software. Unless otherwise indicated, all code in JBoss DNA
010     * is licensed to you under the terms of the GNU Lesser General Public License as
011     * published by the Free Software Foundation; either version 2.1 of
012     * the License, or (at your option) any later version.
013     *
014     * JBoss DNA is distributed in the hope that it will be useful,
015     * but WITHOUT ANY WARRANTY; without even the implied warranty of
016     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017     * Lesser General Public License for more details.
018     *
019     * You should have received a copy of the GNU Lesser General Public
020     * License along with this software; if not, write to the Free
021     * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
022     * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
023     */
024    package org.jboss.dna.common.jdbc.model;
025    
026    import org.jboss.dna.common.jdbc.model.api.*;
027    
028    /**
029     * Database metadata objects creation factory
030     * 
031     * @author <a href="mailto:litsenko_sergey@yahoo.com">Sergiy Litsenko</a>
032     */
033    public interface ModelFactory {
034        // ~ Methods --------------------------------------------------------------------------
035    
036        /**
037         * Creates Attribute
038         * 
039         * @return Attribute
040         */
041        Attribute createAttribute();
042    
043        /**
044         * Creates BestRowIdentifier
045         * 
046         * @return BestRowIdentifier object
047         */
048        BestRowIdentifier createBestRowIdentifier();
049    
050        /**
051         * Creates Catalog
052         * 
053         * @return Catalog object
054         */
055        Catalog createCatalog();
056    
057        /**
058         * Creates Database
059         * 
060         * @return Database object
061         */
062        Database createDatabase();
063    
064        /**
065         * Creates ForeignKey
066         * 
067         * @return ForeignKey object
068         */
069        ForeignKey createForeignKey();
070    
071        /**
072         * Creates ForeignKeyColumn
073         * 
074         * @return ForeignKeyColumn object
075         */
076        ForeignKeyColumn createForeignKeyColumn();
077    
078        /**
079         * Creates Index
080         * 
081         * @return Index object
082         */
083        Index createIndex();
084    
085        /**
086         * Creates IndexColumn
087         * 
088         * @return IndexColumn object
089         */
090        IndexColumn createIndexColumn();
091    
092        /**
093         * Creates Parameter
094         * 
095         * @return Parameter object
096         */
097        Parameter createParameter();
098    
099        /**
100         * Creates PrimaryKey
101         * 
102         * @return PrimaryKey object
103         */
104        PrimaryKey createPrimaryKey();
105    
106        /**
107         * Creates PrimaryKeyColumn
108         * 
109         * @return PrimaryKeyColumn object
110         */
111        PrimaryKeyColumn createPrimaryKeyColumn();
112    
113        /**
114         * Creates Privilege
115         * 
116         * @return Privilege object
117         */
118        Privilege createPrivilege();
119    
120        /**
121         * Creates Reference
122         * 
123         * @return Reference object
124         */
125        Reference createReference();
126    
127        /**
128         * Creates Schema
129         * 
130         * @return Schema object
131         */
132        Schema createSchema();
133    
134        /**
135         * Creates SqlTypeConversionPair
136         * 
137         * @return SqlTypeConversionPair object
138         */
139        SqlTypeConversionPair createSqlTypeConversionPair();
140    
141        /**
142         * Creates SqlTypeInfo
143         * 
144         * @return SqlTypeInfo object
145         */
146        SqlTypeInfo createSqlTypeInfo();
147    
148        /**
149         * Creates StoredProcedure
150         * 
151         * @return StoredProcedure object
152         */
153        StoredProcedure createStoredProcedure();
154    
155        /**
156         * Creates Table
157         * 
158         * @return Table object
159         */
160        Table createTable();
161    
162        /**
163         * Creates TableColumn
164         * 
165         * @return TableColumn object
166         */
167        TableColumn createTableColumn();
168    
169        /**
170         * Creates TableType
171         * 
172         * @return TableType object
173         */
174        TableType createTableType();
175    
176        /**
177         * Creates UserDefinedType
178         * 
179         * @return UserDefinedType object
180         */
181        UserDefinedType createUserDefinedType();
182    
183    }