Class util

  • All Implemented Interfaces:
    java.security.PrivilegedAction<java.lang.String>

    public final class util
    extends java.lang.Object
    implements java.security.PrivilegedAction<java.lang.String>
    Methods used to control setup for apps as well as display some internal ij structures.
    See Also:
    JDBCDisplayUtil
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.Class[] INT_P  
      private java.lang.String key  
      private static java.lang.String[][] protocolDrivers  
      private static java.lang.Class[] STRING_P  
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private util()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static void DisplayMulti​(LocalizedOutput out, java.sql.PreparedStatement ps, java.sql.ResultSet rs, java.sql.Connection conn)
      Display a statement that takes parameters by stuffing it with rows from the result set and displaying each result each time through.
      static void DisplayVector​(LocalizedOutput out, java.util.Vector v)
      Display a vector of strings to the out stream.
      static java.lang.String getArg​(java.lang.String param, java.lang.String[] args)
      Find the argument that follows the specified parameter.
      static java.sql.Connection getDataSourceConnection​(java.lang.String dsName, java.lang.String user, java.lang.String password, java.lang.String dbName, boolean firstTime)
      Returns a connection obtained using the DataSource.
      static java.lang.String getFileArg​(java.lang.String[] args)
      Return the name of the ij command file or null if none is specified.
      static java.lang.String getInputResourceNameArg​(java.lang.String[] args)
      Return the name of a resource containing input commands or null iff none has been specified.
      static boolean getPropertyArg​(java.lang.String[] args)
      ij is started with "-p[r] file OtherArgs"; the file contains properties to control the driver and database used to run ij, and can provide additional system properties.
      (package private) static java.io.InputStream getResourceAsStream​(java.lang.String resourceName)
      Convenience routine to get a resource as a BufferedInputStream.
      static java.lang.String getSelectedSchema​(java.sql.Connection theConnection)
      Selects the current schema from the given connection.
      (package private) static java.lang.String getSystemProperty​(java.lang.String propertyName)  
      static boolean invalidArgs​(java.lang.String[] args)
      Verify the ij line arguments command arguments.
      private static boolean isJCCFramework()
      Used to determine if this is a JCC testing framework So that retrieveMessages can be sent.
      (package private) static void loadDriver​(java.lang.String driverClass)
      Load a driver given a class name.
      static void loadDriverIfKnown​(java.lang.String jdbcProtocol)
      Find the appropriate driver and load it, given a JDBC URL.
      private static void loadWithTrimmedValues​(java.io.InputStream iStr, java.util.Properties prop)
      Read a set of properties from the received input stream, strip off any excess white space that exists in those property values, and then add those newly-read properties to the received Properties object; not explicitly removing the whitespace here can lead to problems.
      (package private) static java.lang.String qualifyResourceName​(java.lang.String resourceName, boolean absolute)
      Convenience routine to qualify a resource name with "ij.defaultPackageName" if it is not qualified (does not begin with a "/").
      java.lang.String run()  
      static void setupDataSource​(java.lang.Object ds, java.lang.String dbName, boolean firstTime)
      Sets up a data source with values specified in ij.dataSource.* properties or passed as parameters of this method
      static java.sql.Connection startJBMS()
      Utility interface that defaults driver and database to null.
      static java.sql.Connection startJBMS​(java.lang.String defaultDriver, java.lang.String defaultURL)
      Utility interface that defaults connInfo to null
      static java.sql.Connection startJBMS​(java.lang.String defaultDriver, java.lang.String defaultURL, java.util.Properties connInfo)
      This will look for the System properties "ij.driver" and "ij.database" and return a java.sql.Connection if it successfully connects.
      static java.util.Properties updateConnInfo​(java.lang.String user, java.lang.String password, java.util.Properties connInfo)  
      (package private) static void Usage​(LocalizedOutput out)
      print a usage message for invocations of main().
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • STRING_P

        private static final java.lang.Class[] STRING_P
      • INT_P

        private static final java.lang.Class[] INT_P
      • key

        private java.lang.String key
      • protocolDrivers

        private static final java.lang.String[][] protocolDrivers
    • Constructor Detail

      • util

        private util()
    • Method Detail

      • getArg

        public static java.lang.String getArg​(java.lang.String param,
                                              java.lang.String[] args)
        Find the argument that follows the specified parameter.
        Parameters:
        param - the parameter (e.g. "-p")
        args - the argument list to consider.
        Returns:
        the argument that follows the parameter, or null if not found
      • getPropertyArg

        public static boolean getPropertyArg​(java.lang.String[] args)
                                      throws java.io.IOException
        ij is started with "-p[r] file OtherArgs"; the file contains properties to control the driver and database used to run ij, and can provide additional system properties.

        getPropertyArg will look at the args and take out a "-p " pair, reading the file into the system properties.

        If there was a -p without a following , no action is taken.

        Parameters:
        args - the argument list to consider.
        Returns:
        true if a property item was found and loaded.
        Throws:
        java.io.IOException - thrown if file not found
      • qualifyResourceName

        static java.lang.String qualifyResourceName​(java.lang.String resourceName,
                                                    boolean absolute)
        Convenience routine to qualify a resource name with "ij.defaultPackageName" if it is not qualified (does not begin with a "/").
        Parameters:
        absolute - true means return null if the name is not absolute and false means return partial names.
      • getResourceAsStream

        static java.io.InputStream getResourceAsStream​(java.lang.String resourceName)
        Convenience routine to get a resource as a BufferedInputStream. If the resourceName is not absolute (does not begin with a "/") this qualifies the name with the "ij.defaultResourcePackage" name.
        Parameters:
        resourceName - the name of the resource
        Returns:
        a buffered stream for the resource if it exists and null otherwise.
      • getFileArg

        public static java.lang.String getFileArg​(java.lang.String[] args)
                                           throws java.io.IOException
        Return the name of the ij command file or null if none is specified. The command file may be proceeded with -f flag on the command line. Alternatively, the command file may be specified without a -f flag. In this case we assume the first unknown argument is the command file.

        This should only be called after calling invalidArgs.

        If there is no such argument, a null is returned.

        Parameters:
        args - the argument list to consider.
        Returns:
        the name of the first argument not preceded by "-p", null if none found.
        Throws:
        java.io.IOException - thrown if file not found
      • getInputResourceNameArg

        public static java.lang.String getInputResourceNameArg​(java.lang.String[] args)
        Return the name of a resource containing input commands or null iff none has been specified.
      • invalidArgs

        public static boolean invalidArgs​(java.lang.String[] args)
        Verify the ij line arguments command arguments. Also used to detect --help.
        Returns:
        true if the args are invalid
        • Only legal argument provided.
        • Only specify a quantity once.
      • Usage

        static void Usage​(LocalizedOutput out)
        print a usage message for invocations of main().
      • setupDataSource

        public static void setupDataSource​(java.lang.Object ds,
                                           java.lang.String dbName,
                                           boolean firstTime)
                                    throws java.lang.Exception
        Sets up a data source with values specified in ij.dataSource.* properties or passed as parameters of this method
        Parameters:
        ds - DataSource object
        dbName - Database Name
        firstTime - If firstTime is false, ij.dataSource.createDatabase and ij.dataSource.databaseName properties will not be used. The value in parameter dbName will be used instead of ij.dataSource.databaseName.
        Throws:
        java.lang.Exception
      • getDataSourceConnection

        public static java.sql.Connection getDataSourceConnection​(java.lang.String dsName,
                                                                  java.lang.String user,
                                                                  java.lang.String password,
                                                                  java.lang.String dbName,
                                                                  boolean firstTime)
                                                           throws java.sql.SQLException
        Returns a connection obtained using the DataSource. This method will be called when ij.dataSource property is set. It uses ij.dataSource.* properties to get details for the connection.
        Parameters:
        dsName - Data Source name
        user - User name
        password - Password
        dbName - Database Name
        firstTime - Indicates if the method is called first time. This is passed to setupDataSource method.
        Throws:
        java.sql.SQLException
      • startJBMS

        public static java.sql.Connection startJBMS​(java.lang.String defaultDriver,
                                                    java.lang.String defaultURL,
                                                    java.util.Properties connInfo)
                                             throws java.sql.SQLException,
                                                    java.lang.ClassNotFoundException,
                                                    java.lang.InstantiationException,
                                                    java.lang.IllegalAccessException,
                                                    java.lang.NoSuchMethodException,
                                                    java.lang.reflect.InvocationTargetException
        This will look for the System properties "ij.driver" and "ij.database" and return a java.sql.Connection if it successfully connects. The deprecated driver and database properties are examined first.

        If no connection was possible, it will return a null.

        Failure to load the driver class is quietly ignored.

        Parameters:
        defaultDriver - the driver to use if no property value found
        defaultURL - the database URL to use if no property value found
        connInfo - Connection attributes to pass to getConnection
        Returns:
        a connection to the defaultURL if possible; null if not.
        Throws:
        java.sql.SQLException - on failure to connect.
        java.lang.ClassNotFoundException - on failure to load driver.
        java.lang.InstantiationException - on failure to load driver.
        java.lang.IllegalAccessException - on failure to load driver.
        java.lang.NoSuchMethodException
        java.lang.reflect.InvocationTargetException
      • updateConnInfo

        public static java.util.Properties updateConnInfo​(java.lang.String user,
                                                          java.lang.String password,
                                                          java.util.Properties connInfo)
      • startJBMS

        public static java.sql.Connection startJBMS()
                                             throws java.sql.SQLException,
                                                    java.lang.ClassNotFoundException,
                                                    java.lang.InstantiationException,
                                                    java.lang.IllegalAccessException,
                                                    java.lang.NoSuchMethodException,
                                                    java.lang.reflect.InvocationTargetException
        Utility interface that defaults driver and database to null.
        Returns:
        a connection to the defaultURL if possible; null if not.
        Throws:
        java.sql.SQLException - on failure to connect.
        java.lang.ClassNotFoundException - on failure to load driver.
        java.lang.InstantiationException - on failure to load driver.
        java.lang.IllegalAccessException - on failure to load driver.
        java.lang.NoSuchMethodException
        java.lang.reflect.InvocationTargetException
      • startJBMS

        public static java.sql.Connection startJBMS​(java.lang.String defaultDriver,
                                                    java.lang.String defaultURL)
                                             throws java.sql.SQLException,
                                                    java.lang.ClassNotFoundException,
                                                    java.lang.InstantiationException,
                                                    java.lang.IllegalAccessException,
                                                    java.lang.NoSuchMethodException,
                                                    java.lang.reflect.InvocationTargetException
        Utility interface that defaults connInfo to null

        Parameters:
        defaultDriver - the driver to use if no property value found
        defaultURL - the database URL to use if no property value found
        Returns:
        a connection to the defaultURL if possible; null if not.
        Throws:
        java.sql.SQLException - on failure to connect.
        java.lang.ClassNotFoundException - on failure to load driver.
        java.lang.InstantiationException - on failure to load driver.
        java.lang.IllegalAccessException - on failure to load driver.
        java.lang.NoSuchMethodException
        java.lang.reflect.InvocationTargetException
      • DisplayVector

        public static void DisplayVector​(LocalizedOutput out,
                                         java.util.Vector v)
        Display a vector of strings to the out stream.
      • DisplayMulti

        public static void DisplayMulti​(LocalizedOutput out,
                                        java.sql.PreparedStatement ps,
                                        java.sql.ResultSet rs,
                                        java.sql.Connection conn)
                                 throws java.sql.SQLException,
                                        ijException
        Display a statement that takes parameters by stuffing it with rows from the result set and displaying each result each time through. Deal with autocommit behavior along the way.
        Throws:
        java.sql.SQLException - thrown on db error
        ijException - thrown on ij error
      • getSystemProperty

        static final java.lang.String getSystemProperty​(java.lang.String propertyName)
      • run

        public final java.lang.String run()
        Specified by:
        run in interface java.security.PrivilegedAction<java.lang.String>
      • loadWithTrimmedValues

        private static void loadWithTrimmedValues​(java.io.InputStream iStr,
                                                  java.util.Properties prop)
                                           throws java.io.IOException
        Read a set of properties from the received input stream, strip off any excess white space that exists in those property values, and then add those newly-read properties to the received Properties object; not explicitly removing the whitespace here can lead to problems. This method exists because of the manner in which the jvm reads properties from file--extra spaces are ignored after a _key_, but if they exist at the _end_ of a property decl line (i.e. as part of a _value_), they are preserved, as outlined in the Java API: "Any whitespace after the key is skipped; if the first non- whitespace character after the key is = or :, then it is ignored and any whitespace characters after it are also skipped. All remaining characters on the line become part of the associated element string." Creates final properties set consisting of 'prop' plus all properties loaded from 'iStr' (with the extra whitespace (if any) removed from all values), will be returned via the parameter.
        Parameters:
        iStr - An input stream from which the new properties are to be loaded (should already be initialized).
        prop - A set of properties to which the properties from iStr will be added (should already be initialized). Copied here to avoid dependency on an engine class.
        Throws:
        java.io.IOException
      • loadDriverIfKnown

        public static void loadDriverIfKnown​(java.lang.String jdbcProtocol)
                                      throws java.lang.ClassNotFoundException,
                                             java.lang.InstantiationException,
                                             java.lang.IllegalAccessException,
                                             java.lang.NoSuchMethodException,
                                             java.lang.reflect.InvocationTargetException
        Find the appropriate driver and load it, given a JDBC URL. No action if no driver known for a given URL.
        Parameters:
        jdbcProtocol - the protocol to try.
        Throws:
        java.lang.ClassNotFoundException - if unable to locate class for driver.
        java.lang.InstantiationException - if unable to create an instance.
        java.lang.IllegalAccessException - if driver class constructor not visible.
        java.lang.NoSuchMethodException
        java.lang.reflect.InvocationTargetException
      • loadDriver

        static void loadDriver​(java.lang.String driverClass)
                        throws java.lang.ClassNotFoundException,
                               java.lang.InstantiationException,
                               java.lang.IllegalAccessException,
                               java.lang.NoSuchMethodException,
                               java.lang.reflect.InvocationTargetException
        Load a driver given a class name.
        Throws:
        java.lang.ClassNotFoundException - if unable to locate class for driver.
        java.lang.InstantiationException - if unable to create an instance.
        java.lang.IllegalAccessException - if driver class constructor not visible.
        java.lang.NoSuchMethodException
        java.lang.reflect.InvocationTargetException
      • isJCCFramework

        private static boolean isJCCFramework()
        Used to determine if this is a JCC testing framework So that retrieveMessages can be sent. The plan is to have ij will retrieve messages by default and not look at the testing frameworks. So, ulitmately this function will look at the driver rather than the framework.
        Returns:
        true if the framework contains Net or JCC.
      • getSelectedSchema

        public static java.lang.String getSelectedSchema​(java.sql.Connection theConnection)
                                                  throws java.sql.SQLException
        Selects the current schema from the given connection. As there are no way of getting current schema supported by all major DBMS-es, this method may return null.
        Parameters:
        theConnection - Connection to get current schema for
        Returns:
        the current schema of the connection, or null if error.
        Throws:
        java.sql.SQLException