com.isomorphic.jpa

## Class GAEJPADataSource

- com.isomorphic.datasource.DataSource
- - com.isomorphic.datasource.BasicDataSource
  - - com.isomorphic.jpa.JPADataSource
    - - com.isomorphic.jpa.GAEJPADataSource

- All Implemented Interfaces:
    IToJSON, RPCManagerCompletionCallback

      public class GAEJPADataSource
      extends JPADataSource

  Server side implementation of JPA 1.0 data source under Google Application Engine.

  There are four main differences:
  - GAE supports queries with `LIKE` clause only with single wildcard at the end thus `TextMatchStyle.SUBSTRING` works exactly as `TextMatchStyle.STARTS_WITH`
  - GAE does not support `upper()/lower()`. Search queries are always case sensitive.
  - Exact match is used when comparing number fields.
  - GAE does not support `FetchType.EAGER`. Every method should initialize lazily loaded properties of every entity loaded from data source.
  This class implements only simple search criteria.

  Implementation is not thread-safe. Data source acquiring mechanism ensures that single instance of this class will be used in one thread only.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static boolean` | `BIGTABLE_ACTIVE` Holds `true` if running under Google Application Engine BigTable; `false` if running under relational database.
    `static java.lang.String` | `GAE_RUNTIME_PROPERTY` Holds name of the system property to identity Google Application Engine runtime environment.
    `static java.lang.String` | `GAE_VERSION_PROPERTY` Holds name of the system property to identity Google Application Engine runtime version.

    - ### Fields inherited from class com.isomorphic.jpa.JPADataSource

      `additionalFields, AUTO_DERIVE_PROPERTY, BEAN_CLASS_PROPERTY, beanClass, beanName, configName, connectionHolder, em, ESCAPE_CHARACTER, generateRelatedUpdates, ID_CLASS_PROPERTY, idClass, JPA_CONFIG_PROPERTY, relatedUpdates, SCHEMA_BEAN_PROPERTY, shouldRollBackTransaction, strictSQLFiltering, tx, USE_QUALIFIED_CLASS_NAME_PROPERTY, useQualifiedClassName`

    - ### Fields inherited from class com.isomorphic.datasource.DataSource

      `inInitState, OP_ADD, OP_CLIENT_EXPORT, OP_CUSTOM, OP_FETCH, OP_FILE_SOURCE, OP_GET_FILE, OP_HAS_FILE, OP_LIST_FILES, OP_REMOVE, OP_REMOVE_FILE, OP_RENAME_FILE, OP_SAVE_FILE, OP_UPDATE, OP_VALIDATE`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Map` | `deriveDS(java.lang.String schemaBean, java.lang.String id, boolean extended)` Creates data source configuration from specified fully qualified class name.
    `DSResponse` | `executeAdd(DSRequest req)` This method is called by DataSource.execute() for "add" operations.
    `DSResponse` | `executeFetch(DSRequest req)` This method is called by DataSource.execute() for "fetch" operations.
    `DSResponse` | `executeUpdate(DSRequest req)` This method is called by DataSource.execute() for "update" operations.

    - ### Methods inherited from class com.isomorphic.jpa.JPADataSource

      `escapeValueForFilter, execute, executeRemove, freeResources, getField, getFieldNames, getTransactionObjectKey, increaseOpCount, init, markTransactionForRollBack, onFailure, onFailure, onSuccess, onSuccess`

    - ### Methods inherited from class com.isomorphic.datasource.BasicDataSource

      `getAuditDataSource, getProperty, shouldAutoJoinTransaction, shouldAutoStartTransaction, transformMultipleFields, transformMultipleFields`

    - ### Methods inherited from class com.isomorphic.datasource.DataSource

      `add, addDynamicDSGenerator, addDynamicDSGenerator, addDynamicDSGenerator, clearDynamicDSGenerators, executeClientExport, executeCustom, executeFileSource, fetch, fetch, fetchById, fetchSingle, fetchSingle, filter, filter, fromXML, fromXML, fromXML, fromXML, fromXML, fromXML, fromXML, fromXML, getAuditRevisionFieldName, getAuditTimestampFieldName, getAuditTypeFieldName, getAuditUserFieldName, getDefaultDynamicDSGenerator, getDynamicDSGenerators, getEnumConstantProperty, getEnumOrdinalProperty, getEnumTranslateStrategy, getFieldNames, getFile, getFileAsInputStream, getFileAsString, getFileContentsField, getFileFormatField, getFileNameField, getFileTypeField, getListProperties, getListProperties, getPrimaryKey, getProperties, getProperties, getProperties, getPropertyJavaClass, getRecordXPath, getTransactionObject, getTransactionObject, hasFile, hasRecord, hasRecord, initialized, isModificationOperation, isServerOnly, listFiles, listFiles, remove, removeDynamicDSGenerator, removeDynamicDSGenerator, removeDynamicDSGenerator, removeFile, renameFile, saveFile, setEnumConstantProperty, setEnumOrdinalProperty, setEnumTranslateStrategy, setProperties, update, validate`

    - ### Methods inherited from interface com.isomorphic.js.IToJSON

      `toJSON`

