WikibaseFactory::newItemLookup()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 0
cts 1
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
namespace Wikibase\Api;
4
5
use Deserializers\Deserializer;
6
use Mediawiki\Api\MediawikiApi;
7
use Serializers\Serializer;
8
use Wikibase\Api\Lookup\EntityApiLookup;
9
use Wikibase\Api\Lookup\ItemApiLookup;
10
use Wikibase\Api\Lookup\PropertyApiLookup;
11
use Wikibase\Api\Service\AliasGroupSetter;
12
use Wikibase\Api\Service\BadgeIdsGetter;
13
use Wikibase\Api\Service\DescriptionSetter;
14
use Wikibase\Api\Service\EntityDocumentSaver;
15
use Wikibase\Api\Service\EntitySearcher;
16
use Wikibase\Api\Service\ItemMerger;
17
use Wikibase\Api\Service\LabelSetter;
18
use Wikibase\Api\Service\RedirectCreator;
19
use Wikibase\Api\Service\ReferenceRemover;
20
use Wikibase\Api\Service\ReferenceSetter;
21
use Wikibase\Api\Service\RevisionGetter;
22
use Wikibase\Api\Service\RevisionSaver;
23
use Wikibase\Api\Service\RevisionsGetter;
24
use Wikibase\Api\Service\SiteLinkLinker;
25
use Wikibase\Api\Service\SiteLinkSetter;
26
use Wikibase\Api\Service\StatementCreator;
27
use Wikibase\Api\Service\StatementGetter;
28
use Wikibase\Api\Service\StatementRemover;
29
use Wikibase\Api\Service\StatementSetter;
30
use Wikibase\Api\Service\ValueFormatter;
31
use Wikibase\Api\Service\ValueParser;
32
use Wikibase\DataModel\DeserializerFactory;
33
use Wikibase\DataModel\Entity\BasicEntityIdParser;
34
use Wikibase\DataModel\SerializerFactory;
35
use Wikibase\DataModel\Services\Lookup\EntityLookup;
36
use Wikibase\DataModel\Services\Lookup\EntityRetrievingTermLookup;
37
use Wikibase\DataModel\Services\Lookup\ItemLookup;
38
use Wikibase\DataModel\Services\Lookup\PropertyLookup;
39
use Wikibase\DataModel\Services\Lookup\TermLookup;
40
41
/**
42
 * @author Addshore
43
 *
44
 * @access public
45
 */
