Hello Devs,
I have been working on implementing document splitting functionality in
office importer for last two weeks. Currently it's working nicely but before
it can be integrated into our main source tree there are few things we need
to agree upon.
1. New UI of the office importer application.
2. Design of the splitting functionality.
Apart from above two topics, I need a good suit of tests as well (working on
it).
== Current UI ==
Screenshot:
http://i41.tinypic.com/2h4i1s9.jpg
As you can see, there are new options for appending content into an existing
page plus performing the split operation. Since I'm not a HCI expert I'm
pretty sure some of the aspects of this UI need to be changed. So your feed
back is very important on this :)
== Current Design ==
UML Diagram:
http://i42.tinypic.com/345bxhw.png
There are two things I need to discuss with this design.
1) I'm using WikiDocument objects to buffer / collect XDOM fragments that
represent newly split documents. This allows me to associate names, parents,
titles etc. with corresponding XDOM structures so that after the split
operation I can save them as wiki pages. As you can see, WikiDocument is
kind of a model object that should be replaced when the new model component
is available. Still, I'm not sure if the idea of WikiDocument should be
avoided even at this point.
2) DocumentSplitter is not a component interface. I had to do this because
HeadingLevelDocumentSplitter has internal state and I couldn't think of a
way to make it a component. However I can make it a component by abstracting
out the split criterion from the document splitter as described in next
(alternative) design.
== Alternative Design ==
UML Diagram:
http://i39.tinypic.com/28k24w4.png
Here I have abstracted out the split criterion from the document splitter.
The DefaultDocumentSplitter will recurse through the main XDOM asking
SplitCriterion and NamingCriterion to take care of the splitting operation.
I think this design is more reusable than the first design. WDYT?
If you have any comments regarding these topics, please let me know.
Thanks.
- Asiri