Mike, > > jsword currently requires the jgl container api. The current, standard > > java container library is not extensive enough to contain a multimap > > equivelant of the c++ stl. The primary difference between a map and > > multimap is that a multimap has the ability to iterate thru duplicate > > key values, whereas a map does not allow duplicate key values. > > I am still reading up on the project so there may be some holes in my > logic here. > > Did you do the multimap exclusively for the SWConfig object? If so it > seems to be that a better way to do this is by using a combination of > HashMap and Properties objects. Each .conf file would have it's own > Properties object, which are then stored in a configuration HashMap. So > getting the value of a property would look like: > > String val = ((Properties)configHash.get("KJV")).getProperty("ModDrv");
the issue is more with something like: [KJV] DataPath=./modules/texts/rawtext/kjv/ ModDrv=RawText SourceType=GBF Lang=en GlobalOptionFilter=GBFFootnotes GlobalOptionFilter=GBFStrongs GlobalOptionFilter=GBFMorph in c++, I can: SWMgr *manager = new SWMgr(); string modDrv = (*manager->config)["KJV"]["ModDrv"]; and, (this is the multimap stuff): for (ConfigEntMap::iterator it = (*manager->config)["KJV"].lower_bound("GlobalOptionFilter"); it != (*manager->config)["KJV"].upper_bound("GlobalOptionFilter"); it++) { // do whatever with *it; } I don't believe a Properties object, nor a HashMap object allow duplicate key values. You can correct me if I'm wrong. I don't mind using the jgl library. I'm sure we'll end up using other 3rd party libs before things are thru. Sounds like you've dug into things! Great! -Troy. > > Which you could then hide in a convenience method if desired: > > SWConfig config = SWConfig.getInstance(); > String val = config.getModuleProperty("KJV", "ModDrv"); > > Of course you still need a way to iterate through the modules and > properties, but that's already done for with the HashMap.keySet() and > Properties.keySet() methods. Which you could again hide: > > Iterator moduleIterator = config.iterator(); > // ... later that afternoon ... > Iterator propertyIterator = config.getModuleIterator( modName ); > > The names may be changed to protect the innocent, but I hope the idea is > clear. > > Am I understanding all of this correctly, or do I need to go back and > rethink this? > > /mike > > -- > ****************************************** > Mike Dougherty -- Java Software Engineer > ****************************************** > Going to church does not make a person religious, nor does going to > school > make a person educated, any more than going to a garage makes a person > a car.