Completed
Push — master ( 487de5...abfbed )
by adam
03:53 queued 01:21
created

WikibaseFactory::newLabelSetter()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

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