-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathObjectMetadataBuilderInterface.php
350 lines (303 loc) · 8.55 KB
/
ObjectMetadataBuilderInterface.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
<?php
/*
* This file is part of the Klipper package.
*
* (c) François Pluchino <francois.pluchino@klipper.dev>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Klipper\Component\Metadata;
use Symfony\Component\Config\Resource\ResourceInterface;
/**
* @author François Pluchino <francois.pluchino@klipper.dev>
*/
interface ObjectMetadataBuilderInterface extends MetadataBuilderInterface
{
/**
* Set the plural unique name.
*
* @param string $name The unique plural name
*
* @return static
*/
public function setPluralName(?string $name);
/**
* Get the unique plural name.
*/
public function getPluralName(): ?string;
/**
* Set the plural label.
*
* @param string $label The plural label
*
* @return static
*/
public function setPluralLabel(?string $label);
/**
* Get the plural label.
*/
public function getPluralLabel(): ?string;
/**
* Get the class name.
*/
public function getClass(): string;
/**
* Add the field metadata builder.
*
* @param FieldMetadataBuilderInterface $metadata The field metadata builder
*
* @return static
*/
public function addField(FieldMetadataBuilderInterface $metadata);
/**
* Check if the field metadata builder is present.
*
* @param string $field The field name
*/
public function hasField(string $field): bool;
/**
* Get the field metadata builder.
*
* @param string $field The field name
*/
public function getField(string $field): ?FieldMetadataBuilderInterface;
/**
* Get the field metadata builders.
*
* @return FieldMetadataBuilderInterface[]
*/
public function getFields(): array;
/**
* Add the association metadata builder.
*
* @param AssociationMetadataBuilderInterface $metadata The association metadata builder
*
* @return static
*/
public function addAssociation(AssociationMetadataBuilderInterface $metadata);
/**
* Check if the association metadata builder is present.
*
* @param string $association The association name
*/
public function hasAssociation(string $association): bool;
/**
* Get the association metadata builder.
*
* @param string $association The association name
*/
public function getAssociation(string $association): ?AssociationMetadataBuilderInterface;
/**
* Get the association metadata builders.
*
* @return AssociationMetadataBuilderInterface[]
*/
public function getAssociations(): array;
/**
* Check if the object is sortable.
*
* @return bool
*/
public function isSortable(): ?bool;
/**
* Set if the field is multi sortable.
*
* @param bool $sortable Check if the fields is multi sortable
*
* @return static
*/
public function setMultiSortable(?bool $sortable);
/**
* Check if the object is sortable with multiple fields.
*
* @return bool
*/
public function isMultiSortable(): ?bool;
/**
* Set if the default sortable config.
*
* @param array $map The map of default sortable with field and direction
*
* @return static
*/
public function setDefaultSortable(?array $map);
/**
* Get the map of default sortable with field and direction.
*
* @return array
*/
public function getDefaultSortable(): ?array;
/**
* Set the available contexts.
*
* @param string[] $availableContexts
*
* @return static
*/
public function setAvailableContexts(?array $availableContexts);
/**
* Get the available contexts.
*
* @return string[]
*/
public function getAvailableContexts(): ?array;
/**
* Set the field name used for the identifier.
*
* @param null|string $name The field name
*
* @return static
*/
public function setFieldIdentifier(?string $name);
/**
* Get the field name used for the identifier.
*
* @return string
*/
public function getFieldIdentifier(): ?string;
/**
* Set the field name used for the label.
*
* @param null|string $name The field name
*
* @return static
*/
public function setFieldLabel(?string $name);
/**
* Get the field name used for the label.
*
* @return string
*/
public function getFieldLabel(): ?string;
/**
* Set the paths to allow the search on fields defined in deep associations.
*
* @param string[] $deepSearchPaths The deep search paths
*
* @return static
*/
public function setDeepSearchPaths(array $deepSearchPaths);
/**
* Check if the deep search path is defined.
*
* @param string $deepSearchPath The deep search path
*/
public function hasDeepSearchPath(string $deepSearchPath): bool;
/**
* Add the path to allow the search on fields defined in deep associations.
*
* @param string $deepSearchPath The deep search path
*
* @return static
*/
public function addDeepSearchPath(string $deepSearchPath);
/**
* Remove the path to allow the search on fields defined in deep associations.
*
* @param string $deepSearchPath The deep search path
*
* @return static
*/
public function removeDeepSearchPath(string $deepSearchPath);
/**
* Get the paths to allow the search on fields defined in deep associations.
*
* @return string[]
*/
public function getDeepSearchPaths(): array;
/**
* Check if the action metadata builder is present.
*
* @param string $action The action name
*/
public function hasAction(string $action): bool;
/**
* Set the action metadatas.
*
* @param ActionMetadataBuilderInterface[] $actions The action metadatas
*
* @return static
*/
public function setActions(?array $actions);
/**
* Add the action metadata.
*
* @param ActionMetadataBuilderInterface $action The action metadata builder
*
* @return static
*/
public function addAction(ActionMetadataBuilderInterface $action);
/**
* Get the available actions.
*
* @return null|ActionMetadataBuilderInterface[]
*/
public function getActions(): ?array;
/**
* Get the action.
*
* @param string $action The action name
*/
public function getAction(string $action): ?ActionMetadataBuilderInterface;
/**
* Define if the default actions must be built even if the actions is manually defined.
*
* @param null|bool $buildDefaultActions check if the default actions must be built
*
* @return static
*/
public function setBuildDefaultActions(?bool $buildDefaultActions);
/**
* Check if the default actions must be built even if the actions is manually defined.
*/
public function getBuildDefaultActions(): ?bool;
/**
* Set the list of excluded default actions.
*
* @param string[] $excludedDefaultActions The excluded default actions
*
* @return static
*/
public function setExcludedDefaultActions(array $excludedDefaultActions);
/**
* Get the list of excluded default actions.
*
* @return string[]
*/
public function getExcludedDefaultActions(): array;
/**
* Set the default values of actions.
*
* @param null|ActionMetadataBuilderInterface $action The default action
*
* @return static
*/
public function setDefaultAction(?ActionMetadataBuilderInterface $action);
public function getDefaultAction(): ?ActionMetadataBuilderInterface;
/**
* Returns an array of resources loaded to build this metadata.
*
* @return ResourceInterface[] An array of resources
*/
public function getResources(): array;
/**
* Adds a resource for this metadata. If the resource already exists
* it is not added.
*
* @param ResourceInterface $resource The resource instance
*/
public function addResource(ResourceInterface $resource);
/**
* Merge the object metadata builder.
*
* @param ObjectMetadataBuilderInterface $builder The new object metadata builder
*
* @return static
*/
public function merge(ObjectMetadataBuilderInterface $builder);
/**
* Build the object metadata.
*/
public function build(): ObjectMetadataInterface;
}