[KLUG Programming] Proper OO Technique Question

Adam Williams programming@kalamazoolinux.org
Fri, 8 Aug 2003 09:59:41 -0400 (EDT)


I've designed a new little project for myself, hopefully one that won't 
become obselete the minute I start working on it (like my XML-RPC2LPD 
gateway,  then RedHat 9 ships with CUPS which supports IPP, Grrrrr...)

Anywho... (it takes me awhile to get to the actual question)

1. I've got an OpenGroupware server.  And via 
Web-DAV/XML-RPC/ZideStore/blahblah I can easily walk around all the 
information inside the application.  Very nice.  I've already tested this.

2. All there is is a Web interface.  An Evolution plugin is forthcoming 
but that will only handle Contacts/Tasks/Calendar.  It won't support the 
concept of Projects at all.  But Projects is what I *REALLY* need.  The 
oGo server has nice project management features.  Project management can't 
be added to Evo without fork-lift-strength-hackers,  lots of time, and 
cooperation from Ximian.  I'm not one, don't have it, and why would they 
listen to me.

So I want to create a GNOME interface to oGo projects. 

I can create the a wigdet in GLADE, that is like falling off a log.  

I'll have to learn how to melt the widget into a BonoboUI component, but 
that looks like a fun rainy Saturday afternoon project.

First I want to create a clean way to communicate with the server.  All 
that Web-DAV/XML-RPC code is just ugly, and someone will write better code 
than me - so optimally I want to be able to yank my comm code someday and 
use someone else's.  (Part of the Evo Plugin project is building a 
standard C-oGo library that has things like offline-object-store, etc...).

So I'm wrapping all the comm calls into a set of CORBA objects, makes a 
nice clean division and multiple instance of the client can talk IIOP to 
the objects, etc...  I've done this before on a smaller scale.

So I've got objects like oGoProject, oGoContact, oGoEnterprise, etc...

But one question I've always had is what is the proper OO way to enumerate 
the available projects, contacts, etc...

Do you create a oGoProjectList object?  Thats what I've always done in the 
past, but it seems kind of lame.  Is there a cannonical solution to where 
you "start" in an OO model?