Class DerbyMaster

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class DerbyMaster
    extends java.lang.Object
    implements java.lang.AutoCloseable
    Set up an instance of Derby for use with unit tests
    • Constructor Detail

      • DerbyMaster

        public DerbyMaster​(java.lang.String database)
        Public constructor
        Parameters:
        database -
        Throws:
        java.lang.IllegalStateException - if the Derby driver class is not found
    • Method Detail

      • createSchemaIfNeeded

        public void createSchemaIfNeeded​(java.lang.String schemaName)
        Derby setSchema fails if the schema doesn't exist, so we need to create that now in order for our connections to succeed when we build out the FHIR database
        Parameters:
        schemaName -
      • dropDatabase

        public static void dropDatabase​(java.lang.String database)
        Drop the contents of the database on disk. Must contain 'derby/' in the path as a simple check against accidentally wiping the wrong files
        Parameters:
        database -
      • getConnection

        public java.sql.Connection getConnection()
                                          throws java.sql.SQLException
        Get a connection to the configured Derby database, creating the database if necessary.
        Returns:
        Throws:
        java.sql.SQLException
      • getTranslator

        public IDatabaseTranslator getTranslator()
        Get the statement translator we use for Derby
        Returns:
      • createSchema

        public void createSchema​(IConnectionProvider pool,
                                 PhysicalDataModel pdm)
        Ask the schema to apply itself to our target (adapter pattern)
        Parameters:
        pool - the connection pool
        pdm - the data model to create
      • createSchema

        public void createSchema​(IConnectionProvider pool,
                                 IVersionHistoryService vhs,
                                 PhysicalDataModel pdm)
        Ask the schema to apply itself to our target (adapter pattern)
        Parameters:
        pool - the connection pool
        vhs - current version history service
        pdm - the data model we want to create
      • runWithAdapter

        public void runWithAdapter​(IConnectionProvider pool,
                                   java.util.function.Consumer<ISchemaAdapter> fn)
        Run the IDatabaseAdapter command fn using a DerbyAdapter for the given connection pool
        Parameters:
        pool - provides database connections
        fn - the command to execute
      • runWithAdapter

        public void runWithAdapter​(java.util.function.Consumer<ISchemaAdapter> fn)
        Run the function with an adapter configured for this database
        Parameters:
        fn -
      • wrap

        public static ISchemaAdapter wrap​(IDatabaseAdapter databaseAdapter)
        Utility method to wrap the database adapter in a plain schema adapter which acts as a pass-through to the underlying databaseAdapter
        Parameters:
        databaseAdapter -
        Returns:
      • dumpLockInfo

        public void dumpLockInfo()
        Diagnostic utility to display all the current locks in the Derby database
      • dumpLockInfo

        public static void dumpLockInfo​(java.sql.Connection c)
        Dump locks using the given connection
        Parameters:
        c -
      • close

        public void close()
                   throws java.lang.Exception
        Specified by:
        close in interface java.lang.AutoCloseable
        Throws:
        java.lang.Exception
      • shutdown

        public static void shutdown​(java.lang.String databaseName)