001: /*
002:
003: Derby - Class org.apache.derby.tools.ij
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to You under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.tools;
023:
024: import org.apache.derby.iapi.services.info.JVMInfo;
025: import org.apache.derby.iapi.tools.i18n.LocalizedInput;
026: import org.apache.derby.iapi.tools.i18n.LocalizedOutput;
027: import org.apache.derby.iapi.tools.i18n.LocalizedResource;
028:
029: import org.apache.derby.impl.tools.ij.Main;
030: import org.apache.derby.impl.tools.ij.utilMain;
031:
032: import java.io.IOException;
033: import java.io.InputStream;
034: import java.io.OutputStream;
035: import java.io.PrintStream;
036: import java.io.UnsupportedEncodingException;
037: import java.sql.Connection;
038: import java.util.Properties;
039:
040: /**
041:
042: ij is Derby's interactive JDBC scripting tool.
043: It is a simple utility for running scripts against a Derby database.
044: You can also use it interactively to run ad hoc queries.
045: ij provides several commands for ease in accessing a variety of JDBC features.
046: <P>
047:
048: To run from the command line enter the following:
049: <p>
050: java [options] org.apache.derby.tools.ij [arguments]
051: <P>
052: ij is can also be used with any database server that supports a JDBC driver.
053: */
054: public class ij {
055:
056: /**
057: @exception IOException thrown if cannot access input or output files.
058: */
059: static public void main(String[] args) throws IOException {
060:
061: /* We decide which verion of ij (2.0 or 4.0) to
062: * load based on the same criteria that the JDBC driver
063: * uses.
064: */
065: if (JVMInfo.JDK_ID == JVMInfo.J2SE_13) {
066: Main.main(args);
067: } else {
068: org.apache.derby.impl.tools.ij.Main14.main(args);
069: }
070: }
071:
072: /**
073: * Run a SQL script from an InputStream and write
074: * the resulting output to the provided PrintStream.
075: * SQL commands are separated by a semi-colon ';' character.
076: *
077: * @param conn Connection to be used as the script's default connection.
078: * @param sqlIn InputStream for the script.
079: * @param inputEncoding Encoding of the script.
080: * @param sqlOut OutputStream for the script's output
081: * @param outputEncoding Output encoding to use.
082: * @return Number of SQLExceptions thrown during the execution, -1 if not known.
083: * @throws UnsupportedEncodingException
084: */
085: public static int runScript(Connection conn, InputStream sqlIn,
086: String inputEncoding, OutputStream sqlOut,
087: String outputEncoding) throws UnsupportedEncodingException {
088: LocalizedOutput lo = outputEncoding == null ? LocalizedResource
089: .getInstance().getNewOutput(sqlOut) : LocalizedResource
090: .getInstance().getNewEncodedOutput(sqlOut,
091: outputEncoding);
092:
093: Main ijE;
094: if (JVMInfo.JDK_ID == JVMInfo.J2SE_13) {
095: ijE = new Main(false);
096: } else {
097: // temp - allow ij to continue to work under jdk131
098: // will resolve as part of DEBRY-1609
099: // jdk13 gets error loading Main14 due to the
100: // class now being built with the jdk14 target flag.
101: // ijE = new org.apache.derby.impl.tools.ij.Main14(false);
102: ijE = new Main(false);
103: }
104:
105: LocalizedInput li = LocalizedResource.getInstance()
106: .getNewEncodedInput(sqlIn, inputEncoding);
107:
108: utilMain um = ijE.getutilMain(1, lo);
109:
110: return um.goScript(conn, li);
111: }
112:
113: private ij() { // no instances allowed
114: }
115:
116: public static String getArg(String param, String[] args) {
117: return org.apache.derby.impl.tools.ij.util.getArg(param, args);
118: }
119:
120: public static void getPropertyArg(String[] args) throws IOException {
121: org.apache.derby.impl.tools.ij.util.getPropertyArg(args);
122: }
123:
124: public static java.sql.Connection startJBMS()
125: throws java.sql.SQLException, IllegalAccessException,
126: ClassNotFoundException, InstantiationException {
127: return org.apache.derby.impl.tools.ij.util.startJBMS();
128: }
129: }
|