Interface Domain

All Known Implementing Classes:
DefaultDomain, TestDomain

public interface Domain
Represents an application domain model, entities, reports and database operations.
  • Method Details

    • type

      DomainType type()
      Returns:
      the domain type identifying this domain model
    • entities

      Entities entities()
      Returns:
      the Domain entities
    • reports

      Map<ReportType<?,?,?>,Report<?,?,?>> reports()
      Returns:
      an unmodifiable view of this domain's reports
    • procedures

      Map<ProcedureType<?,?>,DatabaseProcedure<?,?>> procedures()
      Returns:
      an unmodifiable view of this domain's procedures
    • functions

      Map<FunctionType<?,?,?>,DatabaseFunction<?,?,?>> functions()
      Returns:
      an unmodifiable view of this domain's functions
    • report

      <T, R, P> Report<T,R,P> report(ReportType<T,R,P> reportType)
      Retrieves the report of the given type.
      Type Parameters:
      T - the report type
      R - the report result type
      P - the report parameters type
      Parameters:
      reportType - the report type
      Returns:
      the report
      Throws:
      IllegalArgumentException - in case the report is not found
    • procedure

      <C, T> DatabaseProcedure<C,T> procedure(ProcedureType<C,T> procedureType)
      Retrieves the procedure of the given type.
      Type Parameters:
      C - the type of the database connection this procedure requires
      T - the argument type
      Parameters:
      procedureType - the procedure type
      Returns:
      the procedure
      Throws:
      IllegalArgumentException - in case the procedure is not found
    • function

      <C, T, R> DatabaseFunction<C,T,R> function(FunctionType<C,T,R> functionType)
      Retrieves the function of the given type.
      Type Parameters:
      C - the type of the database connection this function requires
      T - the argument type
      R - the result type
      Parameters:
      functionType - the function type
      Returns:
      the function
      Throws:
      IllegalArgumentException - in case the function is not found
    • configureConnection

      default void configureConnection(DatabaseConnection connection) throws DatabaseException
      Configures a database connection for applications using this domain model, for example adding extensions or properties. Called each time a new connection based on this domain is created.
      Parameters:
      connection - the connection to configure
      Throws:
      DatabaseException - in case of an exception
    • configureDatabase

      default void configureDatabase(Database database) throws DatabaseException
      Configures a database, for example run migration scripts. Only called once per database instance.
      Parameters:
      database - the database
      Throws:
      DatabaseException - in case of an exception
    • domains

      static List<Domain> domains()
      Returns:
      a list containing all the Domains registered with ServiceLoader.