Interface Store

All Superinterfaces:
Remote, RemoteStore

public interface Store extends RemoteStore
The store interface represents the interface to the database. It is used for inserting, updating, deleting and retrieving objects. You get an object implementing this interface by calling com.groiss.wf.Store.getInstance() or - in case of RMI - using the getStore() call of com.groiss.wf.Session.

Many methods contain a condition string. The syntax of them is as in an SQL where clause like "name='john' and salary > 1000", where name and salary are database fields of the given object class. In methods where the extra parameter bindVars appears, the condition can contain placeholders, for example "name=? and salary > ?".

The condition parameter may always be null, as well as the order parameter. The bindVars may be null if no placeholders are used in the condition.

  • Method Details

    • getInstance

      static Store getInstance()
      Get the Store to read and write from/to the database.
      Returns:
      a Store object
    • list

      <P> List<P> list(Class<? extends P> c)
      This method returns all members of the given class.
      Specified by:
      list in interface RemoteStore
      Parameters:
      c - the class of the objects
      Returns:
      a list of members of the given class
    • list

      <P extends Persistent> List<P> list(String classname)
      This method returns all members of the given class.
      Specified by:
      list in interface RemoteStore
      Parameters:
      classname - the name of the class of the object
      Returns:
      a List of members of the given class
    • list

      <P> List<P> list(Class<? extends P> c, String cond)
      This method returns the members of the given class matching the given condition.
      Specified by:
      list in interface RemoteStore
      Parameters:
      c - the class of the objects
      cond - a SQL condition
      Returns:
      a List of members of the given class
    • list

      <P extends Persistent> List<P> list(String classname, String cond)
      This method returns the members of the given class matching the given condition.
      Specified by:
      list in interface RemoteStore
      Parameters:
      classname - the name of the class of the object
      cond - a SQL condition
      Returns:
      a List of members of the given class
    • list

      <P> List<P> list(Class<? extends P> c, String cond, String order)
      This method returns the members of the given class matching the given condition.
      Specified by:
      list in interface RemoteStore
      Parameters:
      c - the class of the objects
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      Returns:
      a List of members of the given class
    • list

      <P extends Persistent> List<P> list(String classname, String cond, String order)
      This method returns the members of the given class matching the given condition.
      Specified by:
      list in interface RemoteStore
      Parameters:
      classname - the name of the class of the object
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      Returns:
      a List of members of the given class
    • list

      <P> List<P> list(Class<? extends P> c, String cond, String order, Object... bindVars)
      This method returns the members of the given class matching the given condition.
      Specified by:
      list in interface RemoteStore
      Parameters:
      c - the class of the objects
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a List of members of the given class
    • limitedList

      <P> List<P> limitedList(Class<? extends P> c, int maxRows, String cond, String order, Object... bindVars)
      This method returns the members of the given class matching the given condition and limiting the returned entry count.

      Note that a unique order is not only strongly recommended; some DBMSs require an order by in this case. If an empty order is provided or when the order does not contain the oid column, OID is added as order column.

      Specified by:
      limitedList in interface RemoteStore
      Parameters:
      c - the class of the objects
      maxRows - the maximum number of entries to return
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      bindVars - if the condition contains place holders for binding variables, this should contain the values
      Returns:
      a List of members of the given class
    • list

      @Deprecated(since="10.0", forRemoval=true) <P> List<P> list(Class<? extends P> c, String cond, String order, Object[] bindVars, int maxRows)
      Deprecated, for removal: This API element is subject to removal in a future version.
      This method returns the members of the given class matching the given condition and limiting the returned entry count.

      Note that a unique order is not only strongly recommended; some DBMSs require an order by in this case. If an empty order is provided or when the order does not contain the oid column, OID is added as order column.

      Specified by:
      list in interface RemoteStore
      Parameters:
      c - the class of the objects
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      maxRows - the maximum number of entries to return
      Returns:
      a List of members of the given class
    • limitedList

      <P> List<P> limitedList(Class<? extends P> c, int maxRows, int offset, String cond, String order, Object... bindVars)
      This method returns the members of the given class matching the given condition and limiting the returned entry count.

      Note that a unique order is not only strongly recommended; some DBMSs require an order by in this case. If an empty order is provided or when the order does not contain the oid column, OID is added as order column.

      Specified by:
      limitedList in interface RemoteStore
      Parameters:
      c - the class of the objects
      maxRows - the maximum number of entries to return
      offset - number of rows to skip from the beginning
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      bindVars - if the condition contains place holders for binding variables, this should contain the values
      Returns:
      a List of members of the given class
    • list

      @Deprecated(since="10.0", forRemoval=true) <P> List<P> list(Class<? extends P> c, String cond, String order, Object[] bindVars, int maxRows, int offset)
      Deprecated, for removal: This API element is subject to removal in a future version.
      This method returns the members of the given class matching the given condition and limiting the returned entry count.

      Note that a unique order is not only strongly recommended; some DBMSs require an order by in this case. If an empty order is provided or when the order does not contain the oid column, OID is added as order column.

      Specified by:
      list in interface RemoteStore
      Parameters:
      c - the class of the objects
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      maxRows - the maximum number of entries to return
      offset - number of rows to skip from the beginning
      Returns:
      a List of members of the given class
    • list

      <P extends Persistent> List<P> list(String classname, String cond, String order, Object... bindVars)
      This method returns the members of the given class matching the given condition.
      Specified by:
      list in interface RemoteStore
      Parameters:
      classname - the name of the class of the objects
      cond - a SQL condition
      order - a comma separated list of attribute names of the given class.
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a List of members of the given class
    • list2

      <P> List<P> list2(Class<? extends P> c, String q, Object... bindVars)
      This method returns the members of the given class matching the given condition. the sql-query is a complete sql statement which must retrieve exactly the database attributes of the given class, for example: select u.* from avw_user u, avw_userrole ur where ... It is required to use the StoreUtil.dbAttrs(Persistent, String) dbAttrs(String) method to construct the attribute list, that is to formulate "select "+StoreUtil.dbAttrs(user,"u")+" from avw_user u, avw_userrole ur where..."
      Specified by:
      list2 in interface RemoteStore
      Parameters:
      c - the class of the objects
      q - a SQL query
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a List of members of the given class
    • list2

      <P extends Persistent> List<P> list2(String classname, String q, Object... bindVars)
      This method returns the members of the given class matching the given condition. the sql-query is a complete sql statement which must retrieve exactly the database attributes of the given class, for example: select u.* from avw_user u, avw_userrole ur where ... It is required to use the StoreUtil.dbAttrs(Persistent, String) dbAttrs(String) method to construct the attribute list, that is to formulate "select "+StoreUtil.dbAttrs(user,"u")+" from avw_user u, avw_userrole ur where..."
      Specified by:
      list2 in interface RemoteStore
      Parameters:
      classname - the name of the class of the objects
      q - a SQL query
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a List of members of the given class
    • table

      <P> Map<Long,P> table(Class<? extends P> c, String cond, Object... bindVars)
      This method returns the members of the given class matching the given condition as a Map. The keys of the map are the oids of the objects as Long objects, the values are the objects itself.
      Specified by:
      table in interface RemoteStore
      Parameters:
      c - the class of the objects
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a Map of members of the given class
    • table

      <P extends Persistent> Map<Long,P> table(String classname, String cond, Object... bindVars)
      This method returns the members of the given class matching the given condition as a Map. The keys of the table are the oids of the objects as Long objects, the values are the objects itself.
      Specified by:
      table in interface RemoteStore
      Parameters:
      classname - the name of the class of the objects
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a Map of members of the given class
    • setOf

      <P> Set<P> setOf(Class<? extends P> c, String cond, Object... bindVars)
      This method returns the members of the given class matching the given condition as a Set. The the values are the objects itself.
      Specified by:
      setOf in interface RemoteStore
      Parameters:
      c - the class of the objects
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a Set of members of the given class
    • setOf

      <P extends Persistent> Set<P> setOf(String classname, String cond, Object... bindVars)
      This method returns the members of the given class matching the given condition as a Set. The keys of the table are the oids of the objects as Long objects, the values are the objects itself.
      Specified by:
      setOf in interface RemoteStore
      Parameters:
      classname - the name of the class of the objects
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      a Set of members of the given class
    • count

      int count(Class<?> c, String cond, Object... bindVars)
      This method returns the number of members of a given class matching the given condition.
      Specified by:
      count in interface RemoteStore
      Parameters:
      c - the class
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      the number of elements
    • count

      int count(String classname, String cond, Object... bindVars)
      This method returns the number of members of a given class matching the given condition.
      Specified by:
      count in interface RemoteStore
      Parameters:
      classname - the name of the class
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      the number of elements
    • inDatabase

      boolean inDatabase(Persistent o)
      Check whether the object is in database
      Specified by:
      inDatabase in interface RemoteStore
      Returns:
      true if the object is in the database
    • hasRows

      boolean hasRows(String stmt, Object... bindVars)
      Check whether the statement returns results.
      Specified by:
      hasRows in interface RemoteStore
      Parameters:
      stmt - the SQL statement text.
      bindVars - if the stmt contains place holders for binding variables this parameter should contain the values
      Returns:
      true if the result set is not empty
    • get

      <P> P get(Class<? extends P> c, long oid)
      Method for getting objects from the database.
      Specified by:
      get in interface RemoteStore
      Parameters:
      c - the class of the object
      oid - the oid of the object
      Returns:
      the object with a given oid
    • get

      <P extends Persistent> P get(String classname, long oid)
      Method for getting objects from the database.
      Specified by:
      get in interface RemoteStore
      Parameters:
      classname - the name of the class of the object
      oid - the oid of the object
      Returns:
      the object with a given oid
    • get

      <P> P get(Class<? extends P> c, String cond)
      Method for getting objects from the database.
      Specified by:
      get in interface RemoteStore
      Parameters:
      c - the class of the object
      cond - a SQL condition
      Returns:
      the object with a given oid
    • get

      <P extends Persistent> P get(String classname, String cond)
      Method for getting objects from the database.
      Specified by:
      get in interface RemoteStore
      Parameters:
      classname - the name of the class of the object
      cond - a SQL condition
      Returns:
      an object matching the given condition
    • get

      <P> P get(Class<? extends P> c, String cond, Object... bindVars)
      Method for getting objects from the database.
      Specified by:
      get in interface RemoteStore
      Parameters:
      c - the class of the object
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      an object matching the given condition
    • get

      <P extends Persistent> P get(String classname, String cond, Object... bindVars)
      Method for getting objects from the database.
      Specified by:
      get in interface RemoteStore
      Parameters:
      classname - the name of the class of the object
      cond - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      an object matching the given condition
    • fill

      <P> P fill(P o)
      Fill objects where only the oid is set.
      • if o is null: return o
      • if o is filled: do nothing; return o
      • if o is not in the objectcache: fill it, put it into the OC
      • if there is an object oc in the objectcache which is equal to o, but oc != o, throw an 1107 exception
      Specified by:
      fill in interface RemoteStore
      Parameters:
      o - the object
      Returns:
      the same object with fields set from the database
    • fill

      <P extends Persistent> List<P> fill(List<P> l)
      Fills the objects within list l.
      Specified by:
      fill in interface RemoteStore
      Parameters:
      l - the list of objects to be filled
      Returns:
      a list of objects which are filled or remain unfilled if they could not be filled. The objects are in the same order as in l.
    • checkUnique

      void checkUnique(Persistent o)
      Description copied from interface: RemoteStore
      This method throws an ApplicationException if a duplicate of the given object is in the database. It uses the key fields returned by method Persistent.getKeys() of object o for the comparison.
      Specified by:
      checkUnique in interface RemoteStore
      Parameters:
      o - the object
    • checkUnique

      void checkUnique(Persistent o, boolean caseInsensitive)
      Description copied from interface: RemoteStore
      This method throws an ApplicationException if a duplicate of the given object is in the database. It uses the key fields returned by method Persistent.getKeys() of object o for the comparison.
      Specified by:
      checkUnique in interface RemoteStore
      Parameters:
      o - the object
      caseInsensitive - if true make string comparisons case insensitive
    • fillByField

      <P extends Persistent, R extends Persistent> Set<P> fillByField(Class<? extends P> c, Collection<R> collection, String fieldname)
      Fill a heterogeneous set of Persistents referenced via a field of a collection of (persistent) objects. BulkQueries are used for efficient access of the database.
      Specified by:
      fillByField in interface RemoteStore
      Parameters:
      c - (super)class of the referenced Objects
      collection - the Collection of referencing objects, must all be filled.
      fieldname - the name of the referencing field. Must be a Persistent.
      Returns:
      the set of referenced objects (filled)
    • fillByField

      <P extends Persistent, R extends Persistent> Set<P> fillByField(Class<? extends P> c, Collection<R> collection, String fieldname, String condition, Object... bindVars)
      Fill a heterogeneous set of Persistents referenced via a field of a collection of (persistent) objects. BulkQueries are used for efficient access of the database.
      Specified by:
      fillByField in interface RemoteStore
      Parameters:
      c - (super)class of the referenced Objects
      collection - the Collection of referencing objects, must all be filled.
      fieldname - the name of the referencing field. Must be a Persistent.
      condition - an optional SQL condition.
      bindVars - optional array of parameter bindings for the SQL statement.
      Returns:
      the set of referenced objects (filled)
    • fillByFields

      <P extends Persistent> void fillByFields(Collection<P> collection, String fieldNames)
      Fetches dependent objects of a collection of Persistents reachable via the specified fields. BulkQueries are used for efficient access of the database.
      Specified by:
      fillByFields in interface RemoteStore
      Parameters:
      collection - the Collection of referencing objects, must all be filled.
      fieldNames - a comma separated string of field names. Every field name must denote a Persistent field.
    • insert

      void insert(Persistent o)
      Insert the object into the database. Does not write a LogEntry.
      Specified by:
      insert in interface RemoteStore
      Parameters:
      o - the object
    • insert

      void insert(Collection<?> collection)
      Insert the objects of the collection into the database. Does not write LogEntry objects.
      Specified by:
      insert in interface RemoteStore
      Parameters:
      collection - the objects to insert (all of the objects must implement Persistent)
    • update

      int update(Persistent o)
      Update the database tuple corresponding to the given object. Does not write a LogEntry.
      Specified by:
      update in interface RemoteStore
      Parameters:
      o - the object
      Returns:
      the number of updated tuples (0 or 1)
    • update

      int update(Collection<?> collection)
      Updates the objects of the collection in the database. Does not write LogEntry objects.
      Specified by:
      update in interface RemoteStore
      Parameters:
      collection - the objects to update (all of the objects must implement Persistent)
      Returns:
      the number of updated tuples
    • update

      int update(Persistent o, String... fieldNames)
      Update some fields of the database tuple corresponding to the given object. Does not write a LogEntry.
      Specified by:
      update in interface RemoteStore
      Parameters:
      o - the object
      fieldNames - an array containing the names of the fields which should be updated
      Returns:
      the number of updated tuples (0 or 1)
    • delete

      int delete(Persistent o)
      Deletes the object from the database. Does not write a LogEntry.
      Specified by:
      delete in interface RemoteStore
      Parameters:
      o - the object to delete
      Returns:
      the number of deleted tuples (0 or 1)
    • delete

      int delete(Collection<?> collection)
      Deletes the objects of the collection from the database. Does not write LogEntry objects.
      Specified by:
      delete in interface RemoteStore
      Parameters:
      collection - the objects to delete (all of the objects must implement Persistent)
      Returns:
      the number of deleted tuples
    • delete

      int delete(Class<?> c, String condition, Object... bindVars)
      Deletes some objects from the database. Does not write a LogEntry. Note that neither the Persistent.beforeDelete() nor PersistentEventHandler.beforeDelete(Persistent) methods are called for the individual deleted objects.
      Specified by:
      delete in interface RemoteStore
      Parameters:
      c - the class of the objects
      condition - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      the number of deleted tuples
    • delete

      int delete(String classname, String condition, Object... bindVars)
      Deletes some objects from the database. Does not write a LogEntry. Note that neither the Persistent.beforeDelete() nor PersistentEventHandler.beforeDelete(Persistent) methods are called for the individual deleted objects.
      Specified by:
      delete in interface RemoteStore
      Parameters:
      classname - the name of the class of the objects
      condition - a SQL condition
      bindVars - if the condition contains place holders for binding variables this parameter should contain the values
      Returns:
      the number of deleted tuples
    • executeStatement

      int executeStatement(String stmt)
      Execute a SQL statement.
      Specified by:
      executeStatement in interface RemoteStore
      Parameters:
      stmt - the SQL statement text.
      Returns:
      the number of rows changed
    • executeStatement

      int executeStatement(String stmt, Object... bindVars)
      Execute a SQL statement.
      Specified by:
      executeStatement in interface RemoteStore
      Parameters:
      stmt - the SQL statement text.
      bindVars - if the stmt contains place holders for binding variables this parameter should contain the values
      Returns:
      the number of rows changed
    • getOID

      long getOID()
      Return the next object id from the oid-factory in the database
      Specified by:
      getOID in interface RemoteStore
      Returns:
      an unique object id
    • getValue

      Object getValue(String stmt)
      Execute a SQL statement which returns one value. The statement is executed, the first row fetched and from the result set the first element is returned.
      Specified by:
      getValue in interface RemoteStore
      Parameters:
      stmt - the SQL statement text.
      Returns:
      the value as object.
    • getValue

      @Deprecated(since="10.0", forRemoval=true) Object getValue(String stmt, int sqlType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Execute a SQL statement which returns one value. The statement is executed, the first row fetched and from the result set the first element is returned.
      Specified by:
      getValue in interface RemoteStore
      Parameters:
      stmt - the SQL statement text.
      sqlType - if a special mapping of the database type to java type is needed, the type (java.sql.Types) can be specified here.
      Returns:
      the value as object.
    • getValue

      Object getValue(String stmt, Object... bindVars)
      Execute a SQL statement which returns one value. The statement is executed, the first row fetched and from the result set the first element is returned.
      Specified by:
      getValue in interface RemoteStore
      Parameters:
      stmt - the SQL statement text.
      bindVars - if the stmt contains place holders for binding variables this parameter should contain the values
      Returns:
      the value as object.
    • getValue

      @Deprecated(since="10.0", forRemoval=true) Object getValue(String stmt, Object[] bindVars, int sqlType)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Execute a SQL statement which returns one value. The statement is executed, the first row fetched and from the result set the first element is returned.
      Specified by:
      getValue in interface RemoteStore
      Parameters:
      stmt - the SQL statement text.
      bindVars - if the stmt contains place holders for binding variables this parameter should contain the values
      sqlType - if a special mapping of the database type to java type is needed, the type (java.sql.Types) can be specified here.
      Returns:
      the value as object.
    • getValue

      Object getValue(int sqlType, String stmt, Object... bindVars)
      Execute a SQL statement which returns one value. The statement is executed, the first row fetched and from the result set the first element is returned.
      Specified by:
      getValue in interface RemoteStore
      Parameters:
      sqlType - if a special mapping of the database type to java type is needed, the type (java.sql.Types) can be specified here.
      stmt - the SQL statement text.
      bindVars - if the stmt contains place holders for binding variables, this should contain the values
      Returns:
      the value as object.
    • getTable

      @Deprecated(since="9.0", forRemoval=true) TableModel getTable(String q, Object... bindVars)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the results of the given query.
      Specified by:
      getTable in interface RemoteStore
      Parameters:
      q - the sql-query
      bindVars - if the query contains place holders for binding variables this parameter should contain the values
      Returns:
      a list of list of values
    • getTable

      TableModel getTable(String q, Object[] bindVars, int[] sqlTypes)
      Returns the results of the given query.
      Specified by:
      getTable in interface RemoteStore
      Parameters:
      q - the sql-query
      bindVars - if the query contains place holders for binding variables this parameter should contain the values
      sqlTypes - if a special mapping of database types to java types is needed, the types (java.sql.Types) can be specified here. The length of the array must be equal to the number of columns in the result set.
      Returns:
      a list of list of values
    • getNoCache

      <P> P getNoCache(Class<? extends P> c, long oid)
      Method for getting objects directly from the database bypassing the object cache.

      Should only be needed in special circumstances like comparing the current state of an object to an old state in the database.

      The result should be used with care, in particular, its unwise to change it in any way.

      Specified by:
      getNoCache in interface RemoteStore
      Parameters:
      c - the class of the object
      oid - the oid of the object
      Returns:
      the object with a given oid