Last modified by Jonathan 'Wolf' Rentzsch on 2008/11/24 12:35

Hide last authors
Jonathan 'Wolf' Rentzsch 10.1 1 If you want to count the number of objects off a to-many, but without fetching all of them into memory, then add this to your _Entity.java templates inside the to-many section:
simon 3.1 2
3 {{code}}
4
Jonathan 'Wolf' Rentzsch 9.1 5 public Number count${relationship.capitalizedName}() {
simon 3.1 6 return countForRelationship("${relationship.name}");
7 }
8
Jonathan 'Wolf' Rentzsch 9.1 9 public EOQualifier qualifierFor${relationship.capitalizedName}() {
simon 3.1 10 return qualifierForRelationshipWithKey("${relationship.name}");
11 }
12
13 {{/code}}
14
Jonathan 'Wolf' Rentzsch 10.1 15 Then either add this to _Entity.java (lame), or to a generic superclass that you use for all of your EO objects (preferred), add this:
simon 3.1 16
17 {{code}}
18
Jonathan 'Wolf' Rentzsch 9.1 19 public EOQualifier qualifierForRelationshipWithKey(String aKey)
simon 3.1 20 {
21 this.willRead();
22
23 if ((aKey != null))
24 {
25 String anEntityName = this.entityName();
26 EOEntity anEntity = EOModelGroup.defaultGroup().entityNamed(anEntityName);
27 EORelationship aRelationship = anEntity.relationshipNamed(aKey);
28
29 if (aRelationship != null)
30 {
31 EOEditingContext anEditingContext = this.editingContext();
32 EOGlobalID aGlobalID = anEditingContext.globalIDForObject(this);
33 String aModelName = anEntity.model().name();
34 EODatabaseContext aDatabaseContext = EOUtilities.databaseContextForModelNamed(anEditingContext,
35 aModelName);
36 aDatabaseContext.lock();
37 NSDictionary aRow = aDatabaseContext.snapshotForGlobalID(aGlobalID);
38 aDatabaseContext.unlock();
39 EOQualifier aQualifier = aRelationship.qualifierWithSourceRow(aRow);
40
41 return aQualifier;
42 }
43 }
44
45 return null;
46 }
47
48 /**
49 * Return count for the given relationship.
50 */
Jonathan 'Wolf' Rentzsch 9.1 51 public Integer countForRelationship(String key)
simon 3.1 52 {
Jonathan 'Wolf' Rentzsch 9.1 53 EOQualifier qual = qualifierForRelationshipWithKey(key);
simon 3.1 54 if (qual != null)
55 {
56 String anEntityName = this.entityName();
57 EOEntity anEntity = EOModelGroup.defaultGroup().entityNamed(anEntityName);
58 EORelationship aRelationship = anEntity.relationshipNamed(key);
59 return ERXEOControlUtilities.objectCountWithQualifier(this.editingContext(), aRelationship
60 .destinationEntity().name(), qual);
61 }
62 return null;
63
64 }
65
66 {{/code}}