46
class WikibaseFactory {
47
48
	/**
49
	 * @var MediawikiApi
50
	 */
51
	private $api;
52
53
	/**
54
	 * @var Deserializer
55
	 */
56
	private $dataValueDeserializer;
57
58
	/**
59
	 * @var Serializer
60
	 */
61
	private $dataValueSerializer;
62
63
	/**
64
	 * @param MediawikiApi $api
65
	 * @param Deserializer $dvDeserializer
66
	 * @param Serializer $dvSerializer
67 16
	 */
68 16
	public function __construct( MediawikiApi $api, Deserializer $dvDeserializer, Serializer $dvSerializer ) {
69 16
		$this->api = $api;
70 16
		$this->dataValueDeserializer = $dvDeserializer;
71 16
		$this->dataValueSerializer = $dvSerializer;
72
	}
73
74
	/**
75
	 * @since 0.1
76
	 * @return RevisionSaver
77 1
	 */
78 1
	public function newRevisionSaver() {
79 1
		return new RevisionSaver(
80 1
			$this->newWikibaseApi(),
81 1
			$this->newDataModelDeserializerFactory()->newEntityDeserializer(),
82 1
			$this->newDataModelSerializerFactory()->newEntitySerializer()
83
		);
84
	}
85
86
	/**
87
	 * @since 0.1
88
	 * @return RevisionGetter
89 1
	 */
90 1
	public function newRevisionGetter() {
91 1
		return new RevisionGetter(
92 1
			$this->api,
93 1
			$this->newDataModelDeserializerFactory()->newEntityDeserializer()
94
		);
95
	}
96
97
	/**
98
	 * @since 0.4
99
	 * @return RevisionsGetter
100 1
	 */
101
	public function newRevisionsGetter() {
102 1
		return new RevisionsGetter(
103
			$this->api,
104
			$this->newDataModelDeserializerFactory()->newEntityDeserializer()
105
		);
106
	}
107
108
	/**
109
	 * @since 0.2
110
	 * @return ValueParser
111 1
	 */
112 1
	public function newValueParser() {
113 1
		return new ValueParser(
114 1
			$this->api,
115 1
			$this->dataValueDeserializer
116
		);
117
	}
118
119
	/**
120
	 * @since 0.2
121
	 * @return ValueFormatter
122 1
	 */
123 1
	public function newValueFormatter() {
124 1
		return new ValueFormatter(
125 1
			$this->api,
126 1
			$this->dataValueSerializer
127
		);
128
	}
129
130
	/**
131
	 * @since 0.2
132
	 * @return ItemMerger
133 1
	 */
134 1
	public function newItemMerger() {
135
		return new ItemMerger( $this->newWikibaseApi() );
136
	}
137
138
	/**
139
	 * @since 0.2
140
	 * @return AliasGroupSetter
141 1
	 */
142 1
	public function newAliasGroupSetter() {
143
		return new AliasGroupSetter( $this->newWikibaseApi() );
144
	}
145
146
	/**
147
	 * @since 0.2
148
	 * @return DescriptionSetter
149 1
	 */
150 1
	public function newDescriptionSetter() {
151
		return new DescriptionSetter( $this->newWikibaseApi() );
152
	}
153
154
	/**
155
	 * @since 0.2
156
	 * @return LabelSetter
157 1
	 */
158 1
	public function newLabelSetter() {
159
		return new LabelSetter( $this->newWikibaseApi() );
160
	}
161
162
	/**
163
	 * @since 0.2
164
	 * @return ReferenceRemover
165 1
	 */
166 1
	public function newReferenceRemover() {
167
		return new ReferenceRemover( $this->newWikibaseApi() );
168
	}
169
170
	/**
171
	 * @since 0.2
172
	 * @return ReferenceSetter
173 1
	 */
174 1
	public function newReferenceSetter() {
175 1
		return new ReferenceSetter(
176 1
			$this->newWikibaseApi(),
177 1
			$this->newDataModelSerializerFactory()->newReferenceSerializer()
178
		);
179
	}
180
181
	/**
182
	 * @since 0.2
183
	 * @return SiteLinkLinker
184 1
	 */
185 1
	public function newSiteLinkLinker() {
186
		return new SiteLinkLinker( $this->newWikibaseApi() );
187
	}
188
189
	/**
190
	 * @since 0.2
191
	 * @return SiteLinkSetter
192 1
	 */
193 1
	public function newSiteLinkSetter() {
194
		return new SiteLinkSetter( $this->newWikibaseApi() );
195
	}
196
197
	/**
198
	 * @since 0.5
199
	 * @return BadgeIdsGetter
200
	 */
201
	public function newBadgeIdsGetter() {
202
		return new BadgeIdsGetter( $this->api );
203
	}
204
205
	/**
206
	 * @since 0.5
207
	 * @return RedirectCreator
208
	 */
209
	public function newRedirectCreator() {
210
		return new RedirectCreator( $this->newWikibaseApi() );
211
	}
212 3
213 3
	private function newDataModelDeserializerFactory() {
214 3
		return new DeserializerFactory(
215 3
			$this->dataValueDeserializer,
216 3
			new BasicEntityIdParser()
217
		);
218
	}
219 3
220 3
	private function newDataModelSerializerFactory() {
221
		return new SerializerFactory( $this->dataValueSerializer );
222
	}
223
224
	/**
225
	 * @since 0.5
226
	 * @return StatementGetter
227 1
	 */
228 1
	public function newStatementGetter() {
229 1
		return new StatementGetter(
230 1
			$this->api,
231 1
			$this->newDataModelDeserializerFactory()->newStatementDeserializer()
232
		);
233
	}
234
235
	/**
236
	 * @since 0.5
237
	 * @return StatementSetter
238 1
	 */
239 1
	public function newStatementSetter() {
240 1
		return new StatementSetter(
241 1
			$this->newWikibaseApi(),
242 1
			$this->newDataModelSerializerFactory()->newStatementSerializer()
243
		);
244
	}
245
246
	/**
247
	 * @since 0.5
248
	 * @return StatementCreator
249 1
	 */
250 1
	public function newStatementCreator() {
251 1
		return new StatementCreator(
252 1
			$this->newWikibaseApi(),
253 1
			$this->dataValueSerializer
254
		);
255
	}
256
257
	/**
258
	 * @since 0.5
259
	 * @return StatementRemover
260 1
	 */
261 1
	public function newStatementRemover() {
262
		return new StatementRemover( $this->newWikibaseApi() );
263
	}
264
265
	/**
266
	 * @return WikibaseApi
267 12
	 */
268 12
	private function newWikibaseApi() {
269
		return new WikibaseApi( $this->api );
270
	}
271
272
	/**
273
	 * @since 0.7
274
	 * @return EntityLookup
275
	 */
276
	public function newEntityLookup() {
277
		return new EntityApiLookup( $this->newRevisionGetter() );
278
	}
279
280
	/**
281
	 * @since 0.7
282
	 * @return ItemLookup
283
	 */
284
	public function newItemLookup() {
285
		return new ItemApiLookup( $this->newEntityLookup() );
286
	}
287
288
	/**
289
	 * @since 0.7
290
	 * @return PropertyLookup
291
	 */
292
	public function newPropertyLookup() {
293
		return new PropertyApiLookup( $this->newEntityLookup() );
294
	}
295
296
	/**
297
	 * @since 0.7
298
	 * @return TermLookup
299
	 */
300
	public function newTermLookup() {
301
		return new EntityRetrievingTermLookup( $this->newEntityLookup() );
302
	}
303
304
	/**
305
	 * @since 0.7
306
	 * @return EntityDocumentSaver
307
	 */
308
	public function newEntityDocumentSaver() {
309
		return new EntityDocumentSaver( $this->newRevisionSaver() );
310
	}
311
312
	/**
313
	 * @since 0.8
314
	 * @return EntitySearcher
315
	 */
316
	public function newEntitySearcher() {
317
		return new EntitySearcher( $this->api );
318
	}
319
320
}
321