I failed to make this code work. It seems that the MessageIndex object is not getting persisted when i call tx.commit().
Any help in this regard will be appreciated. Thanks On Jan 17, 12:26 am, Duong BaTien <duong.bat...@gmail.com> wrote: > Hi: > > Following is my sketch for the Message and MessageIndex. Please advise > and if possible, sketch out the Java version of set intersection from > the presentation. Have not time to try anything yet; but the design is > very significant for proper data modeling. The JDO version of the > presentation uses query.setFilter("receivers == 'foo'") which i do not > see in the API. > > public class MessageIndex { // create MessageIndex to the parent Message > private Key parent; private String keyKind; private long id; > > @PrimaryKey > @Persistent(ValueStrategy = IdGeneratorStrategy.IDENTITY) > private KeyFactory.createKey(parent, keyKind, id) key; > > @Persistent private List<String> receivers; > > // constructor to create MessageIndex linked to Message > public MessageIndex(Key parent, String keyKind, long id) { > this.parent = parent; this.keyKind = keyKind; this id = id; > > } > > public class Message { > @PrimaryKey > @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) > private Key key > > @Persistent private String sender; > @Persistent private String body; > > // a user create a message to a list of receivers > public static Message createMessage(String userId, String body, > List<String> receivers) { > tx.begin() > this.body = body; > MessageIndex index = new MessageIndex(key, key,getKind(), key.getId > ()); > index.setReceivers(receivers); > tx.commit(); > } > > // query to get all messages sent to a user "foo" > public List<Message> getMessagesSentToUserId(String userId) { > List<Message> results = null > tx.begin(); > Query q = pm.newQuery(MessageIndex.class); > q.addFilter("receivers", Query.FilterOperator.EQUAL, "foo"); > q.setKeyOnly(); > // query the Message for all messages filtered by parent of > MessageIndex key > Query query = pm.newQuery(Message.class); > query.addFilter("key", Query.FilterOperator.EQUAL, "q.execute > ().getParent()"); > results = (List<Message>) query.execute(); > tx.commit(); > } > > } > > Thanks > Duong BaTien > DBGROUPS and BudhNet > > On Wed, 2010-01-13 at 16:26 -0800, Jason (Google) wrote: > > It's been awhile since I've seen this video, so I'll have to go back > > to re-watch it in order to answer your question completely, but I'd be > > interested in seeing what you've sketched out so far and happy to give > > you my feedback on it. > > > - Jason > > > On Tue, Jan 12, 2010 at 3:52 PM, Duong BaTien <duong.bat...@gmail.com> > > wrote: > > Hi Jason, the author Brett Slatkin and others: > > > 1) For the list property, the video shows simple example of > > standard 1:n > > Message Receivers in python and Java. It then demonstrates a > > very > > efficient technique of Message and MessageIndex with the query > > of > > MessageIndex in python (NO Java from then on). I look at both > > the low > > level datastore with Query.setKeyOnly() and the query "select > > id from" > > to get the results of List<Key>, then go through the loop to > > get the > > receivers. I may miss something, since the python code looks > > so clean. > > But once you are in any environment, it is very expensive to > > switch. > > This technique has major impact in data modeling. > > > 2) Again for the set intersection, the python code looks so > > clean. I > > roughly sketch what need to be done on the Java side with > > either low > > level of datastore or with JDO. It is still not elegant as the > > shown > > codes. The demos are also in python. Again, the technique of > > merge join > > will have very significant impact on data modeling that GAE > > may surpass > > other platforms. > > > Haven't put enough time in it yet, I wonder if any one has > > worked out > > the demos in Java and suggested best practices in data > > modeling for a > > complex large application. The job Brett Slatkin sets out to > > do has not > > completed without the Java codes since GAE now supports Java. > > > Thanks > > Duong BaTien > > DBGROUPS and BudhNet > > > On Tue, 2010-01-12 at 14:13 -0800, Jason (Google) wrote: > > > Can you be more specific about what you're trying to > > accomplish so we > > > don't have to search through the video to find what you're > > looking > > > for? Or, at least provide a timeline reference that we can > > refer to in > > > the video. :) > > > > Thanks, > > > - Jason > > > > On Mon, Jan 11, 2010 at 7:29 AM, Duong BaTien > > <duong.bat...@gmail.com> > > > wrote: > > > Hi: > > > > Is there any blog and/or note to apply list > > properties and > > > merge-join in > > > python as in the following talk and demos > > > > > http://code.google.com/events/io/2009/sessions/BuildingScalableComple...using > > Java and JDO? > > > > Thanks > > > Duong BaTien > > > DBGROUPS and BudhNet > > > > -- > > > You received this message because you are subscribed > > to the > > > Google Groups "Google App Engine for Java" group. > > > To post to this group, send email to google- > > appengine- > > > j...@googlegroups.com. > > > To unsubscribe from this group, send email to > > google- > > > appengine-java+unsubscr...@googlegroups.com. > > > For more options, visit this group at > > > http://groups.google.com/group/google-appengine- > > java?hl=en. > > > > -- > > > > You received this message because you are subscribed to the > > Google > > > Groups "Google App Engine for Java" group. > > > To post to this group, send email to google-appengine- > > > j...@googlegroups.com. > > > To unsubscribe from this group, send email to google- > > appengine-java > > > +unsubscr...@googlegroups.com. > > > For more options, visit this group at > > >http://groups.google.com/group/google-appengine-java?hl=en. > > > -- > > You received this message because you are subscribed to the > > Google Groups "Google App Engine for Java" group. > > To post to this group, send email to google-appengine- > > j...@googlegroups.com. > > To unsubscribe from this group, send email to google- > > appengine-java+unsubscr...@googlegroups.com. > > For more options, visit this group at > > http://groups.google.com/group/google-appengine-java?hl=en. > > > -- > > You received this message because you are subscribed to the Google > > Groups "Google App Engine for Java" group. > > To post to this group, send email to google-appengine- > > j...@googlegroups.com. > > To unsubscribe from this group, send email to google-appengine-java > > +unsubscr...@googlegroups.com. > > For more options, visit this group at > >http://groups.google.com/group/google-appengine-java?hl=en. -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.