1.3.1 Beta (3/15/08) Fixed an Javadoc comment in XMLHierarchy that referred to the old way it functioned before the previous version was released Removed the obsolete and package-private display methods; equivalent work can be accomplished by the storeToXML(OutputStream) method Added a new package: net.jinx.db.file; this package contains classes related to a simple binary blob database I'm building, as just about every database implementation I've used or read the API docs of does something I feel is completely wrong for my needs 1.3.0 Beta (11/10/07) Fixed a typo in the Javadoc comment for Hierarchy.commit() Added a new class called net.jinx.db.DefaultHierarchy; read it's API docs for more information Added a new class called net.jinx.db.ImmutableHierarchy; this in an immutable wrapper for another Hierarchy Added a new class called net.jinx.db.NoRemoveIterator; this is an immutable wrapper for java.util.Iterator Objects Added a new class called net.jinx.db.SimpleHierarchy; this is a very simplistic in-memory Hierarchy with no frills; the commit(), close() and rollback() methods are implemented as blank, no-operation methods Added a new class called net.jinx.db.MemoryHierarchy; this is a SimpleHierarchy sub-class with functional commit() and rollback() methods that ssave and restore the Hierarchy's state to an in-memory backup copy XMLHierarchy is now a sub-class of MemoryHierarchy; rollback() calls should be MUCH faster now as reading from disk is no longer required except during initialization Added a pair of new constructors to XMLHierarchy for building based on File objects; the old constructors are now based on these Fixed some documentation typos for XMLHierarchy's constructors Marked the no argument constructor of XMLHierarchy deprecated; it's been replaced by the SimpleHierarchy class Added a new class called net.jinx.db.LockingXMLHierarchy; this extension of XMLHierarchy creates an additional file and then locks it so that any JVM trying to access the files via the same configuration will fail Added a new package called net.jinx.db.transaction; this contains classes related to wrapping Objects in very database-like veneer; it's all pre-alpha code, so I wouldn't suggest using it, but you may find it interesting none the less Hierarchy now implements Serializable; the only implmentation that won't serialize is LockingXMLHierarchy, as it has some members that cannot be serialized The methods related to XML parsing and storing in Hierarchy have been generalized; it's now much easier to add new types; this is implemented with a set of immutable Map Objects that contain parsers, translators and class to type String mappings; all that must be done is add appropriate key-value pairs to these maps at the top of the source file and add methods to get and set attributes with those types In order to make the above possible, I added two new source files for the package-private interfaces AttributeParser and AttributeUnparser; each of these files contains multiple instances for all the types that need them Fixed a subtle error that could pop up when grabbing arrays from a Hierarchy; if you asked for the exact type stored in the Hierarchy a direct reference was returned, allowing the modification a Hierarchy without touching it's methods; these methods are now returning a copy of the array; sorry for the slight slow down this causes, but it is important for ImmutableHierarchy and the HierarchyListener interface and to avoid breaking some of the guarantees of how Hierarchy operates Made a small change in all of the arrray handling getAttribute methods that will handle arbitrary Number[] instances being stored directly in a Hierarchy like primitives; this was handy for the changes related to the next comment Added new methods to Hierarchy for handling BigDecimal and BigInteger in much the same manner as the primitive types Added utility methods to handle char and char[] types; these were implemented by converting to String Objects, as I don't see the need to go to all the effort to deal with the headache for a tiny little speed-up on something nobody is likely to use anyway Fixed a bug that could cause methods that return primitives to return default values instead of a parsed value when converting from a String; this may have been happening when numbers were padded with spaces Added a new class called net.jinx.db.SynchronizedHierarchy; this wraps another Hierarchy in a Thread-safe manner SimpleHierarchy and MemoryHierarchy each have a new utility Constructor that allows reading in an XML file; don't think this functions like XMLHierarchy; they're not persistent 1.2.1 Stable (1/20/07) Added some missing Javadoc comments to Hierarchy 1.2.0 Stable (3/3/06) Added a new utility method to Hierarchy; getAttribute(String, URL) for parsing URLs; I thought it might come in handy Added a new utility method to Hierarchy; setAttribute(String, URL) to go with the new getAttribute(String, URL) method Added two new methods related to loading and storing Hierarchies to/from Properties objects; loadFromProperties(Properties) and parseFromProperties(Properties) 1.1.0 Stable (10/18/05) Added event listener capability to Hierarchy and XMLHierarchy Finally moved HierarchyMetalTheme to a source tree intended for gui stuff 1.0.0 Beta (10/17/05) Initial release for The Deimos Project; previous versions were for the Modeler Added direct handling of primitives to Hierarchy and XMLHierarchy; this involved a relatively small, but incompatible API change; extensions of Hierarchy will now have to implement setAttributeObject(String, Object) and getAttributeObject(String) instead of setAttribute(String, String) and getAttribute(String); the latter two now have concrete implementations in Hierarchy itself Added alot of utility methods to Configuration for converting various primitive array types into eachother Altered the format of the files Hierarchy parses and produces; attributes have an extra key/value pair called "type" that designates the primitive type for the attribute; if it's missing, then the type is assumed to be String; You'll be happy to know that the new format is backwards compatible, since all attributes used to be Strings These changes should significantly speed up in-memory access of primitive data stored in a Hierarchy, since now attributes won't be dynamically converted from Strings unless the attribute is typed as a String; conversion will happen when written to disk, which may slow things down a bit, but overall performance should be improved Added a main(String[]) method to XMLHierarchy; it allows you to specify two files and the first will be parsed and then written to the second; this will let you see whether or not the file is properly formed by comparing the results with the original; it will also clean up and properly indent the file Changed the return value of the removeAttribute(String) method from String to Object; this was required to accomodate the fact that Hierarchy can store more than just Strings now