It sounds like you're running into a problem with how you're trying to organizing this. In general the framework is organized into the higher level tools like the entity engine, service engine, widgets, webapp tools, etc. There are many framework features which end up having touch points in a lot of these higher level tools. The framework is organized by the higher level tools and not by the individual features that cut across multiple tools in the framework.

The calendar stuff you are talking about cuts across various higher level tools in the framework, and those tools represent different levels in the framework with dependencies between them. If you try to put it in a single component instead of organizing it the way the rest of the framework is organized you'll run into circular dependencies.

Not to minimize your work (this is a great set of features for OFBiz and you're really adding some cool stuff), but in a way this is like the status management stuff in the OFBiz Framework, though admittedly a more complex case. It wouldn't make much sense to have the status stuff in its own component because it is just one of many features that is used in various parts of the framework, though mostly used in the applications. It can live in the common component because none of the lower level components use it. We don't really have that luxury with time management stuff. It has lower level pieces that will be used by the framework, and higher level pieces that use high level parts of the framework for user interaction and such.

In other words, it is a feature with many touch points in the framework and one would expect to see the code for that one "feature" spread across various "tool" components.

-David


On Oct 3, 2008, at 12:15 PM, Adrian Crum wrote:

My proposal was to consolidate all calendar-related code into one folder. In other words, move the recurrence stuff from service into the new folder.

I picture the entire calendar framework looking something like this:

1. A calendar API - get a calendar, query it, etc.
2. Calendar persistence workers - to/from entity engine, to/from iCalendar, etc. 3. Calendar UI workers - Java code to provide convenience objects to UI artifacts
4. Re-usable UI artifacts - ftl files, widgets, etc.

-Adrian

David E Jones wrote:
But still, why have yet another place where calendar related stuff exists? Why not put it with the other things already there?
-David
On Oct 3, 2008, at 11:48 AM, Adrian Crum wrote:
Have you taken a look at the jetty and geronimo folders? Once the calendar stuff is completely built out, it will be larger than those. Its size will probably be more along the lines of the bi folder.

-Adrian

David E Jones wrote:
Wouldn't it be kind of a small component if we restrict it to just calendar stuff? My opinion on this is to just keep it with the other stuff in the service component, since we already have things there. Hopefully there has been enough discussion about it and there is enough precedent with the recurrence entities that people won't have a hard time with it.
Don't worry too much about it. It is what it is, and it's okay.
-David
On Oct 3, 2008, at 9:21 AM, Adrian Crum wrote:
As was discussed before, I had a hard time deciding where to put the new temporal expression stuff because of dependencies in the build process. I ended up putting it in the service component in order to get everything to compile okay, but seriously, it doesn't make sense having it there.

I have more calendar-related classes I want to introduce to the project, and I will end up having the same problem with those. I don't want to put everything in service. I need a new folder in the framework folder.

The calendar classes (recurrence and temporal expression) depend upon the base and entity components. The service component depends upon the calendar classes (for job scheduling). So, I need the new folder to be in between entity and service in the build process.

I'd like to add a calendar folder to the framework folder. It would contain all of the existing recurrence classes, the temporal expression classes, and the yet-to-be-committed classes.

I wouldn't suggest this if I could find some other logical way to place things.

What do you think?

-Adrian

Reply via email to