Please see the answer i sent out yesterday for a proper solution.

Duong BaTien
DBGROUPS and BudhNet

On Sat, 2010-01-30 at 01:14 -0800, digitalsam007 wrote:
> 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.

Reply via email to