Class EntityEngineImpl

java.lang.Object
com.atlassian.jira.entity.EntityEngineImpl
All Implemented Interfaces:
EntityEngine

public class EntityEngineImpl extends Object implements EntityEngine
  • Constructor Details

    • EntityEngineImpl

      public EntityEngineImpl(OfBizDelegator ofBizDelegator)
  • Method Details

    • createValue

      public <E> E createValue(EntityFactory<E> entityFactory, E value)
      Description copied from interface: EntityEngine
      Creates a new Entity and auto populates the ID if no ID is explicitly set.

      Use this for entities that include an ID column (most of them).

      Specified by:
      createValue in interface EntityEngine
      Type Parameters:
      E - entity type
      Parameters:
      entityFactory - the EntityFactory
      value - the entity to be created.
      Returns:
      the newly created value (with the newly populated ID in it).
      See Also:
    • createValueWithoutId

      public <E> void createValueWithoutId(EntityFactory<E> entityFactory, E value)
      Description copied from interface: EntityEngine
      Creates a new Entity without trying to automatically populate the ID column.

      Use this for entities that don't have a numeric ID column.

      Specified by:
      createValueWithoutId in interface EntityEngine
      Type Parameters:
      E - entity type
      Parameters:
      entityFactory - the EntityFactory
      value - the entity to be created.
      See Also:
    • updateValue

      public <E> void updateValue(EntityFactory<E> entityFactory, E newValue)
      Specified by:
      updateValue in interface EntityEngine
    • execute

      public int execute(Update.WhereContext updateContext)
      Description copied from interface: EntityEngine
      Allows you to execute an UPDATE statement using a fluent interface.

      See the Update class for an example.

      Specified by:
      execute in interface EntityEngine
      Parameters:
      updateContext - build up a fluent UPDATE statement here. Should start with Update.into(
      Returns:
      the number of entities / DB rows deleted.
    • delete

      public int delete(Delete.DeleteWhereContext deleteContext)
      Description copied from interface: EntityEngine
      Allows you to execute an SQL DELETE using a fluent interface.

      You should call this using code that looks like:

           entityEngine.delete(Delete.from(Entity.ISSUE_SECURITY_LEVEL).whereIdEquals(securityLevelId));
       
      or:
           entityEngine.delete(
               Delete.from(Entity.ISSUE_SECURITY_LEVEL)
                     .whereEqual("scheme", schemeId)
                     .andEqual("name", name)
           );
       
      Specified by:
      delete in interface EntityEngine
      Parameters:
      deleteContext - build up a fluent DELETE statement here. Should start with Delete.from(
      Returns:
      the number of entities / DB rows deleted.
    • run

      public <E> SelectQuery.ExecutionContext<E> run(SelectQuery<E> selectQuery)
      Specified by:
      run in interface EntityEngine
    • removeValue

      public <E> int removeValue(EntityFactory<E> entityFactory, Long id)
      Description copied from interface: EntityEngine
      Remove the given entity from the DB.
      Specified by:
      removeValue in interface EntityEngine
      Parameters:
      entityFactory - represents the entity type (ie TABLE)
      id - the id of the row to delete.
      Returns:
      number of rows effected by this operation
    • selectFrom

      public <E> EntityEngine.SelectFromContext<E> selectFrom(EntityFactory<E> entity)
      Description copied from interface: EntityEngine
      Starts a dialog to run a SELECT query against EntityEngine.

      e.g. to run "SELECT * FROM remotelink WHERE id = ?" (and return a single entity value) you could write:

         RemoteIssueLink link = entityEngine.selectFrom(Entity.REMOTE_ISSUE_LINK)
                                       .whereEqual("id", remoteIssueLinkId)
                                       .singleValue();
       
      e.g. to run "SELECT * FROM remotelink WHERE issueid = ? AND app = ? ORDER BY type" you could write:
         List remoteIssueLinks =
                 entityEngine.selectFrom(Entity.REMOTE_ISSUE_LINK)
                             .whereEqual("issueid", issueId)
                             .andEqual("app", app)
                             .orderBy("type");
       
      Specified by:
      selectFrom in interface EntityEngine
      Type Parameters:
      E - Entity Data Object type.
      Parameters:
      entity - that can convert GenericValues into Entity data objects. See Entity for existing factories.
      Returns:
      The context that begins a fluent dialog to run a SELECT query.
      See Also: