⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databasescript.java

📁 一个用java写的开源的数据库系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* Copyrights and Licenses * * This product includes Hypersonic SQL. * Originally developed by Thomas Mueller and the Hypersonic SQL Group.  * * Copyright (c) 1995-2000 by the Hypersonic SQL Group. All rights reserved.  * Redistribution and use in source and binary forms, with or without modification, are permitted * provided that the following conditions are met:  *     -  Redistributions of source code must retain the above copyright notice, this list of conditions *         and the following disclaimer.  *     -  Redistributions in binary form must reproduce the above copyright notice, this list of *         conditions and the following disclaimer in the documentation and/or other materials *         provided with the distribution.  *     -  All advertising materials mentioning features or use of this software must display the *        following acknowledgment: "This product includes Hypersonic SQL."  *     -  Products derived from this software may not be called "Hypersonic SQL" nor may *        "Hypersonic SQL" appear in their names without prior written permission of the *         Hypersonic SQL Group.  *     -  Redistributions of any form whatsoever must retain the following acknowledgment: "This *          product includes Hypersonic SQL."  * This software is provided "as is" and any expressed or implied warranties, including, but * not limited to, the implied warranties of merchantability and fitness for a particular purpose are * disclaimed. In no event shall the Hypersonic SQL Group or its contributors be liable for any * direct, indirect, incidental, special, exemplary, or consequential damages (including, but * not limited to, procurement of substitute goods or services; loss of use, data, or profits; * or business interruption). However caused any on any theory of liability, whether in contract, * strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this * software, even if advised of the possibility of such damage.  * This software consists of voluntary contributions made by many individuals on behalf of the * Hypersonic SQL Group. * * * For work added by the HSQL Development Group: * * Copyright (c) 2001-2002, The HSQL Development Group * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer, including earlier * license statements (above) and comply with all above license conditions. * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution, including earlier * license statements (above) and comply with all above license conditions. * * Neither the name of the HSQL Development Group nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */package org.hsqldb;import java.sql.SQLException;import java.sql.Types;import java.util.Hashtable;import java.util.Vector;import java.util.Enumeration;/** * Script generation. * * @version 1.7.0 */class DatabaseScript {    /**     * Method declaration     *     *     * @param bDrop     * @param bInsert     * @param bCached     * @param session     *     * @return     *     * @throws SQLException     */    static Result getScript(Database dDatabase, boolean bDrop,                            boolean bInsert, boolean bCached,                            Session session) throws SQLException {        Vector tTable          = dDatabase.getTables();        Vector forwardFK       = new Vector();        Vector forwardFKSource = new Vector();        session.checkAdmin();        Result r = new Result(1);        r.colType[0] = Types.VARCHAR;        r.sTable[0]  = "SYSTEM_SCRIPT";        r.sLabel[0]  = "COMMAND";        r.sName[0]   = "COMMAND";        StringBuffer a;        for (int i = 0, tSize = tTable.size(); i < tSize; i++) {            Table t = (Table) tTable.elementAt(i);// fredt@users 20020221 - patch 513005 by sqlbob@users (RMP)            if (t.isTemp() || t.isView()) {                continue;            }            if (bDrop) {                addRow(r, "DROP TABLE " + t.getName().statementName);            }            a = new StringBuffer(128);            getTableDDL(dDatabase, t, i, forwardFK, forwardFKSource, a);            addRow(r, a.toString());            for (int j = 1; j < t.getIndexCount(); j++) {                Index index = t.getIndex(j);                if (HsqlName.isReservedName(index.getName().name)) {                    // the following are autocreated with the table                    // indexes for primary keys                    // indexes for unique constraints                    // own table indexes for foreign keys                    continue;                }                a = new StringBuffer(64);                a.append("CREATE ");                if (index.isUnique()) {                    a.append("UNIQUE ");                }                a.append("INDEX ");                a.append(index.getName().statementName);                a.append(" ON ");                a.append(t.getName().statementName);                int col[] = index.getColumns();                int len   = index.getVisibleColumns();                getColumnList(t, col, len, a);                addRow(r, a.toString());            }            if (t.isText() && t.isDataReadOnly()) {                a = new StringBuffer("SET TABLE ");                a.append(t.getName().statementName);                a.append(" READONLY TRUE");                addRow(r, a.toString());            }// sqlbob@users 04/27/2002 Added data source support            String dataSource = getDataSource(t);            if (dataSource != null) {                addRow(r, dataSource);            }            // trigger script            int numTrigs = TriggerDef.numTrigs();            for (int tv = 0; tv < numTrigs; tv++) {                Vector trigVec = t.vTrigs[tv];                int    trCount = trigVec.size();                for (int k = 0; k < trCount; k++) {                    a = ((TriggerDef) trigVec.elementAt(k)).toBuf();                    addRow(r, a.toString());                }            }        }        for (int i = 0, tSize = forwardFK.size(); i < tSize; i++) {            Constraint c = (Constraint) forwardFK.elementAt(i);            a = new StringBuffer(128);            a.append("ALTER TABLE ");            a.append(c.getRef().getName().statementName);            a.append(" ADD ");            getFKStatement(c, a);            addRow(r, a.toString());        }        for (int i = 0, tSize = tTable.size(); i < tSize; i++) {            Table t = (Table) tTable.elementAt(i);            if (bCached && t.isCached()) {                addRow(r, getIndexRootsDDL((Table) tTable.elementAt(i)));            }        }        Vector uv = dDatabase.getUserManager().getUsers();        for (int i = 0, vSize = uv.size(); i < vSize; i++) {            User u = (User) uv.elementAt(i);            // todo: this is not a nice implementation            if (u == null) {                continue;            }            String name = u.getName();            if (!name.equals("PUBLIC")) {                a = new StringBuffer(128);                a.append("CREATE USER ");                a.append(name);                a.append(" PASSWORD ");                a.append('"');                a.append(u.getPassword());                a.append('"');                if (u.isAdmin()) {                    a.append(" ADMIN");                }                addRow(r, a.toString());            }            Hashtable rights = u.getRights();            if (rights == null) {                continue;            }            Enumeration e = rights.keys();            while (e.hasMoreElements()) {                String object = (String) e.nextElement();                int    right  = ((Integer) (rights.get(object))).intValue();                if (right == 0) {                    continue;                }                a = new StringBuffer(64);                a.append("GRANT ");                a.append(UserManager.getRight(right));                a.append(" ON ");                a.append(object);                a.append(" TO ");                a.append(u.getName());                addRow(r, a.toString());            }        }        if (dDatabase.isIgnoreCase()) {            addRow(r, "SET IGNORECASE TRUE");        }        Hashtable   h = dDatabase.getAlias();        Enumeration e = h.keys();        while (e.hasMoreElements()) {            String       alias  = (String) e.nextElement();            String       java   = (String) h.get(alias);            StringBuffer buffer = new StringBuffer(64);            buffer.append("CREATE ALIAS ");            buffer.append(alias);            buffer.append(" FOR \"");            buffer.append(java);            buffer.append('"');            addRow(r, buffer.toString());        }// fredt@users 20020420 - patch523880 by leptipre@users - VIEW support        for (int i = 0, tSize = tTable.size(); i < tSize; i++) {            Table t = (Table) tTable.elementAt(i);            if (t.isView()) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -