Completed
Push — main ( b55b92...e8d442 )
by
unknown
05:41
created

WikibaseFactory   A

Complexity

Total Complexity 29

Size/Duplication

Total Lines 275
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 29

Importance

Changes 0
Metric Value
wmc 29
lcom 1
cbo 29
dl 0
loc 275
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Addwiki\Wikibase\Api;
4
5
use Addwiki\Mediawiki\Api\Client\MediawikiApi;
6
use Addwiki\Wikibase\Api\Lookup\EntityApiLookup;
7
use Addwiki\Wikibase\Api\Lookup\ItemApiLookup;
8
use Addwiki\Wikibase\Api\Lookup\PropertyApiLookup;
9
use Addwiki\Wikibase\Api\Service\AliasGroupSetter;
10
use Addwiki\Wikibase\Api\Service\BadgeIdsGetter;
11
use Addwiki\Wikibase\Api\Service\DescriptionSetter;
12
use Addwiki\Wikibase\Api\Service\EntityDocumentSaver;
13
use Addwiki\Wikibase\Api\Service\EntitySearcher;
14
use Addwiki\Wikibase\Api\Service\ItemMerger;
15
use Addwiki\Wikibase\Api\Service\LabelSetter;
16
use Addwiki\Wikibase\Api\Service\RedirectCreator;
17
use Addwiki\Wikibase\Api\Service\ReferenceRemover;
18
use Addwiki\Wikibase\Api\Service\ReferenceSetter;
19
use Addwiki\Wikibase\Api\Service\RevisionGetter;
20
use Addwiki\Wikibase\Api\Service\RevisionSaver;
21
use Addwiki\Wikibase\Api\Service\RevisionsGetter;
22
use Addwiki\Wikibase\Api\Service\SiteLinkLinker;
23
use Addwiki\Wikibase\Api\Service\SiteLinkSetter;
24
use Addwiki\Wikibase\Api\Service\StatementCreator;
25
use Addwiki\Wikibase\Api\Service\StatementGetter;
26
use Addwiki\Wikibase\Api\Service\StatementRemover;
27
use Addwiki\Wikibase\Api\Service\StatementSetter;
28
use Addwiki\Wikibase\Api\Service\ValueFormatter;
29
use Addwiki\Wikibase\Api\Service\ValueParser;
30
use Deserializers\Deserializer;
31
use Serializers\Serializer;
32
use Wikibase\DataModel\DeserializerFactory;
33
use Wikibase\DataModel\Entity\BasicEntityIdParser;
34
use Wikibase\DataModel\SerializerFactory;
35
use Wikibase\DataModel\Services\Lookup\EntityRetrievingTermLookup;
36
37
/**
38
 * @author Addshore
39
 *
40
 * @access public
41
 */
