Completed
Push — master ( 3ad6ad...1b8708 )
by adam
23:03 queued 15:31
created

WikibaseFactory::newRevisionsGetter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1.125

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 6
ccs 3
cts 6
cp 0.5
rs 9.4286
cc 1
eloc 4
nc 1
nop 0
crap 1.125
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 16
	}
70
71
	/**
72
	 * @since 0.1
73
	 * @return RevisionSaver
74
	 */
75 1
	public function newRevisionSaver() {
76 1
		return new RevisionSaver(
77 1
			$this->newWikibaseApi(),
78 1
			$this->newDataModelDeserializerFactory()->newEntityDeserializer(),
79 1
			$this->newDataModelSerializerFactory()->newEntitySerializer()
80 1
		);
81
	}
82
83
	/**
84
	 * @since 0.1
85
	 * @return RevisionGetter
86
	 */
87 1
	public function newRevisionGetter() {
88 1
		return new RevisionGetter(
89 1
			$this->api,
90 1
			$this->newDataModelDeserializerFactory()->newEntityDeserializer()
91 1
		);
92
	}
93
94
	/**
95
	 * @since 0.4
96
	 * @return RevisionsGetter
97
	 */
98 1
	public function newRevisionsGetter() {
99
		return new RevisionsGetter(
100
			$this->api,
101
			$this->newDataModelDeserializerFactory()->newEntityDeserializer()
102 1
		);
103 1
	}
104
105
	/**
106
	 * @since 0.2
107
	 * @return ValueParser
108
	 */
109 2
	public function newValueParser() {
110 2
		return new ValueParser(
111 1
			$this->api,
112 1
			$this->dataValueDeserializer
113 1
		);
114
	}
115
116
	/**
117
	 * @since 0.2
118
	 * @return ValueFormatter
119
	 */
120 1
	public function newValueFormatter() {
121 1
		return new ValueFormatter(
122 1
			$this->api,
123 1
			$this->dataValueDeserializer
124 1
		);
125
	}
126
127
	/**
128
	 * @since 0.2
129
	 * @return ItemMerger
130
	 */
131 1
	public function newItemMerger() {
132 1
		return new ItemMerger( $this->newWikibaseApi() );
133
	}
134
135
	/**
136
	 * @since 0.2
137
	 * @return AliasGroupSetter
138
	 */
139 1
	public function newAliasGroupSetter() {
140 1
		return new AliasGroupSetter( $this->newWikibaseApi() );
141
	}
142
143
	/**
144
	 * @since 0.2
145
	 * @return DescriptionSetter
146
	 */
147 1
	public function newDescriptionSetter() {
148 1
		return new DescriptionSetter( $this->newWikibaseApi() );
149 1
	}
150
151
	/**
152
	 * @since 0.2
153
	 * @return LabelSetter
154
	 */
155 1
	public function newLabelSetter() {
156 1
		return new LabelSetter( $this->newWikibaseApi() );
157
	}
158
159
	/**
160
	 * @since 0.2
161
	 * @return ReferenceRemover
162
	 */
163 1
	public function newReferenceRemover() {
164 1
		return new ReferenceRemover( $this->newWikibaseApi() );
165
	}
166
167
	/**
168
	 * @since 0.2
169
	 * @return ReferenceSetter
170
	 */
171 1
	public function newReferenceSetter() {
172 1
		return new ReferenceSetter(
173 1
			$this->newWikibaseApi(),
174 1
			$this->newDataModelSerializerFactory()->newReferenceSerializer()
175 1
		);
176
	}
177
178
	/**
179
	 * @since 0.2
180
	 * @return SiteLinkLinker
181
	 */
182 1
	public function newSiteLinkLinker() {
183 1
		return new SiteLinkLinker( $this->newWikibaseApi() );
184
	}
185
186
	/**
187
	 * @since 0.2
188
	 * @return SiteLinkSetter
189
	 */
190 1
	public function newSiteLinkSetter() {
191 1
		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 3
		return new DeserializerFactory(
212 3
			$this->dataValueDeserializer,
213 3
			new BasicEntityIdParser()
214 3
		);
215
	}
216
217 3
	private function newDataModelSerializerFactory() {
218 3
		return new SerializerFactory( $this->dataValueSerializer );
219
	}
220
221
	/**
222
	 * @since 0.5
223
	 * @return StatementGetter
224
	 */
225 1
	public function newStatementGetter() {
226 1
		return new StatementGetter(
227 1
			$this->api,
228 1
			$this->newDataModelDeserializerFactory()->newStatementDeserializer()
229 1
		);
230
	}
231
232
	/**
233
	 * @since 0.5
234
	 * @return StatementSetter
235
	 */
236 1
	public function newStatementSetter() {
237 1
		return new StatementSetter(
238 1
			$this->newWikibaseApi(),
239 1
			$this->newDataModelSerializerFactory()->newStatementSerializer()
240 1
		);
241
	}
242
243
	/**
244
	 * @since 0.5
245
	 * @return StatementCreator
246
	 */
247 1
	public function newStatementCreator() {
248 1
		return new StatementCreator(
249 1
			$this->newWikibaseApi(),
250 1
			$this->dataValueSerializer
251 1
		);
252
	}
253
254
	/**
255
	 * @since 0.5
256
	 * @return StatementRemover
257
	 */
258 1
	public function newStatementRemover() {
259 1
		return new StatementRemover( $this->newWikibaseApi() );
260
	}
261
262
	/**
263
	 * @return WikibaseApi
264
	 */
265 12
	private function newWikibaseApi() {
266 12
		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