Hi Gaurav, we use Velocity for our database scripts -- you see a
createdb.vm plus migration scripts (5.0 to 5.1) -- we'll want our change
in both places (IIRC), new users have the createdb run and Roller
upgraders with their current DB's have the 5.0 to 5.1 migration script run.
We have multiple issues here and I'd like to get this done right (I plan
on helping out where you'd like). Namely, we've moved from a
hierarchical category structure (categories having subcategories having
their own subcatorgories etc.) to a flat single-level structure (all
categories are top level) -- that was done a week or so back. Problem
is, the database tables are still assuming hierarchical (they will work
with flat structures but are overkill--we don't need a parent ID column
anymore.) Also, the JPA objects are designed for hierarchical but can
simplified a bit more to flat structure. Incidentally, "sequenceNum" is
ambiguous about what it means, I would say "position" or "ordering" (INT
null, null for migrators who don't yet have a position defined) is clearer.
I think the simplest way to handle this--for both new installers and
upgraders--is:
1.) Database: To create a new table, say "category" designed precisely
as we need, and have the migration scripts select from the old
weblogcategory and insert into the new category table. (We then ignore
the weblogcategory table.) We'll need to test the scripts with at least
two databases (2 of probably MySQL, Derby and/or PostgreSQL) and guess
for the others--if we're wrong the user community can supply a patch
fixing it.
2.) JPA: The JPA persistence object (the old WeblogCategory) will need
simplifying/restructuring as it's now flat-level. Indeed, I think
things will get a *lot* simpler here, as it may just be the parent
Weblog holding a list of some sort of Category objects--that's it.
3.) UI Layer: The category.jsp (or whatever it's called) and its Struts
action class will now need to use the new Category object (and table)
instead of WeblogCategory. The UI page will need two changes: (1) all
new categories will be placed (and saved) at the bottom of the category
list (and as result, appear last (right-most) in the category list, and,
later (2) probably have up and down buttons in the table allowing users
to easily reorder the categories as they like. (Strictly speaking, 1
alone is all that's needed for ordering, as you can
remove/name/delete/recreate categories to eventually get them in the
position you'd like, but (2) of course is much nicer.)
4.) Template layer (haven't looked into this): The templates (probably
just a macro or two) will need updating to ensure that they output the
category names per the new position order.
It's a lot of work, but one advantage is that I'd like to do the same
thing with bookmarks/blogrolls (team discussion pending...), switch from
a hierarchical to flat-level for those too. If we can do this for
categories, the logic/UI design, etc., will carry over 100% to bookmarks.
I was planning on eventually getting to this myself, so am available to
work with you on whatever parts you'd like. I think going in order
1-2-3-4 and having separate commits may be the cleanest way of doing
this. What's nice about using a brand new table and JPA object is that
the old objects can still work in the code while we're creating the new,
we just don't activate the new until the very end.
WDYT? (Also, other team members on the above ideas...?) Or are there
other Roller tasks you'd like to sink your teeth into instead? I can
look at this otherwise, but this looks like a very good exercise for
someone wanting to get more involved in Roller, as it covers all the
layers of the webapp.
Regards,
Glen
On 12/20/2013 10:43 AM, Gaurav wrote:
Hello,
I have started working on ROL-1981, as discussed in previous
discussion threads I will add new column sequenceNum in weblogcategory
table. Then we can assign sequenceNum to each category according to
websideid. If anyone have some ideas regarding this, please help me.
Also, need some help on how to go with this issue, and how to add new
coloum, I found .sql file, do I need to add there new column. Also, Is
this possible that that when I restart the roller it will add new
column to database ?
Thanks for Any ideas/help.
[1] - https://issues.apache.org/jira/browse/ROL-1981