- - ### Field Detail

    - #### GAE_VERSION_PROPERTY

          public static final java.lang.String GAE_VERSION_PROPERTY

      Holds name of the system property to identity Google Application Engine runtime version.
      See Also:
        Constant Field Values

    - #### GAE_RUNTIME_PROPERTY

          public static final java.lang.String GAE_RUNTIME_PROPERTY

      Holds name of the system property to identity Google Application Engine runtime environment. Possible values are:
      - Production when running on App Engine
      - Development when running in the development server
      See Also:
        Constant Field Values

    - #### BIGTABLE_ACTIVE

          public static final boolean BIGTABLE_ACTIVE

      Holds `true` if running under Google Application Engine BigTable; `false` if running under relational database.

  - ### Method Detail

    - #### deriveDS

          public java.util.Map deriveDS(java.lang.String schemaBean,
                               java.lang.String id,
                               boolean extended)

      Description copied from class: `JPADataSource`
      Creates data source configuration from specified fully qualified class name.
      Overrides:
        `deriveDS` in class `JPADataSource`
      Parameters:
        `schemaBean` - `String` Fully qualified class name.
        `id` - `String` Id for newly created data source.
        `extended` - `boolean` Extended properties will be captured if set to `true`.
      Returns:
        `Map<String, Object>` created data source configuration or `null` if it can not be created.

    - #### executeFetch

          public DSResponse executeFetch(DSRequest req)
                                  throws java.lang.Exception

      Description copied from class: `DataSource`
      This method is called by DataSource.execute() for "fetch" operations. It is the appropriate override point if you wish to provide custom handling of a "fetch".
      Overrides:
        `executeFetch` in class `JPADataSource`
      Parameters:
        `req` - The DSRequest object representing this operation
      Returns:
        A valid DSResponse
      Throws:
        `java.lang.Exception`

    - #### executeAdd

          public DSResponse executeAdd(DSRequest req)
                                throws java.lang.Exception

      Description copied from class: `DataSource`
      This method is called by DataSource.execute() for "add" operations. It is the appropriate override point if you wish to provide custom handling of an "add".
      Overrides:
        `executeAdd` in class `JPADataSource`
      Parameters:
        `req` - The DSRequest object representing this operation
      Returns:
        A valid DSResponse
      Throws:
        `java.lang.Exception`

    - #### executeUpdate

          public DSResponse executeUpdate(DSRequest req)
                                   throws java.lang.Exception

      Description copied from class: `DataSource`
      This method is called by DataSource.execute() for "update" operations. It is the appropriate override point if you wish to provide custom handling of an "update".
      Overrides:
        `executeUpdate` in class `JPADataSource`
      Parameters:
        `req` - The DSRequest object representing this operation
      Returns:
        A valid DSResponse
      Throws:
        `java.lang.Exception`