summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SemanticMediaWiki/src/Services/ImporterServices.php
blob: fb8b9b1019309ea5ba8c629aadcc83910b0a0e9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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 );
	},

];