Completed
Push — master ( 659d4b...50002f )
by adam
06:20
created

WikibaseFactory::newRevisionsGetter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

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