Extending MarkReader

To extend MarkReader, at first, you must understand MarkReader's modular framework to plug-in report generators, visualizers, knowledge sharing tools or something. An OMR result data structure is a kind of object tree. The framework traverses a number of nodes in the result tree with the Depth-first search algorithm, and fires events at the entrance and exit of each nodes. It resembles SAX. There is an event listener interface which is called from the framework. You can make your own module with implementing the event listener interface. Please check net.sqs2.omr.session.traverse.* in "sqs-reader".

In the class net.sqs2.omr.session.service.ResultTraverseEventListenersFactory, you can find some example of modules which is implementing the event listener interface:
CSVExportModule, ExcelExportModule, HTMLReportExportModule, ChartExportModule, TextAreaExportModule, DummyExportModule, etc. These modules are located in package net.sqs2.omr.result.*.

Note: HTMLReportExportModule, ChartExportModule and TextAreaExportModule are not tested for now.