I see.

Can you please nudge how would one do the „EOF stack per session“ (or per a 
selected number of sessions, but not all of them) magic? I guess I should know, 
but my old dumb brains does not seem to co-operate much at the moment :)

Thanks a lot,
OC

On 11. 7. 2016, at 6:47, Chuck Hill <ch...@gevityinc.com> wrote:

> This is why you want an EOF stack per session.  This the only way to have 
> very different configurations per session.   Without that, I don’t think that 
> ERXEnterpriseObjectArrayCache is going to help you much.  You need to 
> configure an isolated EOF stack per session to show that session just the 
> data that is appropriate to it.
>  
> Chuck
>  
> From: OC <o...@ocs.cz>
> Date: Sunday, July 10, 2016 at 5:23 AM
> To: Chuck Hill <ch...@gevityinc.com>
> Cc: WebObjects-Dev Mailing List <webobjects-dev@lists.apple.com>
> Subject: Re: qualified to-many relationships?
>  
> Chuck,
>  
> On 9. 7. 2016, at 11:54, OC <o...@ocs.cz> wrote:
>  
> Meantime I have realised one thing: the "qualifiedRecords" are current-user 
> (i.e., session) dependent in such a way that for a given session which needs 
> to qualify them, there will *never* be need to fetch the other records. 
> Completely all fetches, which originate in that session, should be filtered. 
> The demand is “a specific user should never see some records; from his point 
> of view, the application should look like they do not exist.“
> Might perhaps EOF or Wonder allow some trick therefore not to implement 
> "qualifiedRecords", but, instead, for all database operation which belong to 
> a specific session, to _always_ filter _all_ fetches of "records" (or even 
> better, _completely all_ fetches of the T_RECORD table, whichever way they 
> did origin!) by a given qualifier?
>  
> Well, as you probably have seen at the first look, this was one of my 
> (frequent) not-so-bright ideas. It seems e.g., the dbcontext delegate can do 
> it all right and it works excellently: whichever thing gets fetched from 
> given entity on behalf of a given user gets perfectly filtered.
>  
> The only limitation is that other sessions would have to have different (or 
> none at all) qualifiers
>  
> You know the result: if another user wants the data later, they, of course, 
> are not fetched in his behalf; instead, they come from shared caches, already 
> (improperly) filtered for the original user, whose request did fetch. Oops.
>  
> I suppose, even if I managed to
>  
> clone the model into a new, user specific EOModelGroup
> and add the restricting qualifier to the DBRecord entity in there?
>  
> it would lead to the same problem: presumably the entity restricting 
> qualifier would be used fetch-time; and the next time another user wants the 
> data, he would get cached ones, which means, for him, wrong list.
>  
> Thus I am afraid indeed
>  
> none of this is (reasonably) possible
>  
> and truly
>  
> I shall need to fall back to the originally considered way of:
> To achieve this you need to:
> 1.       Write the access method like yo have below, but cache the result for 
> performance.
> 2.       Write the mutator methods (if you need them) to work on the original 
> EOF relationship
> 3.       Modify the mutator methods of the original relationship to either 
> invalidate or update this cache (update is faster but harder to write)
> 4.       Intercept certain EOF operations/notifications so that the cache can 
> be updated or invalidated when EOF changes the underlying snapshots
> I can dig the details for (4) out for you if you want to pursue this.
> and I would be then pretty grateful for that.
>  
> If you can spare a moment, let me please know.
>  
> Might perhaps ERXEnterpriseObjectArrayCache help here? From its documentation 
> it sort of seems it might perhaps be listening to those notifications to keep 
> up to date automagically, but I have never used the thing and am not sure by 
> far I understand the documentation...
>  
> Thanks a big lot!
>  
> All the best,
> OC
>  
> From: <webobjects-dev-bounces+chill=gevityinc....@lists.apple.com> on behalf 
> of OC <o...@ocs.cz>
> Date: Friday, July 8, 2016 at 1:11 AM
> To: WebObjects-Dev Mailing List <webobjects-dev@lists.apple.com>
> Subject: qualified to-many relationships?
> Hi there,
> is there a way to define and use a to-many relationship, derived from a 
> modelled one, by limiting the results by a qualifier?
> I have got an entity, say, "DBTable", whose to-many relationship "records" 
> returns a set of eos of entity "DBRecord". That works all right.
> Now, I need to implement a "qualifiedRecords" relationship, which would work 
> this way:
> ===
> class DBTable ... {
>   NSArray qualifiedRecords {
>     EOQualifier qq=ERXSession.session().recordQualifier; // the qualifier 
> depends on current user and other conditions of the current session
>     return EOQualifier.filteredArrayWithQualifier(this.records(),qq);
>   }
> }
> ===
> With small objects, I would use precisely the code above. Alas, my DBTables 
> contain _lots_ of DBRecords, and thus the above implementation would get 
> terribly slow by fetching all of them and then re-filtering them each time 
> the relationship is accessed.
> What I need here is same behaviour functionality-wise, but at a lower level, 
> sort of like EODatabaseDataSource's auxiliaryQualifier, but somehow bound to 
> the particular relationship, so that
> (a) it is not needed to fetch all records -- the "qualifiedRecords" 
> relationship would, when fired, automatically fetch only the qualified ones
> (b) records are fetched once and then cached, just like it is with normal 
> relationships
> (c) I can use things like
> ERXEOControlUtilities.objectCountForToManyRelationship(sometable,"qualifiedRecords")
> etc. seamlessly, and they work as expected.
> Is there a way to do this at all? Perhaps I am just blind, but I cannot find 
> any decent solution :/
> Thanks and all the best,
> OC
> _______________________________________________
> 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:
> https://lists.apple.com/mailman/options/webobjects-dev/chill%40gevityinc.com
> This email sent to ch...@gevityinc.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:
> https://lists.apple.com/mailman/options/webobjects-dev/ocs%40ocs.cz
> This email sent to o...@ocs.cz
>  
>  


 _______________________________________________
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:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to