Thanks David. I noticed those __Clazz classes are then declared in the EOs as "public static class". I read the article below to figure what that meant. I'm still learning java I guess :-)
http://www.javaworld.com/javaworld/javaqa/2001-08/01-qa-0817-static.html?page=1 So I'm trying to put it together. My Foo.java would have a clazz static variable referencing an instance of FooClazz. I can add methods to FooClazz in my Foo.java. So then FooClazz extends _FooClazz which could have some static methods. Are we saying that when I define my FooClazz methods I implement them by calling _FooClazz static methods or I can rewrite (i.e. override) if needed? I think I'm getting there... I ought to try it I guess. :-) On Dec 14, 2010, at 5:57 PM, David Holt wrote: > > On 2010-12-14, at 2:20 PM, Ricardo J. Parada wrote: > >> >> I've always wondered what that clazz thingy is. I'm still not sure. I read >> the javadoc on EOEnterpriseObjectClazz but still I don't quite get it. >> What is it? Maybe a little example will go a long way in understanding. :-) > > Hi Ricardo, > > You're not alone :-) > > To date I've been following BugTracker as an example to let me integrate the > pattern into my D2W applications to give me really fine control of what > objects I'm displaying in lists. > > I'm probably not understanding all that the Clazz pattern adds to the mix, > but using it has allowed me to start understanding Anjo's example > BusinessLogic in BugTracker and use the patterns I've found in my own code, > and I know that it has improved my D2W applications considerably. > > Here is an example I use inside DocumentClazz > > // Class methods go here > public static class DocumentClazz extends _Document._DocumentClazz { > > public EOFetchSpecification > fetchSpecificationForWorkingGroupDocumentsForDeletion(WorkingGroup wg) { > // selected working group, marked for Deletion > EOFetchSpecification fs = > Document.fetchSpec().qualify(Document.WORKING_GROUP.eq(wg).and(Document.IS_FOR_DELETION.eq(true))); > return fs; > } > } > > Now when I need to get a list of documents from an action triggered from a > navigation tab in my application I can use a method such as: > > // DELETION TAB > public WOComponent listDocumentsForDeletion() { > EOEditingContext ec = ERXEC.newEditingContext(); > ec.lock(); > WorkingGroup selectedWG = (WorkingGroup) WorkingGroup.wg(ec); > try { > EODatabaseDataSource ds = Document.clazz.newDatabaseDataSource(ec); > EOFetchSpecification fs = > Document.clazz.fetchSpecificationForWorkingGroupDocumentsForDeletion(selectedWG); > ds.setFetchSpecification(fs); > return (WOComponent) listPageNamed("ListDocumentsForDeletion", ds); > } > finally { > ec.unlock(); > } > > } > > David > > >> >> >> On Dec 14, 2010, at 5:15 PM, David Holt wrote: >> >>> Hi Anjo, >>> >>> On 2010-12-14, at 1:34 PM, Anjo Krank wrote: >>> >>>> There is a reason why stuff in BT is done as it is. >>>> >>>> I.e. there is a People.class.setCurrentUser(People user) and >>>> People.class.currentUser(EOEditingContext ec). Basically it puts all the >>>> thread storage code (including the key) in People, which is, like, good >>>> style? >>> >>> Absolutely agree. But it was difficult for me to wrap my head around >>> ERXThreadStorage AND Clazz pattern AND ERCoreBusinessLogic at the same >>> time. I was just trying to simplify it a little for Jesse. There is no >>> question that all three together are much more powerful and useful. >>> >>>> >>>> Also, ERXThreadStorage already handles EOs and faulting. >>> >>> >>> Thanks, >>> >>> David >>> >>>> >>>> Cheers, Anjo >>>> >>>> >>>> >>>> Am 14.12.2010 um 21:57 schrieb David Holt: >>>> >>>>> public static Person currentUser(EOEditingContext ec) { >>>>> Person currentUser = currentUser(); >>>>> if (currentUser != null && currentUser.editingContext() != ec) { >>>>> EOEditingContext currentUserEc = >>>>> currentUser.editingContext(); >>>>> currentUserEc.lock(); >>>>> try { >>>>> Person localUser = (Person) >>>>> ERXEOControlUtilities >>>>> .localInstanceOfObject(ec, >>>>> currentUser); >>>>> currentUser = localUser; >>>>> } finally { >>>>> currentUserEc.unlock(); >>>>> } >>>>> } >>>>> return currentUser; >>>>> } >>>>> >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>>> Help/Unsubscribe/Update your Subscription: >>>> http://lists.apple.com/mailman/options/webobjects-dev/programmingosx%40mac.com >>>> >>>> This email sent to programming...@mac.com >>> >>> _______________________________________________ >>> Do not post admin requests to the list. They will be ignored. >>> Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) >>> Help/Unsubscribe/Update your Subscription: >>> http://lists.apple.com/mailman/options/webobjects-dev/rparada%40mac.com >>> >>> This email sent to rpar...@mac.com >> >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com