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

📄 torquesqlexec.java

📁 一个数据访问层Torque3.1的生成器的源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.apache.torque.task;/* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. 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. * * 3. The end-user documentation included with the redistribution, *    if any, must include the following acknowledgment: *       "This product includes software developed by the *        Apache Software Foundation (http://www.apache.org/)." *    Alternately, this acknowledgment may appear in the software itself, *    if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and *    "Apache Turbine" must not be used to endorse or promote products *    derived from this software without prior written permission. For *    written permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", *    "Apache Turbine", nor may "Apache" appear in their name, without *    prior written permission of the Apache Software Foundation. * * 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 APACHE SOFTWARE FOUNDATION 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 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. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation.  For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.PrintStream;import java.io.StringReader;import java.io.Reader;import java.util.List;import java.util.ArrayList;import java.util.Iterator;import java.util.HashMap;import java.util.Map;import java.util.Properties;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.Driver;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.SQLWarning;import java.sql.Statement;import org.apache.commons.lang.StringUtils;import org.apache.tools.ant.AntClassLoader;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;import org.apache.tools.ant.ProjectHelper;import org.apache.tools.ant.Task;import org.apache.tools.ant.types.EnumeratedAttribute;import org.apache.tools.ant.types.Path;import org.apache.tools.ant.types.Reference;/** * This task uses an SQL -> Database map in the form of a properties * file to insert each SQL file listed into its designated database. * * @author <a href="mailto:jeff@custommonkey.org">Jeff Martin</a> * @author <a href="mailto:gholam@xtra.co.nz">Michael McCallum</A> * @author <a href="mailto:tim.stephenson@sybase.com">Tim Stephenson</A> * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</A> * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a> * @version $Id: TorqueSQLExec.java,v 1.2 2003/03/21 17:31:08 mpoeschl Exp $ */public class TorqueSQLExec extends Task{    private int goodSql = 0;    private int totalSql = 0;    private Path classpath;    private AntClassLoader loader;    /**     *     */    public static class DelimiterType extends EnumeratedAttribute    {        public static final String NORMAL = "normal";        public static final String ROW = "row";        public String[] getValues()        {            return new String[] {NORMAL, ROW};        }    }    /** Database connection */    private Connection conn = null;    /** Autocommit flag. Default value is false */    private boolean autocommit = false;    /** SQL statement */    private Statement statement = null;    /** DB driver. */    private String driver = null;    /** DB url. */    private String url = null;    /** User name. */    private String userId = null;    /** Password */    private String password = null;    /** SQL input command */    private String sqlCommand = "";    /** SQL Statement delimiter */    private String delimiter = ";";    /**     * The delimiter type indicating whether the delimiter will     * only be recognized on a line by itself     */    private String delimiterType = DelimiterType.NORMAL;    /** Print SQL results. */    private boolean print = false;    /** Print header columns. */    private boolean showheaders = true;    /** Results Output file. */    private File output = null;    /** RDBMS Product needed for this SQL. */    private String rdbms = null;    /** RDBMS Version needed for this SQL. */    private String version = null;    /** Action to perform if an error is found */    private String onError = "abort";    /** Encoding to use when reading SQL statements from a file */    private String encoding = null;    /** Src directory for the files listed in the sqldbmap. */    private String srcDir;    /** Properties file that maps an individual SQL file to a database. */    private File sqldbmap;    /**     * Set the sqldbmap properties file.     *     * @param sqldbmap filename for the sqldbmap     */    public void setSqlDbMap(String sqldbmap)    {        this.sqldbmap = project.resolveFile(sqldbmap);    }    /**     * Get the sqldbmap properties file.     *     * @return filename for the sqldbmap     */    public File getSqlDbMap()    {        return sqldbmap;    }    /**     * Set the src directory for the sql files listed in the sqldbmap file.     *     * @param srcDir sql source directory     */    public void setSrcDir(String srcDir)    {        this.srcDir = project.resolveFile(srcDir).toString();    }    /**     * Get the src directory for the sql files listed in the sqldbmap file.     *     * @return sql source directory     */    public String getSrcDir()    {        return srcDir;    }    /**     * Set the classpath for loading the driver.     *     * @param classpath the classpath     */    public void setClasspath(Path classpath)    {        if (this.classpath == null)        {            this.classpath = classpath;        }        else        {            this.classpath.append(classpath);        }    }    /**     * Create the classpath for loading the driver.     *     * @return the classpath     */    public Path createClasspath()    {        if (this.classpath == null)        {            this.classpath = new Path(project);        }        return this.classpath.createPath();    }    /**     * Set the classpath for loading the driver using the classpath reference.     *     * @param r reference to the classpath     */    public void setClasspathRef(Reference r)    {        createClasspath().setRefid(r);    }    /**     * Set the sql command to execute     *     * @param sql sql command to execute     */    public void addText(String sql)    {        this.sqlCommand += sql;    }    /**     * Set the JDBC driver to be used.     *     * @param driver driver class name     */    public void setDriver(String driver)    {        this.driver = driver;    }    /**     * Set the DB connection url.     *     * @param url connection url     */    public void setUrl(String url)    {        this.url = url;    }    /**     * Set the user name for the DB connection.     *     * @param userId database user     */    public void setUserid(String userId)    {        this.userId = userId;    }    /**     * Set the file encoding to use on the sql files read in     *     * @param encoding the encoding to use on the files     */    public void setEncoding(String encoding)    {        this.encoding = encoding;    }    /**     * Set the password for the DB connection.     *     * @param password database password     */    public void setPassword(String password)    {        this.password = password;    }    /**     * Set the autocommit flag for the DB connection.     *     * @param autocommit the autocommit flag     */    public void setAutocommit(boolean autocommit)    {        this.autocommit = autocommit;    }    /**     * Set the statement delimiter.     *     * <p>For example, set this to "go" and delimitertype to "ROW" for     * Sybase ASE or MS SQL Server.</p>     *     * @param delimiter     */    public void setDelimiter(String delimiter)    {        this.delimiter = delimiter;    }    /**     * Set the Delimiter type for this sql task. The delimiter type takes two     * values - normal and row. Normal means that any occurence of the delimiter     * terminate the SQL command whereas with row, only a line containing just     * the delimiter is recognized as the end of the command.     *     * @param delimiterType     */    public void setDelimiterType(DelimiterType delimiterType)    {        this.delimiterType = delimiterType.getValue();    }    /**     * Set the print flag.     *     * @param print     */    public void setPrint(boolean print)    {        this.print = print;    }    /**     * Set the showheaders flag.     *     * @param showheaders     */    public void setShowheaders(boolean showheaders)    {        this.showheaders = showheaders;    }    /**     * Set the output file.     *     * @param output     */    public void setOutput(File output)    {        this.output = output;    }    /**     * Set the rdbms required     *     * @param vendor     */    public void setRdbms(String vendor)    {        this.rdbms = vendor.toLowerCase();    }    /**     * Set the version required     *     * @param version     */    public void setVersion(String version)    {        this.version = version.toLowerCase();    }    /**     * Set the action to perform onerror     *     * @param action     */    public void setOnerror(OnError action)    {        this.onError = action.getValue();    }    /**     * Load the sql file and then execute it     *     * @throws BuildException     */    public void execute() throws BuildException    {        sqlCommand = sqlCommand.trim();        if (sqldbmap == null || getSqlDbMap().exists() == false)        {            throw new BuildException("You haven't provided an sqldbmap, or "                    + "the one you specified doesn't exist: " + sqldbmap);        }        if (driver == null)        {            throw new BuildException("Driver attribute must be set!", location);        }        if (userId == null)        {            throw new BuildException("User Id attribute must be set!",                    location);        }        if (password == null)        {            throw new BuildException("Password attribute must be set!",                    location);        }        if (url == null)        {            throw new BuildException("Url attribute must be set!", location);        }        Properties map = new Properties();        try        {            FileInputStream fis = new FileInputStream(getSqlDbMap());            map.load(fis);            fis.close();        }        catch (IOException ioe)        {            throw new BuildException("Cannot open and process the sqldbmap!");        }        Map databases = new HashMap();        Iterator eachFileName = map.keySet().iterator();        while (eachFileName.hasNext())        {            String sqlfile = (String) eachFileName.next();            String database = map.getProperty(sqlfile);            List files = (List) databases.get(database);            if (files == null)            {                files = new ArrayList();                databases.put(database, files);            }

⌨️ 快捷键说明

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