Metis Project

Metis is a subComponent of the jOceanus project, providing support features for data. It is named after the titaness Metis, who was viewed as the embodiment of prudence, wisdom and wise counsel.

It provides a number of facilities for managing data.

JDataViewer set of classes

These classes provide a window to walk through data structures. It supports a set of interfaces that allow conforming objects to declare internal fields which are then displayed in an HTML window.

A Preference Manager set of classes

These provide a generic manager for a set of java preferences. It provides a set manager which will load and store the set and retain a single copy. It also provides an editing panel.

A FieldSet Manager set of classes

This provides a generic manager for a set of java swing components that are used to display/edit an item that conforms to the DataViewer standards.

Underlying classes are provided to simplify display and editing of various dataTypes used in jOceanus.

JSortedList implementation

jSortedList provides a sorted LinkedList implementation of the generic List interface.

The basic list implementation is OrderedList which provides a simple LinkedList. Elements that are added to the list are added in the appropriate position according to their natural ordering. Attempts to explicitly select the position of an element are rejected. Null elements are not allowed and an element cannot appear twice in the same list.

Speedy access to an element is provided by holding a reference to every 32nd element in the list. Hence when using random access on the list to obtain the element at a specific index, the search can begin at the nearest reference point ensuring that no more than 32 elements are ever searched. In a similar fashion a binary search using these references is used to locate both an element in the list and the insert point for an element.

A variant list implementation OrderedIdList is provided which extends the basic implementation for elements which provide a unique invariant id such as an Integer. This id is used in a hash map to provide fast mapping from element to position in the list.

A SpreadSheet Manager

This is an isolation layer providing support for Microsoft Excel spreadsheets via POI and OpenOffice Calc spreadsheets via ODFDOM, such that the user is not aware as to differences between the underlying packages.