if (_entityStats == null) {
_entityStats = new NSMutableDictionary<String, SEEntityStats>();
EODatabaseContext databaseContext = EODatabaseContext.registeredDatabaseContextForModel(_model, ERXEC.newEditingContext());
databaseContext.lock();
try {
EODatabase database = databaseContext.database();
for (EOGlobalID gid : (NSArray<EOGlobalID>) database.snapshots().allKeys()) {
if (gid instanceof EOKeyGlobalID) {
EOKeyGlobalID kgid = (EOKeyGlobalID) gid;
String entityName = kgid.entityName();
SEEntityStats entityStats = _entityStats.get(entityName);
if (entityStats == null) {
EOEntity entity = _model.entityNamed(entityName);
if (entity != null) {
entityStats = new SEEntityStats(databaseContext, entity);
_entityStats.put(entityName, entityStats);
}
}
if (entityStats != null) {
NSDictionary<String, Object> snapshot = (NSDictionary<String, Object>) database.snapshotForGlobalID(gid);
entityStats.addSnapshot(kgid, snapshot);
}
}
}
}