Q:

Is Spring Roo the right tool for me? (See list of requirements in post)

I watched some videos, demos of Roo and I kind of liked it. However before starting using it, I'd like to ask few things more experienced programmers with Roo.

Roo uses lot of AOP. Is it okay to write custom Java code and let Roo generated files just "be alone"? Or does whole Roo structure require some AOP knowledge. In other words, if I want to customize Roo project (add non CRUD functions), do I need to mess with AOP?
I've seen console approach of generating entities. Can Roo convert my database that already runs into Roo code (generate entities for me)?
Sometimes I have big entities. I don't want to show certain columns to UI. Is this kind of customization easily achievable?
Getting current views - I'd like to do some exports of what user sees right now in UI (say to XML). Auto export would be great, but at least can I easily fetch current data in UI view? (say user is seeing 10% of data in DB table, I'd like to store them in XML)
My database often changes. How does Roo go by with changing entities? That's dynamically adding/removing certain columns ...
Importing data (or whole new databases). I need to drop&create database on-the-fly. So UI might change a bit (new columns) and data will change for sure. Will it work with simple "run script and refresh"?
Rollbacks. Undo any changes you did.  Does it provide built-in support for such a thing?
Reporting or at least integrating with popular reporting tools.

So what do you think? Does Roo match these? Should I give it a try? Or am I better to start from scratch using say plain GWT, JSF, whatever?
OT: seeing this requirements, feel free to leave comment what kind of Java framework would you choose. I am now thinking of GWT (kind of know that), JSF or Spring Roo (no, I am not planning to write JavaScript UI myself) ;-)

A:

Here are the answers per my knowledge of Roo:

1.Roo uses lot of AOP. Is it okay to write custom Java code and let Roo
  generated files just "be alone"? Or
  does whole Roo structure require some
  AOP knowledge. In other words, if I
  want to customize Roo project (add non
  CRUD functions), do I need to mess
  with AOP?

No, you don't need to mess with AOP. Most of the Roo generated files (like .aj etc.) can be "left alone" apart from the files where you will put some code.

2.I've seen console approach of generating entities. Can Roo convert
  my database that already runs into Roo
  code (generate entities for me)?

Yes, [check out the Roo reverse engineering steps][1].

3.Sometimes I have big entities. I don't want to show certain columns to
  UI. Is this kind of customization
  easily achievable?

Yes.

4.Getting current views - I'd like to do some exports of what user sees
  right now in UI (say to XML). Auto
  export would be great, but at least
  can I easily fetch current data in UI
  view? (say user is seeing 10% of data
  in DB table, I'd like to store them in
  XML)

Yes.

5.My database often changes. How does Roo go by with changing entities?
  That's dynamically adding/removing
  certain columns ...

Refer my answer to question 2.

6.Importing data (or whole new databases). I need to drop&create
  database on-the-fly. So UI might
  change a bit (new columns) and data
  will change for sure. Will it work
  with simple "run script and refresh"?

Yes

7.Rollbacks. Undo any changes you did. Does it provide built-in support for
  such a thing?

No. There is no support for rollback. There is a feature request pending for the same. However, there are work arounds.

8.Reporting or at least integrating with popular reporting tools.

This wouldn't be any different than any of your normal Java application just because you use Roo.

So what do you think? Does Roo match
  these? Should I give it a try? Or am I
  better to start from scratch using say
  plain GWT, JSF, whatever?

Hope the above answers clarify!

