Class ResourceKeyspacePopulator

java.lang.Object
org.springframework.data.cassandra.core.cql.session.init.ResourceKeyspacePopulator
All Implemented Interfaces:
KeyspacePopulator

public class ResourceKeyspacePopulator extends Object implements KeyspacePopulator
Populates, initializes, or cleans up a keyspace using CQL scripts defined in external resources.
Since:
3.0
Author:
Mark Paluch
See Also:
  • Constructor Details

    • ResourceKeyspacePopulator

      public ResourceKeyspacePopulator()
      Construct a new ResourceKeyspacePopulator with default settings.
    • ResourceKeyspacePopulator

      public ResourceKeyspacePopulator(Resource... scripts)
      Construct a new ResourceKeyspacePopulator with default settings for the supplied scripts.
      Parameters:
      scripts - the scripts to execute to initialize or clean up the database (never null)
    • ResourceKeyspacePopulator

      public ResourceKeyspacePopulator(boolean continueOnError, boolean ignoreFailedDrops, @Nullable String cqlScriptEncoding, Resource... scripts)
      Construct a new ResourceKeyspacePopulator with the supplied values.
      Parameters:
      continueOnError - flag to indicate that all failures in CQL should be logged but not cause a failure
      ignoreFailedDrops - flag to indicate that a failed CQL DROP statement can be ignored
      cqlScriptEncoding - the encoding for the supplied CQL scripts (may be null or empty to indicate platform encoding)
      scripts - the scripts to execute to initialize or clean up the database (never null)
  • Method Details

    • addScript

      public void addScript(Resource script)
      Add a script to execute to initialize or clean up the database.
      Parameters:
      script - the path to an CQL script (never null).
    • addScripts

      public void addScripts(Resource... scripts)
      Add multiple scripts to execute to initialize or clean up the database.
      Parameters:
      scripts - the scripts to execute (never null).
    • setScripts

      public void setScripts(Resource... scripts)
      Set the scripts to execute to initialize or clean up the database, replacing any previously added scripts.
      Parameters:
      scripts - the scripts to execute (never null).
    • setCqlScriptEncoding

      public void setCqlScriptEncoding(@Nullable String cqlScriptEncoding)
      Specify the encoding for the configured CQL scripts, if different from the platform encoding.
      Parameters:
      cqlScriptEncoding - the encoding used in scripts (may be null or empty to indicate platform encoding).
      See Also:
    • setSeparator

      public void setSeparator(String separator)
      Specify the statement separator, if a custom one.

      Defaults to ";" if not specified and falls back to "\n" as a last resort; may be set to ScriptUtils.EOF_STATEMENT_SEPARATOR to signal that each script contains a single statement without a separator.

      Parameters:
      separator - the script statement separator.
    • setCommentPrefix

      public void setCommentPrefix(String commentPrefix)
      Set the prefix that identifies single-line comments within the CQL scripts.

      Defaults to "--".

      Parameters:
      commentPrefix - the prefix for single-line comments.
      See Also:
    • setCommentPrefixes

      public void setCommentPrefixes(String... commentPrefixes)
      Set the prefixes that identify single-line comments within the CQL scripts.

      Defaults to ["--"].

      Parameters:
      commentPrefixes - the prefixes for single-line comments.
    • setBlockCommentStartDelimiter

      public void setBlockCommentStartDelimiter(String blockCommentStartDelimiter)
      Set the start delimiter that identifies block comments within the CQL scripts.

      Defaults to "/*".

      Parameters:
      blockCommentStartDelimiter - the start delimiter for block comments (never null or empty).
      See Also:
    • setBlockCommentEndDelimiter

      public void setBlockCommentEndDelimiter(String blockCommentEndDelimiter)
      Set the end delimiter that identifies block comments within the CQL scripts.

      Defaults to "*/".

      Parameters:
      blockCommentEndDelimiter - the end delimiter for block comments (never null or empty).
      See Also:
    • setContinueOnError

      public void setContinueOnError(boolean continueOnError)
      Flag to indicate that all failures in CQL should be logged but not cause a failure.

      Defaults to false.

      Parameters:
      continueOnError - true if script execution should continue on error
    • setIgnoreFailedDrops

      public void setIgnoreFailedDrops(boolean ignoreFailedDrops)
      Flag to indicate that a failed CQL DROP statement can be ignored.

      This is useful for a non-embedded database whose CQL dialect does not support an IF EXISTS clause in a DROP statement.

      The default is false so that if the populator runs accidentally, it will fail fast if a script starts with a DROP statement.

      Parameters:
      ignoreFailedDrops - true if failed drop statements should be ignored.
    • populate

      public void populate(com.datastax.oss.driver.api.core.CqlSession session) throws ScriptException
      Description copied from interface: KeyspacePopulator
      Populate, initialize, or clean up the database using the provided CqlSession connection.

      Concrete implementations may throw a RuntimeException if an error is encountered but are strongly encouraged to throw a specific ScriptException instead. For example, Spring's ResourceKeyspacePopulator wrap all exceptions in ScriptExceptions.

      Specified by:
      populate in interface KeyspacePopulator
      Parameters:
      session - the CQL CqlSession to use to populate the keyspace; already configured and ready to use; never null
      Throws:
      ScriptException - in all other error cases
    • execute

      public void execute(SessionFactory sessionFactory) throws ScriptException
      Execute this ResourceKeyspacePopulator against the given SessionFactory.
      Parameters:
      sessionFactory - the SessionFactory to execute against (never null)
      Throws:
      ScriptException - if an error occurs
      See Also: