Class DBUtilities


  • public class DBUtilities
    extends java.lang.Object
    The utilities class is used e.g. to create the database and the database tables used by the stand-alone or development servers.
    Author:
    Christopher Mindus
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String DEFAULT_DATABASE_DIRECTORY
      The default database directory: "db".
    • Constructor Summary

      Constructors 
      Constructor Description
      DBUtilities()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean areTablesCreated​(java.sql.Connection conn, java.lang.String schema, java.lang.String table)
      Checks if the tables already are created.
      static void createTables​(int jdbcFlavor, java.sql.Connection conn, java.io.InputStream in, java.nio.charset.Charset charSet, int textLength)
      Creates the tables.
      static void createTables​(java.sql.Connection conn)
      Creates the tables.
      static void createTables​(java.sql.Connection conn, java.io.InputStream in)
      Creates the tables.
      static void createTables​(java.sql.Connection conn, java.io.InputStream in, java.lang.String originalSchema, java.lang.String newSchema)
      Creates the tables with a change of the schema from "original" to "new".
      static IDBConnectionPool getConnectionPool​(IFileURLResolver fileURLResolver)
      Creates the connection pool.
      static int getJDBCFlavor()
      Gets the flavor of the JDBC used in the internal server database.
      static java.sql.Connection getPooledConnection()
      Gets a pooled connection for user processing to the internal server database.
      static int getServerDatabaseReady()
      Returns whether the Server internal database is ready for use, i.e.
      static java.lang.String getServerHost()
      Gets the Derby network database server host name for connections.
      static int getServerPort()
      Gets the Derby network database server port for connections.
      static void registerPoolProxy​(IDBPoolProxy proxy)
      Registers a database pool proxy.
      static void setAutoCreate​(boolean on)
      Sets the database auto-create flag.
      static void setDBConfDir​(java.lang.String dirName)
      Processes the database configuration directive.
      static void setDirectory​(java.lang.String dir)
      Sets the database directory for the internal server.
      static void setFileURLResolver​(IFileURLResolver resolver)
      Interface used to resolve URL's to files for the Designer.
      static void setServerAutoStart​(boolean on)
      Sets the Derby network database server auto-start flag.
      static void setServerHost​(java.lang.String host)
      Sets the Derby network database server host name for connections.
      static void setServerPort​(int port)
      Sets the Derby network database server port for connections.
      • Methods inherited from class java.lang.Object

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

      • DEFAULT_DATABASE_DIRECTORY

        public static final java.lang.String DEFAULT_DATABASE_DIRECTORY
        The default database directory: "db".
        See Also:
        Constant Field Values
    • Constructor Detail

      • DBUtilities

        public DBUtilities()
    • Method Detail

      • getJDBCFlavor

        public static int getJDBCFlavor()
        Gets the flavor of the JDBC used in the internal server database. This value is computed when the connection pool is created.

        See the FLAVOR_* values.

        Returns:
        A flavor value as:
        • -1 = Undefined
        • 0 = Derby
        • 1 = MySQL
        • 2 = PostgreSQL
        • 3 = SQL Server
        • 4 = DB2
      • setDBConfDir

        public static void setDBConfDir​(java.lang.String dirName)
                                 throws java.io.FileNotFoundException
        Processes the database configuration directive. The directory is searched for a file named "dbconf.properties", and if it is missing, a FileNotFoundException is thrown.
        Parameters:
        dirName - The database configuration directory.
        Throws:
        java.io.FileNotFoundException - if dirName is not found or not a directory, or if one of the files dirName/dbconf.properties is not found.
      • setFileURLResolver

        public static void setFileURLResolver​(IFileURLResolver resolver)
        Interface used to resolve URL's to files for the Designer. In other products, the same URL is returned unchanged.
        Parameters:
        resolver - The resolver instance.
        Throws:
        java.lang.NullPointerException - If the resolver is null.
      • setAutoCreate

        public static void setAutoCreate​(boolean on)
        Sets the database auto-create flag.
        Parameters:
        on - The automatic start flag.
      • setServerAutoStart

        public static void setServerAutoStart​(boolean on)
        Sets the Derby network database server auto-start flag.
        Parameters:
        on - The automatic start flag.
      • setServerHost

        public static void setServerHost​(java.lang.String host)
        Sets the Derby network database server host name for connections.
        Parameters:
        host - The host for the Client Derby driver.
        Throws:
        java.lang.NullPointerException - If the host name is null.
        java.lang.IllegalArgumentException - If the host is invalid.
      • getServerHost

        public static java.lang.String getServerHost()
        Gets the Derby network database server host name for connections.
        Returns:
        The host for the Client Derby driver, default "localhost".
      • setServerPort

        public static void setServerPort​(int port)
        Sets the Derby network database server port for connections.
        Parameters:
        port - The port number for the Client Derby driver.
        Throws:
        java.lang.IllegalArgumentException - If the number is invalid.
      • getServerPort

        public static int getServerPort()
        Gets the Derby network database server port for connections.
        Returns:
        The port number for the Client Derby driver, default 1527.
      • setDirectory

        public static void setDirectory​(java.lang.String dir)
                                 throws java.io.FileNotFoundException,
                                        java.io.IOException
        Sets the database directory for the internal server. The default directory is "db" (it is already appended with 'iiziServer').
        Parameters:
        dir - The new directory. The database name will be "iiziServer"
        Throws:
        java.io.FileNotFoundException - If the parent directory does not exist.
        java.io.IOException - For file system errors.
      • registerPoolProxy

        public static void registerPoolProxy​(IDBPoolProxy proxy)
                                      throws java.sql.SQLException
        Registers a database pool proxy.
        Parameters:
        proxy - The proxy.
        Throws:
        java.sql.SQLException - For connection, class loader or instantiation failures.
        java.lang.SecurityException - If caller is not allowed.
      • getConnectionPool

        public static IDBConnectionPool getConnectionPool​(IFileURLResolver fileURLResolver)
                                                   throws java.sql.SQLException
        Creates the connection pool.
        Parameters:
        fileURLResolver - File resolver from an URL.
        Returns:
        The connection pool.
        Throws:
        java.sql.SQLException - For connection, class loader or instantiation failures.
        java.lang.SecurityException - If the caller is not allowed to access the server database connection pool.
      • areTablesCreated

        public static boolean areTablesCreated​(java.sql.Connection conn,
                                               java.lang.String schema,
                                               java.lang.String table)
        Checks if the tables already are created.
        Parameters:
        conn - The connection.
        schema - The schema.
        table - The table.
        Returns:
        true if the IZS.USERS table exist with at least one user.
      • getServerDatabaseReady

        public static int getServerDatabaseReady()
        Returns whether the Server internal database is ready for use, i.e. database server potentially started and the connection pool ready.
        Returns:
        The codes are:
        1 = started and ready,
        0 = starting or will start and not ready; and
        -1 = failed starting and ready won't start, i.e. server database has failed and server will exit.
      • getPooledConnection

        public static java.sql.Connection getPooledConnection()
                                                       throws java.sql.SQLException
        Gets a pooled connection for user processing to the internal server database.
        Returns:
        The pooled connection that MUST be released and not closed.
        Throws:
        java.sql.SQLException - For SQL errors.
      • createTables

        public static void createTables​(java.sql.Connection conn)
                                 throws java.sql.SQLException
        Creates the tables.
        Parameters:
        conn - The connection.
        Throws:
        java.sql.SQLException - For SQL errors.
      • createTables

        public static void createTables​(java.sql.Connection conn,
                                        java.io.InputStream in)
                                 throws java.sql.SQLException
        Creates the tables.

        The length of a MySQL TEXT when creating a Derby table using VARCHAR instead is set to 4096. Use the method {@link #createTables(int, Connection, InputStream, Charset, int)} to specify another length.

        The Database Flavor is assumed to be the one from the iizi Internal Database pool.

        Parameters:
        conn - The connection.
        in - Input stream to a "createTables.sql" file. The input stream is closed regardless of exceptions. The input stream is processed using UTF-8.
        Throws:
        java.sql.SQLException - For SQL errors.
      • createTables

        public static void createTables​(int jdbcFlavor,
                                        java.sql.Connection conn,
                                        java.io.InputStream in,
                                        java.nio.charset.Charset charSet,
                                        int textLength)
                                 throws java.sql.SQLException
        Creates the tables.
        Parameters:
        jdbcFlavor - The JDBC flavor used to convert SQL statements between Database Flavors, accepted values:
        conn - The connection.
        in - Input stream to a "createTables.sql" file. The input stream is closed regardless of exceptions. The input stream is processed using UTF-8.
        textLength - The length of a MySQL TEXT when creating a Derby table using VARCHAR instead.
        Throws:
        java.sql.SQLException - For SQL errors.
      • createTables

        public static void createTables​(java.sql.Connection conn,
                                        java.io.InputStream in,
                                        java.lang.String originalSchema,
                                        java.lang.String newSchema)
                                 throws java.sql.SQLException
        Creates the tables with a change of the schema from "original" to "new".
        Parameters:
        conn - The connection.
        in - Input stream to a "createTables.sql" file. The input stream is closed regardless of exceptions.
        originalSchema - The original schema name (upper case).
        newSchema - The new schema name (upper case).
        Throws:
        java.sql.SQLException - For SQL errors.