Hi Devs,
I have implemented an API for Wiki Importer.
The main component is org.xwiki.wikiimporter.WikiImporter
**WikiImporterDescriptor getDescriptor()
**void importWiki(Object object, WikiImporterListener listener)
**WikiImporterType getType()
Wiki Call back event listener: org.xwiki.wikiimporter.WikiImporterListener
**void beginWikiPage(String pageName, Map<String, String> params)
**void beginWikiPageRevision(String pageName, int revision, Map<String,
String> params)
**void beginObject(String objectType, Map<String, String> params)
**void onProperty(String property, Map<String, String> params, String value)
**void endObject(String objectType, Map<String, String> params)
**void endWikiPageRevision(String pageName, int revision, Map<String,
String> params)
**void endWikiPage(String pageName, Map<String, String> params)
**void beginAttachment(String attachmentName, Map<String, String> param)
**void onAttachmentRevision(String attachmentName, Map<String, String>
params, InputSource input)
**void endAttachment(String attachmentName, Map<String, String> params)
WikiImporter parser for parsing documents (eg: XML ) :
org.xwiki.wikiimporter.WikiImporterParser
**void parse(InputSource source, WikiImporterListener listener) throws
WikiImporterParseException
WikiImporter velocity bridge :
org.xwiki.wikiimporter.WikiImporterVelocityBridge
**public WikiImporterTypeFactory getWikiImporterTypeFactory()
**public WikiImporter getWikiImporter(String wikiImporterType) throws
WikiImporterException
WikiImporter type factory has methods to handle the supported other wiki
formats/types. : org.xwiki.wikiimporter.WikiImporterTypeFactory
**WikiImporterType createTypeFromIdString(String wikiImporterType) throws
WikiImporterException
**List<WikiImporterType> getAvailableTypes() throws WikiImporterException
This is a typical use case in my mind.
1. Get WikiImporterFactory instance with
WikiImporterVelocityBridge#getWikiImporterFactory
2. Call the WikiImporterTypeFactory#getAvailableTypes() --> can be used
at UI level to show the supported types ( MediaWiki XML, XMLRPC etc .. )
3. Select the format type and call
WikiImporterVelocityBridge#getWikiImporter(String wikiImporterType) to get
selected WikiImporter instance.
4. Use the WikiImporterDescriptor to generate the UI. ( Similiar to
MacroDescriptor)
5. User enters all the parameters ( UI )
6. Call WikiImporter#importWiki(Parameters Class Object,
WikiImporterListener ) to start the import process. Parameters Class has all
the required parameters for WikiImporter
7. Parser parses and WikiImporterListener events are fired.
The next step would be to create xwiki pages on the fly( one at a time - at
every WikiImporterListener#endWikiPage() event. )
Remaining : API to import the generated WikiPages into XWiki
Is it good idea to use a component which makes use of document bridge to
import the Wiki Pages, Attachments etc.. into XWiki. If not, what will be
the best way to do it?
--
Arun Reddy