Package org.h2.engine

Class ConnectionInfo

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class ConnectionInfo
    extends java.lang.Object
    implements java.lang.Cloneable
    Encapsulates the connection settings, including user name and password.
    • Constructor Summary

      Constructors 
      Constructor Description
      ConnectionInfo​(java.lang.String name)
      Create a connection info object.
      ConnectionInfo​(java.lang.String u, java.util.Properties info, java.lang.String user, java.lang.Object password)
      Create a connection info object.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void cleanAuthenticationInfo()
      Clear authentication properties.
      ConnectionInfo clone()  
      private void convertPasswords()
      Split the password property into file password and user password if necessary, and convert them to the internal hash format.
      DbSettings getDbSettings()  
      (package private) byte[] getFileEncryptionKey()  
      byte[] getFilePasswordHash()
      Get the file password hash if it is set.
      (package private) DbException getFormatException()
      Generate a URL format exception.
      (package private) int getIntProperty​(int setting, int defaultValue)
      Get the value of the given property.
      (package private) java.lang.String[] getKeys()
      Get the property keys.
      java.lang.String getName()
      Get the unique and normalized database name (excluding settings).
      NetworkConnectionInfo getNetworkConnectionInfo()
      Returns the network connection information, or null.
      java.lang.String getOriginalURL()
      Get the complete original database URL.
      (package private) java.lang.String getProperty​(int setting, java.lang.String defaultValue)
      Get the value of the given property.
      (package private) java.lang.String getProperty​(java.lang.String key)
      Get the value of the given property.
      boolean getProperty​(java.lang.String key, boolean defaultValue)
      Get a boolean property if it is set and return the value.
      (package private) int getProperty​(java.lang.String key, int defaultValue)
      Get the value of the given property.
      java.lang.String getProperty​(java.lang.String key, java.lang.String defaultValue)
      Get the value of the given property.
      TimeZoneProvider getTimeZone()
      Returns the time zone.
      java.lang.String getURL()
      Get the database URL.
      java.lang.String getUserName()
      Get the name of the user.
      (package private) byte[] getUserPasswordHash()
      Get the user password hash.
      private static byte[] hashPassword​(boolean passwordHash, java.lang.String userName, char[] password)  
      static boolean isIgnoredByParser​(java.lang.String name)
      Returns whether setting with the specified name should be ignored by parser.
      private static boolean isKnownSetting​(java.lang.String s)  
      boolean isPersistent()
      Check if the referenced database is persistent.
      boolean isRemote()
      Check if this is a remote connection.
      (package private) boolean isSSL()
      Check if this is a remote connection with SSL enabled.
      (package private) boolean isUnnamedInMemory()
      Check if the referenced database is an unnamed in-memory database.
      private void parseName()  
      private void preservePasswordForAuthentication​(java.lang.Object password)  
      private void readProperties​(java.util.Properties info)  
      private void readSettingsFromURL()  
      private static java.lang.String remapURL​(java.lang.String url)  
      private char[] removePassword()  
      boolean removeProperty​(java.lang.String key, boolean defaultValue)
      Remove a boolean property if it is set and return the value.
      (package private) java.lang.String removeProperty​(java.lang.String key, java.lang.String defaultValue)
      Remove a String property if it is set and return the value.
      void setBaseDir​(java.lang.String dir)
      Set the base directory of persistent databases, unless the database is in the user home folder (~).
      void setFileEncryptionKey​(byte[] key)  
      void setFilePasswordHash​(byte[] hash)
      Set the file password hash.
      void setNetworkConnectionInfo​(NetworkConnectionInfo networkConnectionInfo)
      Sets the network connection information.
      void setOriginalURL​(java.lang.String url)
      Set the original database URL.
      void setProperty​(java.lang.String key, java.lang.String value)
      Overwrite a property.
      void setServerKey​(java.lang.String serverKey)
      Switch to server mode, and set the server name and database key.
      void setUserName​(java.lang.String name)
      Overwrite the user name.
      void setUserPasswordHash​(byte[] hash)
      Set the user password hash.
      • Methods inherited from class java.lang.Object

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

      • KNOWN_SETTINGS

        private static final java.util.HashSet<java.lang.String> KNOWN_SETTINGS
      • IGNORED_BY_PARSER

        private static final java.util.HashSet<java.lang.String> IGNORED_BY_PARSER
      • prop

        private java.util.Properties prop
      • originalURL

        private java.lang.String originalURL
      • url

        private java.lang.String url
      • user

        private java.lang.String user
      • filePasswordHash

        private byte[] filePasswordHash
      • fileEncryptionKey

        private byte[] fileEncryptionKey
      • userPasswordHash

        private byte[] userPasswordHash
      • name

        private java.lang.String name
        The database name
      • nameNormalized

        private java.lang.String nameNormalized
      • remote

        private boolean remote
      • ssl

        private boolean ssl
      • persistent

        private boolean persistent
      • unnamed

        private boolean unnamed
    • Constructor Detail

      • ConnectionInfo

        public ConnectionInfo​(java.lang.String name)
        Create a connection info object.
        Parameters:
        name - the database name (including tags), but without the "jdbc:h2:" prefix
      • ConnectionInfo

        public ConnectionInfo​(java.lang.String u,
                              java.util.Properties info,
                              java.lang.String user,
                              java.lang.Object password)
        Create a connection info object.
        Parameters:
        u - the database URL (must start with jdbc:h2:)
        info - the connection properties or null
        user - the user name or null
        password - the password as String or char[], or null
    • Method Detail

      • isKnownSetting

        private static boolean isKnownSetting​(java.lang.String s)
      • isIgnoredByParser

        public static boolean isIgnoredByParser​(java.lang.String name)
        Returns whether setting with the specified name should be ignored by parser.
        Parameters:
        name - the name of the setting
        Returns:
        whether setting with the specified name should be ignored by parser
      • clone

        public ConnectionInfo clone()
                             throws java.lang.CloneNotSupportedException
        Overrides:
        clone in class java.lang.Object
        Throws:
        java.lang.CloneNotSupportedException
      • parseName

        private void parseName()
      • setBaseDir

        public void setBaseDir​(java.lang.String dir)
        Set the base directory of persistent databases, unless the database is in the user home folder (~).
        Parameters:
        dir - the new base directory
      • isRemote

        public boolean isRemote()
        Check if this is a remote connection.
        Returns:
        true if it is
      • isPersistent

        public boolean isPersistent()
        Check if the referenced database is persistent.
        Returns:
        true if it is
      • isUnnamedInMemory

        boolean isUnnamedInMemory()
        Check if the referenced database is an unnamed in-memory database.
        Returns:
        true if it is
      • readProperties

        private void readProperties​(java.util.Properties info)
      • readSettingsFromURL

        private void readSettingsFromURL()
      • preservePasswordForAuthentication

        private void preservePasswordForAuthentication​(java.lang.Object password)
      • removePassword

        private char[] removePassword()
      • convertPasswords

        private void convertPasswords()
        Split the password property into file password and user password if necessary, and convert them to the internal hash format.
      • hashPassword

        private static byte[] hashPassword​(boolean passwordHash,
                                           java.lang.String userName,
                                           char[] password)
      • getProperty

        public boolean getProperty​(java.lang.String key,
                                   boolean defaultValue)
        Get a boolean property if it is set and return the value.
        Parameters:
        key - the property name
        defaultValue - the default value
        Returns:
        the value
      • removeProperty

        public boolean removeProperty​(java.lang.String key,
                                      boolean defaultValue)
        Remove a boolean property if it is set and return the value.
        Parameters:
        key - the property name
        defaultValue - the default value
        Returns:
        the value
      • removeProperty

        java.lang.String removeProperty​(java.lang.String key,
                                        java.lang.String defaultValue)
        Remove a String property if it is set and return the value.
        Parameters:
        key - the property name
        defaultValue - the default value
        Returns:
        the value
      • getName

        public java.lang.String getName()
        Get the unique and normalized database name (excluding settings).
        Returns:
        the database name
      • getFilePasswordHash

        public byte[] getFilePasswordHash()
        Get the file password hash if it is set.
        Returns:
        the password hash or null
      • getFileEncryptionKey

        byte[] getFileEncryptionKey()
      • getUserName

        public java.lang.String getUserName()
        Get the name of the user.
        Returns:
        the user name
      • getUserPasswordHash

        byte[] getUserPasswordHash()
        Get the user password hash.
        Returns:
        the password hash
      • getKeys

        java.lang.String[] getKeys()
        Get the property keys.
        Returns:
        the property keys
      • getProperty

        java.lang.String getProperty​(java.lang.String key)
        Get the value of the given property.
        Parameters:
        key - the property key
        Returns:
        the value as a String
      • getProperty

        int getProperty​(java.lang.String key,
                        int defaultValue)
        Get the value of the given property.
        Parameters:
        key - the property key
        defaultValue - the default value
        Returns:
        the value as a String
      • getProperty

        public java.lang.String getProperty​(java.lang.String key,
                                            java.lang.String defaultValue)
        Get the value of the given property.
        Parameters:
        key - the property key
        defaultValue - the default value
        Returns:
        the value as a String
      • getProperty

        java.lang.String getProperty​(int setting,
                                     java.lang.String defaultValue)
        Get the value of the given property.
        Parameters:
        setting - the setting id
        defaultValue - the default value
        Returns:
        the value as a String
      • getIntProperty

        int getIntProperty​(int setting,
                           int defaultValue)
        Get the value of the given property.
        Parameters:
        setting - the setting id
        defaultValue - the default value
        Returns:
        the value as an integer
      • isSSL

        boolean isSSL()
        Check if this is a remote connection with SSL enabled.
        Returns:
        true if it is
      • setUserName

        public void setUserName​(java.lang.String name)
        Overwrite the user name. The user name is case-insensitive and stored in uppercase. English conversion is used.
        Parameters:
        name - the user name
      • setUserPasswordHash

        public void setUserPasswordHash​(byte[] hash)
        Set the user password hash.
        Parameters:
        hash - the new hash value
      • setFilePasswordHash

        public void setFilePasswordHash​(byte[] hash)
        Set the file password hash.
        Parameters:
        hash - the new hash value
      • setFileEncryptionKey

        public void setFileEncryptionKey​(byte[] key)
      • setProperty

        public void setProperty​(java.lang.String key,
                                java.lang.String value)
        Overwrite a property.
        Parameters:
        key - the property name
        value - the value
      • getURL

        public java.lang.String getURL()
        Get the database URL.
        Returns:
        the URL
      • getOriginalURL

        public java.lang.String getOriginalURL()
        Get the complete original database URL.
        Returns:
        the database URL
      • setOriginalURL

        public void setOriginalURL​(java.lang.String url)
        Set the original database URL.
        Parameters:
        url - the database url
      • getTimeZone

        public TimeZoneProvider getTimeZone()
        Returns the time zone.
        Returns:
        the time zone
      • getFormatException

        DbException getFormatException()
        Generate a URL format exception.
        Returns:
        the exception
      • setServerKey

        public void setServerKey​(java.lang.String serverKey)
        Switch to server mode, and set the server name and database key.
        Parameters:
        serverKey - the server name, '/', and the security key
      • getNetworkConnectionInfo

        public NetworkConnectionInfo getNetworkConnectionInfo()
        Returns the network connection information, or null.
        Returns:
        the network connection information, or null
      • setNetworkConnectionInfo

        public void setNetworkConnectionInfo​(NetworkConnectionInfo networkConnectionInfo)
        Sets the network connection information.
        Parameters:
        networkConnectionInfo - the network connection information
      • getDbSettings

        public DbSettings getDbSettings()
      • remapURL

        private static java.lang.String remapURL​(java.lang.String url)
      • cleanAuthenticationInfo

        public void cleanAuthenticationInfo()
        Clear authentication properties.