On Sat 14 May 2011 10:12:09 PM MDT, Niclas Hedhman (JIRA) wrote: > [ > http://issues.ops4j.org/browse/QI-301?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14197#action_14197 > ] > > Niclas Hedhman commented on QI-301: > ----------------------------------- > > I would like to suggest the name "NamedAssociation", since we are effectively > putting a name on to the association itself. > >> Better support for "Entity Local" identities >> -------------------------------------------- >> >> Key: QI-301 >> URL: http://issues.ops4j.org/browse/QI-301 >> Project: Qi4j >> Issue Type: New Feature >> Components: API, Core Runtime >> Affects Versions: 1.2 >> Reporter: Niclas Hedhman >> Assignee: Rickard Öberg >> Fix For: Unknown >> >> >> Currently it is possible to have design time defined "local identities" for >> referenced entities, simply as; >> {code} >> public interface Car >> { >> Association<Tyre> frontRightTyre(); >> } >> {code} >> But if the list is not known at design time, things quickly becomes more >> troublesome (and potentially slower, depending on how one approaches it). >> One can either do a ManyAssociation; >> {code} >> public interface Family >> { >> ManyAssociation<Child> kids(); >> } >> {code} >> and loop through, but if the numbers get very large one needs to start >> mangling with Identity composition >> {code} >> public interface CompanyDivision >> { >> Property<Map<String,String>> employees(); >> } >> {code} >> where first String of local identity (within the company) maps to a global >> Identity of some non-obvious type. There is also the choice of using Query, >> but that kills performance in a big way. >> I come across this on every front right now, and not happy with the Identity >> mangling approach, and would like to call for direct support in Qi4j. >> Proposal; >> At the user side of the equation, something like this should be possible; >> {code} >> public interface CompanyDivision >> { >> KeydAssociation<Employee> employees(); >> } >> {code} >> And the KeydAssociation (better name is probably needed) interface would be >> something like this; >> {code} >> public interface KeydAssociation<T> extends Iterable<T>, AbstractAssociation >> { >> void put( String key, T entity ); >> T get( String key ); >> int count(); >> boolean containsKey( String key ); >> boolean contains( T entity ); >> Map<String, T> toMap(); >> } >> {code} >> This should then be supported at EntityStore level as well, similarly to >> ManyAssociation.
Any reason why NamedAssociation<T> does not include remove( T Entity )? I see that NamedAssociationInstance<T> includes the method, but the interface does not. Regards, Chris Chapman _______________________________________________ qi4j-dev mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/qi4j-dev

