Package com.isomorphic.tools

# Class DataSourceTools

java.lang.Object
com.isomorphic.base.Base
com.isomorphic.tools.DataSourceTools

All Implemented Interfaces:
  `com.isomorphic.base.IAutoConfigurable`

public class DataSourceTools extends com.isomorphic.base.Base
`DataSourceTools` provides a number of static utility methods for generating DataSource information from other metadata (database tables, Hibernate mappings and Reflection on existing Java classes)

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `DataSourceTools.CopyDataSourceResult`
  Result object for `copyRecords(String, String, CopyOptions)`.
  `static final class`
  `DataSourceTools.ExportDataSourceResult`
  Result object for `exportRecordsToFile(DataSource, ExportOptions)`.
  `static enum`
  `DataSourceTools.ExportFormat`
  Output format for exportRecordsToFile(DataSource, ExportFormat, ExportOptions).
  `static final class`
  `DataSourceTools.ExportOptions`
  Options for exportRecordsToFile(DataSource, ExportOptions).
  `static final class`
  `DataSourceTools.ExportRecordsResult`
  Result object for stream-based `exportRecords(java.lang.String, java.io.Writer, com.isomorphic.tools.DataSourceTools.ExportFormat, java.lang.String, java.lang.Integer, java.lang.Integer)` operations.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DataSourceTools.CopyDataSourceResult`
  `copyRecords(DataSource sourceDS, DataSource targetDS, com.isomorphic.tools.DataSourceTools.CopyOptions options)`
  Copies records from a source DataSource to a target DataSource.
  `static DataSourceTools.CopyDataSourceResult`
  `copyRecords(String sourceDS, String targetDS, com.isomorphic.tools.DataSourceTools.CopyOptions options)`
  Copies records from a source DataSource to a target DataSource.
  `static DataSourceTools.ExportRecordsResult`
  `exportRecords(DataSource ds, Writer writer, DataSourceTools.ExportFormat format, String recordTag, Integer maxRows, Integer pageSize)`
  Exports records from a DataSource to a Writer in the specified format.
  `static DataSourceTools.ExportRecordsResult`
  `exportRecords(String dsId, Writer writer, DataSourceTools.ExportFormat format, String recordTag, Integer maxRows, Integer pageSize)`
  Exports records from a DataSource to a Writer in the specified format.
  `static DataSourceTools.ExportDataSourceResult`
  `exportRecordsToFile(DataSource ds, DataSourceTools.ExportOptions options)`
  Exports the given DataSource to a single output file under webRoot by paging through fetch().
  `static DataSourceTools.ExportDataSourceResult`
  `exportRecordsToFile(String dsId, DataSourceTools.ExportOptions options)`
  Loads a DataSource by ID and exports it to disk under webRoot.
  `static Map`
  `getDataSourceConfigFromHibernateMapping(String entityName)`
  Returns the DataSource configuration map derived from the given Hibernate mapping
  `static Object`
  `getDataSourceConfigFromJavaClass(String className)`
  Returns the DataSource configuration map derived by applying Reflection to the given Java class
  `static Map`
  `getDataSourceConfigFromJPAClass(String className)`
  Returns the DataSource configuration map derived from the given JPA-mapped class
  `static Map`
  `getDataSourceConfigFromTable(String tableName, String schema, String serverType, String dbName, String timestampType, boolean returnSQLTypes)`
  Returns the DataSource configuration map derived from the given database table

- ## Method Details

  - ### getDataSourceConfigFromTable

    public static Map getDataSourceConfigFromTable(String tableName, String schema, String serverType, String dbName, String timestampType, boolean returnSQLTypes) throws Exception
    Returns the DataSource configuration map derived from the given database table

    Parameters:
      `tableName` - the name of the table
      `schema` - the name of the database schema. Some databases require this, others do not; indeed, some do not recognize the concept
      `serverType` - "sql" or "hibernate", how to obtain a database connection
      `dbName` - For "sql" types only, the database to connect to
      `timestampType` - The SmartClient field type to use when mapping SQL columns of type TIMESTAMP. Must be "date", "datetime" or "time"; defaults to "datetime".
    Returns:
      The DataSource configuration map, or null if the configuration could not be derived (for example, because the table did not exist)
    Throws:
      `Exception`

  - ### getDataSourceConfigFromHibernateMapping

    public static Map getDataSourceConfigFromHibernateMapping(String entityName) throws Exception
    Returns the DataSource configuration map derived from the given Hibernate mapping

    Parameters:
      `entityName` - the "entity-name" of the Hibernate mapping
    Returns:
      The DataSource configuration map, or null if the given entity name was not found
    Throws:
      `Exception`

  - ### getDataSourceConfigFromJPAClass

    public static Map getDataSourceConfigFromJPAClass(String className) throws Exception
    Returns the DataSource configuration map derived from the given JPA-mapped class

    Parameters:
      `className` - the name of JPA-mapped class
    Returns:
      The DataSource configuration map, or null if the given class name was not found
    Throws:
      `Exception`

  - ### getDataSourceConfigFromJavaClass

    public static Object getDataSourceConfigFromJavaClass(String className) throws Exception
    Returns the DataSource configuration map derived by applying Reflection to the given Java class

    Parameters:
      `className` - the fully-qualified class name (eg, com.somecompany.SomeClass)
    Returns:
      The DataSource configuration map, or null if the given class was not found
    Throws:
      `Exception`

  - ### copyRecords

    public static DataSourceTools.CopyDataSourceResult copyRecords(String sourceDS, String targetDS, com.isomorphic.tools.DataSourceTools.CopyOptions options) throws Exception
    Copies records from a source DataSource to a target DataSource.

    Fetches all records from the source DataSource and adds them to the target DataSource. Fields in the source records that are not present in the target DataSource are filtered out.

    Parameters:
      `sourceDS` - Name of the source DataSource
      `targetDS` - Name of the target DataSource
      `options` - Copy options including pageSize, transactionMode, stopOnError, and streamResults
    Returns:
      Result of the copy operation, including stats and any failures
    Throws:
      `Exception` - if either DataSource cannot be loaded or other errors occur

  - ### copyRecords

    public static DataSourceTools.CopyDataSourceResult copyRecords(DataSource sourceDS, DataSource targetDS, com.isomorphic.tools.DataSourceTools.CopyOptions options) throws Exception
    Copies records from a source DataSource to a target DataSource.

    Fetches all records from the source DataSource and adds them to the target DataSource. Fields in the source records that are not present in the target DataSource are filtered out.

    Parameters:
      `sourceDS` - instance of source DataSource
      `targetDS` - instance of target DataSource
      `options` - Copy options including pageSize, transactionMode, stopOnError, and streamResults
    Returns:
      Result of the copy operation, including stats and any failures
    Throws:
      `Exception` - if either DataSource cannot be loaded or other errors occur

  - ### exportRecords

    public static DataSourceTools.ExportRecordsResult exportRecords(String dsId, Writer writer, DataSourceTools.ExportFormat format, String recordTag, Integer maxRows, Integer pageSize) throws Exception
    Exports records from a DataSource to a Writer in the specified format.

    This is the core export method that writes to any Writer (HTTP response, file, string, etc.). Use `exportRecordsToFile(java.lang.String, com.isomorphic.tools.DataSourceTools.ExportOptions)` for filesystem-based export.

    Parameters:
      `dsId` - DataSource ID
      `writer` - Writer to write records to (JSON or XML)
      `format` - Export format (JSON or XML)
      `recordTag` - XML record tag name (ignored for JSON, can be null)
      `maxRows` - Maximum number of rows to export (null = all rows)
      `pageSize` - Fetch page size (null = default 500)
    Returns:
      Export result with statistics
    Throws:
      `Exception` - if DataSource not found or export fails

  - ### exportRecords

    public static DataSourceTools.ExportRecordsResult exportRecords(DataSource ds, Writer writer, DataSourceTools.ExportFormat format, String recordTag, Integer maxRows, Integer pageSize) throws Exception
    Exports records from a DataSource to a Writer in the specified format.

    This is the core export method that writes to any Writer (HTTP response, file, string, etc.). Use `exportRecordsToFile(java.lang.String, com.isomorphic.tools.DataSourceTools.ExportOptions)` for filesystem-based export.

    Parameters:
      `ds` - DataSource instance
      `writer` - Writer to write records to (JSON or XML)
      `format` - Export format (JSON or XML)
      `recordTag` - XML record tag name (ignored for JSON, can be null)
      `maxRows` - Maximum number of rows to export (null = all rows)
      `pageSize` - Fetch page size (null = default 500)
    Returns:
      Export result with statistics
    Throws:
      `Exception` - if export fails

  - ### exportRecordsToFile

    public static DataSourceTools.ExportDataSourceResult exportRecordsToFile(String dsId, DataSourceTools.ExportOptions options) throws Exception
    Loads a DataSource by ID and exports it to disk under webRoot.
    Throws:
      `Exception`

  - ### exportRecordsToFile

    public static DataSourceTools.ExportDataSourceResult exportRecordsToFile(DataSource ds, DataSourceTools.ExportOptions options) throws Exception
    Exports the given DataSource to a single output file under webRoot by paging through fetch().

    This is a filesystem-writing API. Use `exportRecords(java.lang.String, java.io.Writer, com.isomorphic.tools.DataSourceTools.ExportFormat, java.lang.String, java.lang.Integer, java.lang.Integer)` to write to any Writer/OutputStream.

    Throws:
      `Exception`