Completed
Push — master ( a4702d...c94ba0 )
by adam
05:41
created

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