Re: [ANN] MaCaTa - An introduction by example to 3 frameworks

From: Steve Wells (websystem..mail.com)
Date: Thu Apr 06 2006 - 19:02:15 EDT

  • Next message: Andrus Adamchik: "Re: finding the correct DataNode"

    Hi Michael,

    Thanks very much for the feedback. You're right, I've been rather busy with
    this. It's not perfect but I thought good enough to release for a first
    cut. I'm not sure how much more I can do with it though as in a few weeks
    I'm taking a few months off and travelling around Europe, with the aim of
    searching for some work later.

    I really like your solution, sometimes we get caught up believing that one
    way is the best and just go with it. You've thought a bit about the
    problem and solved it in a sensible way. Now that you've shown this way it
    looks like an obvious way to do this. I guess the thing I like about
    squeezers is that they are a touch simpler to use...once you've got it all
    setup; you don't have to worry about indexes (not a big problem at all).
    Unless security is a concern. So I think in a lot of cases what you have
    outlined is the better solution (off the top of my head). Perhaps it would
    dwell nicely within a Cayenne and Tapestry wiki?

    Cheers,

    Steve

    On 07/04/06, Gentry, Michael (Contractor) <michael_gentr..anniemae.com>
    wrote:
    >
    > I like the CrudEngine. :-)
    >
    > I don't have time to fully explore it right now, but it looks like there
    > is some really nice tutorial/reference information there. You've been
    > busy!
    >
    > I noticed you put in a note about DataSqueezers not being secure, too.
    > That's a big issue for me. I've adopted the technique now of encoding
    > in my DirectLink the index of the data object in my internal List. For
    > example:
    >
    > * Tapestry enhancements:
    > public abstract List getQueues();
    > public abstract void setQueues(List queues);
    > public abstract int getQueueIndex();
    > public abstract void setQueueIndex(int index);
    >
    >
    > * Save query results:
    > ...
    > List queues = dataContext.performQuery(...);
    > setQueues(queues); // save queues off in page/session space
    > ...
    >
    >
    > * HTML Template:
    > <span jwcid=..or" source="ognl:queues" index="ognl:queueIndex" ...>
    > ...
    > <a href="#" jwcid=..irectLink" listener="listener:showQueue"
    > parameters="ognl:queueIndex">
    >
    >
    > * Handle selection of queue (click on DirectLink):
    > public void showQueue(int index)
    > {
    > getQueues().get(index);
    > ...
    > }
    >
    >
    > So, if my performQuery() returns 20 rows I save those objects off in the
    > page session space. The DirectLink will encode 0-19 as the queueIndex
    > when creating the hyperlinks. When they click on a link, I get the
    > object they clicked on via the index (supplied by T4). The index is
    > only valid inside the List of objects I've stored off for them as a
    > result of the query. If they monkey with the URL, they can't get data
    > that isn't available to them in the first place, and if they change it
    > to 20+, it'll throw an exception. This keeps the PKs out of the picture
    > completely and no squeezing needs to be done. If that makes any sense.
    > :-)
    >
    > Thanks,
    >
    > /dev/mrg
    >
    >
    >
    > -----Original Message-----
    > From: Steve Wells [mailto:websystem..mail.com]
    > Sent: Thursday, April 06, 2006 4:07 AM
    > To: cayenne-use..ncubator.apache.org
    > Subject: [ANN] MaCaTa - An introduction by example to 3 frameworks
    >
    >
    > Hi all,
    >
    > I'd like to announce the first release of MaCaTa - a web application and
    > tutorial based on 3 excellent and compatible open source java based
    > frameworks...
    > Maven-Cayenne-Tapestry. Hence the highly imaginative name of MaCaTa ;)
    >
    > The application is all about allowing a user to manage data, it is all
    > CRUD
    > (Create, Read, Update, Delete). For the developer you configure it to
    > point to a Cayenne object and it displays a list of data in the
    > corresponding
    > table and allows the user to work with that data. There is more
    > code-configuration
    > available such as the ability to disallow deletes.
    >
    > On top of this there is a reasonable amount of documentation that walks
    > you
    > through
    > creating your own applications based on these technologies. In fact the
    > documentation
    > is a super-set of what is available in the application itself.
    >
    > More information is available at:
    > http://web.aanet.com.au/websystems/index.html
    >
    > Regards,
    >
    > Steve
    >



    This archive was generated by hypermail 2.0.0 : Thu Apr 06 2006 - 19:02:40 EDT