summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/src/Services/ImporterServices.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/Services/ImporterServices.php')
-rw-r--r--www/wiki/extensions/SemanticMediaWiki/src/Services/ImporterServices.php108
1 files changed, 108 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/Services/ImporterServices.php b/www/wiki/extensions/SemanticMediaWiki/src/Services/ImporterServices.php
new file mode 100644
index 00000000..fb8b9b10
--- /dev/null
+++ b/www/wiki/extensions/SemanticMediaWiki/src/Services/ImporterServices.php
@@ -0,0 +1,108 @@
+<?php
+
+namespace SMW\Services;
+
+use SMW\Importer\ContentCreators\DispatchingContentCreator;
+use SMW\Importer\ContentCreators\TextContentCreator;
+use SMW\Importer\ContentCreators\XmlContentCreator;
+use SMW\Importer\ContentIterator;
+use SMW\Importer\ContentModeller;
+use SMW\Importer\Importer;
+use SMW\Importer\JsonContentIterator;
+use SMW\Importer\JsonImportContentsFileDirReader;
+
+/**
+ * @codeCoverageIgnore
+ *
+ * Services defined in this file SHOULD only be accessed either via the
+ * ApplicationFactory or a different factory instance.
+ *
+ * @license GNU GPL v2
+ * @since 2.5
+ *
+ * @author mwjames
+ */
+return [
+
+ /**
+ * ImporterServiceFactory
+ *
+ * @return callable
+ */
+ 'ImporterServiceFactory' => function( $containerBuilder ) {
+ $containerBuilder->registerExpectedReturnType( 'ImporterServiceFactory', '\SMW\Services\ImporterServiceFactory' );
+ return new ImporterServiceFactory( $containerBuilder );
+ },
+
+ /**
+ * XmlContentCreator
+ *
+ * @return callable
+ */
+ 'XmlContentCreator' => function( $containerBuilder ) {
+ $containerBuilder->registerExpectedReturnType( 'XmlContentCreator', '\SMW\Importer\ContentCreators\XmlContentCreator' );
+ return new XmlContentCreator( $containerBuilder->create( 'ImporterServiceFactory' ) );
+ },
+
+ /**
+ * TextContentCreator
+ *
+ * @return callable
+ */
+ 'TextContentCreator' => function( $containerBuilder ) {
+ $containerBuilder->registerExpectedReturnType( 'TextContentCreator', '\SMW\Importer\ContentCreators\TextContentCreator' );
+
+ $connectionManager = $containerBuilder->singleton( 'ConnectionManager' );
+
+ $textContentCreator = new TextContentCreator(
+ $containerBuilder->create( 'PageCreator' ),
+ $connectionManager->getConnection( 'mw.db' )
+ );
+
+ return $textContentCreator;
+ },
+
+ /**
+ * Importer
+ *
+ * @return callable
+ */
+ 'Importer' => function( $containerBuilder, ContentIterator $contentIterator ) {
+ $containerBuilder->registerExpectedReturnType( 'Importer', '\SMW\Importer\Importer' );
+
+ $dispatchingContentCreator = new DispatchingContentCreator(
+ [
+ $containerBuilder->create( 'XmlContentCreator' ),
+ $containerBuilder->create( 'TextContentCreator' )
+ ]
+ );
+
+ $importer = new Importer(
+ $contentIterator,
+ $dispatchingContentCreator
+ );
+
+ $importer->setReqVersion(
+ $containerBuilder->singleton( 'Settings' )->get( 'smwgImportReqVersion' )
+ );
+
+ return $importer;
+ },
+
+ /**
+ * JsonContentIterator
+ *
+ * @return callable
+ */
+ 'JsonContentIterator' => function( $containerBuilder, $importFileDirs ) {
+ $containerBuilder->registerExpectedReturnType( 'JsonContentIterator', '\SMW\Importer\JsonContentIterator' );
+
+ $jsonImportContentsFileDirReader = new JsonImportContentsFileDirReader(
+ new ContentModeller(),
+ $importFileDirs
+ );
+
+ return new JsonContentIterator( $jsonImportContentsFileDirReader );
+ },
+
+]; \ No newline at end of file