TransformedDataBase abstract class
abstract class TransformedDataBase implements ChangeNotificationsMixin {
/**
* The source [ChangeNotificationsMixin](s) this collection is derived from.
*/
List<dynamic> sources;
List<StreamSubscription> _sourcesSubscription;
/**
* Reflects [changes] in the collection w.r.t. [config].
*/
void _mergeIn(ChangeSet changes, int sourceNumber, {author}) {
changes.addedItems.forEach((dataObj) => _treatAddedItem(dataObj, sourceNumber));
changes.removedItems.forEach((dataObj) => _treatRemovedItem(dataObj, sourceNumber));
changes.strictlyChanged.forEach((dataObj,changes) => _treatChangedItem(dataObj, changes, sourceNumber));
var items = changes.addedItems.union(changes.removedItems).union(new Set.from(changes.changedItems.keys));
for (var item in items) {
_treatItem(item, changes.strictlyChanged[item]);
}
_notify(author: author);
}
// Overridable methods follow
void _treatAddedItem(dataObj, int sourceNumber) {}
void _treatRemovedItem(dataObj, int sourceNumber) {}
void _treatChangedItem(dataObj, ChangeSet c, int sourceNumber) {}
void _treatItem(dataObj, changeSet) {}
}
Implements
Properties
final Stream<dynamic> onBeforeAdd #
inherited from ChangeNotificationsMixin
Stream populated with DataMapView events before any data object is added.
Stream<dynamic> get onBeforeAdd {
if(_onBeforeAddedController == null) {
_onBeforeAddedController =
new StreamController.broadcast(sync: true);
}
return _onBeforeAddedController.stream;
}
final Stream<dynamic> onBeforeRemove #
inherited from ChangeNotificationsMixin
Stream populated with DataMapView events before any data object is removed.
Stream<dynamic> get onBeforeRemove {
if(_onBeforeRemovedController == null) {
_onBeforeRemovedController =
new StreamController.broadcast(sync: true);
}
return _onBeforeRemovedController.stream;
}
final Stream<ChangeSet> onChange #
inherited from ChangeNotificationsMixin
Stream populated with ChangeSet events whenever the collection or any of data object contained gets changed.
Stream<ChangeSet> get onChange {
if(_onChangeController == null) {
_onChangeController =
new StreamController.broadcast();
}
return _onChangeController.stream;
}
final Stream<Map> onChangeSync #
inherited from ChangeNotificationsMixin
Stream populated with {'change': ChangeSet, 'author': dynamic} events
synchronously at the moment when the collection or any data object contained
gets changed.
Stream<Map> get onChangeSync => _onChangeSyncController.stream;
List<dynamic> sources #
The source ChangeNotificationsMixin this collection is derived from.
List<dynamic> sources