r20 - 08 Feb 2007 - 12:34:46 - BrianMoseleyYou are here: OSAF >  Journal Web  >  ContributorNotes > BrianMoseleyNotes > BrianMoseleyCosmoEIM

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

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r20 < r19 < r18 < r17 < r16 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.