Cosmo 0.6 EIM
The Chandler
"External Information Model"?, or EIM, is a relational data model that describes Chandler data for the benefit of other applications. Chandler and Cosmo exchange EIM data through the OSAF-proprietary
Morse Code sharing protocol. The primary wire format for EIM data in Morse Code packets is
EIMML, a custom XML dialect.
Code Design
org.osaf.cosmo.eim
Provides a low-level model for EIM records. It is not aware of particular record type schemas and does not include facilities for serialization or I/O.
-
EimRecordSet, EimRecord, EimRecordKey, EimRecordField - basic model classes
-
BlobField, BytesField, ClobField, DateTimeField, DecimalField, IntegerField, TextField, TimeStampField - concrete subclasses of
EimRecordField for each EIM field type
org.osaf.cosmo.eim.eimml
Serializes EIM records into EIMML. It is implemented in a stream-oriented fashion, allowing recordsets to processed individually without consuming the entire stream or requiring the entire EIMML document to be read into an in-memory data structure.
XML processing is performed with the
StAX streaming XML API and the
Woodstox XML processor (no custom Woodstox APIs are used).
-
EimmlStreamReader - reads EIM recordsets from an EIMML document stream
-
EimmlStreamWriter - writes EIM recordsets to an EIMML document stream
-
EimmlTypeConverter - performs low-level conversion from XML values to EIM field values
Clients will usually only use
EimmlStreamReader and
EimmlStreamWriter directly.
org.osaf.cosmo.eim.schema
Interprets EIM records in the context of record type schemas such as item, event, task. Applies EIM record sets to items and generates EIM record sets from items.
-
EimTranslator - subsystem facade class that provides a simple API for recordset/item translation
-
BaseApplicator, BaseItemApplicator, BaseStampApplicator - Base classes for schema-specific tools that apply data/changes from an EIM record set to an item
-
BaseGenerator, BaseItemGenerator, BaseStampGenerator - Base classes for schema-specific tools that generate an EIM record set from an item
-
EimFieldValidator - performs low-level validation of EIM field values according to schema definitions (e.g. max length of a text value)
-
EimValueConverter - performs low-level conversion of EIM field values to model values (e.g. text value to list of ical4j
Recur instances for an event's recurrence rules)
-
collection, contentitem, event, message, note, task - subpackages for each record type schema, each containing concrete applicator and generator classes and often a constants interface
-
unknown - subpackage for processing records of unknown type
Clients need only use
EimTranslator, specifically the methods
applyRecords() and
generateRecords().
Deferred
- RDATEs with periods
- consume and emit icalext records
- items in multiple collections
Links