42
class WikibaseFactory {
43
44
	private MediawikiApi $api;
0 ignored issues
show
Bug introduced by
This code did not parse for me. Apparently, there is an error somewhere around this line:

Syntax error, unexpected T_STRING, expecting T_FUNCTION or T_CONST
Loading history...
45
46
	private \Deserializers\Deserializer $dataValueDeserializer;
47
48
	private \Serializers\Serializer $dataValueSerializer;
49
50
	/**
51
	 * @param MediawikiApi $api
52
	 * @param Deserializer $dvDeserializer
53
	 * @param Serializer $dvSerializer
54
	 */
55
	public function __construct( MediawikiApi $api, Deserializer $dvDeserializer, Serializer $dvSerializer ) {
56
		$this->api = $api;
57
		$this->dataValueDeserializer = $dvDeserializer;
58
		$this->dataValueSerializer = $dvSerializer;
59
	}
60
61
	/**
62
	 * @since 0.1
63
	 */
64
	public function newRevisionSaver(): RevisionSaver {
65
		return new RevisionSaver(
66
			$this->newWikibaseApi(),
67
			$this->newDataModelDeserializerFactory()->newEntityDeserializer(),
68
			$this->newDataModelSerializerFactory()->newEntitySerializer()
69
		);
70
	}
71
72
	/**
73
	 * @since 0.1
74
	 */
75
	public function newRevisionGetter(): RevisionGetter {
76
		return new RevisionGetter(
77
			$this->api,
78
			$this->newDataModelDeserializerFactory()->newEntityDeserializer()
79
		);
80
	}
81
82
	/**
83
	 * @since 0.4
84
	 */
85
	public function newRevisionsGetter(): RevisionsGetter {
86
		return new RevisionsGetter(
87
			$this->api,
88
			$this->newDataModelDeserializerFactory()->newEntityDeserializer()
89
		);
90
	}
91
92
	/**
93
	 * @since 0.2
94
	 */
95
	public function newValueParser(): ValueParser {
96
		return new ValueParser(
97
			$this->api,
98
			$this->dataValueDeserializer
99
		);
100
	}
101
102
	/**
103
	 * @since 0.2
104
	 */
105
	public function newValueFormatter(): ValueFormatter {
106
		return new ValueFormatter(
107
			$this->api,
108
			$this->dataValueSerializer
109
		);
110
	}
111
112
	/**
113
	 * @since 0.2
114
	 */
115
	public function newItemMerger(): ItemMerger {
116
		return new ItemMerger( $this->newWikibaseApi() );
117
	}
118
119
	/**
120
	 * @since 0.2
121
	 */
122
	public function newAliasGroupSetter(): AliasGroupSetter {
123
		return new AliasGroupSetter( $this->newWikibaseApi() );
124
	}
125
126
	/**
127
	 * @since 0.2
128
	 */
129
	public function newDescriptionSetter(): DescriptionSetter {
130
		return new DescriptionSetter( $this->newWikibaseApi() );
131
	}
132
133
	/**
134
	 * @since 0.2
135
	 */
136
	public function newLabelSetter(): LabelSetter {
137
		return new LabelSetter( $this->newWikibaseApi() );
138
	}
139
140
	/**
141
	 * @since 0.2
142
	 */
143
	public function newReferenceRemover(): ReferenceRemover {
144
		return new ReferenceRemover( $this->newWikibaseApi() );
145
	}
146
147
	/**
148
	 * @since 0.2
149
	 */
150
	public function newReferenceSetter(): ReferenceSetter {
151
		return new ReferenceSetter(
152
			$this->newWikibaseApi(),
153
			$this->newDataModelSerializerFactory()->newReferenceSerializer()
154
		);
155
	}
156
157
	/**
158
	 * @since 0.2
159
	 */
160
	public function newSiteLinkLinker(): SiteLinkLinker {
161
		return new SiteLinkLinker( $this->newWikibaseApi() );
162
	}
163
164
	/**
165
	 * @since 0.2
166
	 */
167
	public function newSiteLinkSetter(): SiteLinkSetter {
168
		return new SiteLinkSetter( $this->newWikibaseApi() );
169
	}
170
171
	/**
172
	 * @since 0.5
173
	 */
174
	public function newBadgeIdsGetter(): BadgeIdsGetter {
175
		return new BadgeIdsGetter( $this->api );
176
	}
177
178
	/**
179
	 * @since 0.5
180
	 */
181
	public function newRedirectCreator(): RedirectCreator {
182
		return new RedirectCreator( $this->newWikibaseApi() );
183
	}
184
185
	private function newDataModelDeserializerFactory(): DeserializerFactory {
186
		return new DeserializerFactory(
187
			$this->dataValueDeserializer,
188
			new BasicEntityIdParser()
189
		);
190
	}
191
192
	private function newDataModelSerializerFactory(): SerializerFactory {
193
		return new SerializerFactory( $this->dataValueSerializer );
194
	}
195
196
	/**
197
	 * @since 0.5
198
	 */
199
	public function newStatementGetter(): StatementGetter {
200
		return new StatementGetter(
201
			$this->api,
202
			$this->newDataModelDeserializerFactory()->newStatementDeserializer()
203
		);
204
	}
205
206
	/**
207
	 * @since 0.5
208
	 */
209
	public function newStatementSetter(): StatementSetter {
210
		return new StatementSetter(
211
			$this->newWikibaseApi(),
212
			$this->newDataModelSerializerFactory()->newStatementSerializer()
213
		);
214
	}
215
216
	/**
217
	 * @since 0.5
218
	 */
219
	public function newStatementCreator(): StatementCreator {
220
		return new StatementCreator(
221
			$this->newWikibaseApi(),
222
			$this->dataValueSerializer
223
		);
224
	}
225
226
	/**
227
	 * @since 0.5
228
	 */
229
	public function newStatementRemover(): StatementRemover {
230
		return new StatementRemover( $this->newWikibaseApi() );
231
	}
232
233
	private function newWikibaseApi(): WikibaseApi {
234
		return new WikibaseApi( $this->api );
235
	}
236
237
	/**
238
	 * @since 0.7
239
	 */
240
	public function newEntityLookup(): EntityApiLookup {
241
		return new EntityApiLookup( $this->newRevisionGetter() );
242
	}
243
244
	/**
245
	 * @since 0.7
246
	 */
247
	public function newItemLookup(): ItemApiLookup {
248
		return new ItemApiLookup( $this->newEntityLookup() );
249
	}
250
251
	/**
252
	 * @since 0.7
253
	 */
254
	public function newPropertyLookup(): PropertyApiLookup {
255
		return new PropertyApiLookup( $this->newEntityLookup() );
256
	}
257
258
	/**
259
	 * @since 0.7
260
	 */
261
	public function newTermLookup(): EntityRetrievingTermLookup {
262
		return new EntityRetrievingTermLookup( $this->newEntityLookup() );
263
	}
264
265
	/**
266
	 * @since 0.7
267
	 */
268
	public function newEntityDocumentSaver(): EntityDocumentSaver {
269
		return new EntityDocumentSaver( $this->newRevisionSaver() );
270
	}
271
272
	/**
273
	 * @since 0.8
274
	 */
275
	public function newEntitySearcher(): EntitySearcher {
276
		return new EntitySearcher( $this->api );
277
	}
278
279
}
280