org.positronicnet.orm.ManagedRecord
Perform the action
, usually on a worker thread associated with this
notifier.
Perform the action
, usually on a worker thread associated with this
notifier. Results may be posted back to the calling thread, viz.
the conventions documented in org.positronicnet.notifications.Actions.
ContentQuery whose conditions match those declared for the Scope.
ContentQuery whose conditions match those declared for the Scope.
Notifier which can be used to fetch, or to receive updates on, the number of records matching the scope's conditions.
Notifier which can be used to fetch, or to receive updates on, the number of records matching the scope's conditions. One usage pattern:
Bugs.count ! AddWatcher( this ) { bugCount => if (bugCount == 0) { startActivity( new Intent( this, classOf[ CelebrationActivity ]) Bugs ! StopWatcher( this ) finish } }
The onChangeTo
method in
PositronicActivityHelpers can simplify this
a bit... but I digress.
Note that count
is supported only if it is supported by the underlying
ContentRepository; e.g., by databases, but
not by ContentProviders.
As for recordsQuery
, but returns a notifier of the count of
records matching the extra conditions.
As for recordsQuery
, but returns a notifier of the count of
records matching the extra conditions.
Create a new child record, with the foreign key field pre-populated.
Create a new child record, with the foreign key field pre-populated.
AppFacility associated with the content source.
AppFacility associated with the content source.
Synchronously fetch the value being monitored by this Notifier
.
Synchronously fetch the value being monitored by this Notifier
.
Find the record with the given id
, if it exists, running the
query on the current thread, and returning it as the value.
Find the record with the given id
, if it exists, running the
query on the current thread, and returning it as the value.
XXX should only find it if it matches conditions of the scope, as per Rails.
ContentQuery whose conditions match those for the records in scope.
ContentQuery whose conditions
match those for the records in scope. Ordinarily the same
as baseQuery
, but some RecordManagers
may add extra conditions to, e.g., make soft-deleted records
invisible from an ordinary fetch.
The code invoked when the "parent" in a HasMany
vanishes, to
mop up child records.
The code invoked when the "parent" in a HasMany
vanishes, to
mop up child records.
Produce a modified subscope which supplies at most a given number of records.
Produce a modified subscope which supplies at most a given
number of records. The string supplied is used directly in a SQL limit
clause.
May not be supported by all repositories; in particular, it is
not supported by ContentProviders.
Produce a modified subscope which supplies at most a given number of records.
Produce a modified subscope which supplies at most a given
number of records. The string supplied is used directly in a SQL limit
clause.
May not be supported by all repositories; in particular, it is
not supported by ContentProviders.
The Notifier to which the delegator forwards, well.
The Notifier to which the delegator forwards, well... everything here.
Perform the action
, synchronously on the calling thread.
Perform the action
, synchronously on the calling thread.
Produce a modified subscope which supplies records in a particular order.
Produce a modified subscope which supplies records in a particular
order. The string supplied is used directly in a SQL order
clause (or passed to the underlying ContentProvider
, if
appropriate).
Returns a notifier for a subset of the records covered by this
scope, matching extra conditions, which can be changed later by sending
a Requery
message.
Returns a notifier for a subset of the records covered by this
scope, matching extra conditions, which can be changed later by sending
a Requery
message.
This can be used, for example, as the source for an IndexedSeqSourceAdapter, which displays the rows matching the user's "current search condition", whatever it may be, and changes when the condition changes, but without having to rewire the IndexedSeqSourceAdapter, perhaps something like so:
val matchingBugs = Bugs.recordsQuery( "" ){ pattern => Bugs.where( "tag_line like ?", pattern ) } // ... later ... matchingBugs ! Requery( "newpattern" )
The Requery
will cause any declared watchers of matchingBugs
to be notified of the new query result.
Produce a restricted subscope containing only records
matching an extra SQL condition, possibly including
?
placeholders which can get filled in by the supplied
ContentValue arguments, if
any.
Produce a restricted subscope containing only records
matching an extra SQL condition, possibly including
?
placeholders which can get filled in by the supplied
ContentValue arguments, if
any. Example:
val recentBugs = Bugs.where( "state != ? and create_date > ?", "closed", System.currentTimeMillis - 3*86400*1000 )
Note that the columns are named using internal SQL column names, not the Java mapped versions.
(Note for the future: we could consider changing this by
allowing syntax like "{createDate}>?"
, where the string
in curly-braces would be a Java field name to be mapped to
the SQL equivalent. But that's not there yet.)
Produce a restricted subscope containing only records where particular fields have particular values.
Produce a restricted subscope containing only records
where particular fields have particular values.
The argument is a set of
(String,[[org.positronicnet.content.ContentValue]])
pairs,
often entered using ->
notation, like so:
Bugs.whereEq( "status"->"done", "ownerId"->joe.id )
Note that columns can be designated by either the names
of the columns in the underlying tables, or the names of the
Scala val
s in the classes that they get mapped to.
One-to-many association. See discussion in the orm overview. Note that the name of the
foreignKey
need not be supplied if it follows common conventions. (If the class that owns theHasMany
is namedParentClass
, the conventional foreign key field is the one whose Scala name isparentClassId
, in the "child" class. That is, if aTodoList
has manyTodoItem
s, the convention is forTodoItem
to have atodoListId
, and that's what we use.)Otherwise it must be the column name for the org.positronicnet.orm.ContentRepository, not the name of the corresponding Scala record field.