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 package com.rapiddweller.model.data;
28
29 import com.rapiddweller.common.LocaleUtil;
30 import com.rapiddweller.common.operation.FirstNonNullSelector;
31
32 import java.util.Locale;
33
34
35
36
37
38
39
40
41 public abstract class TypeDescriptor extends FeatureDescriptor {
42
43
44
45
46
47
48
49 public static final String VALIDATOR = "validator";
50
51
52
53 public static final String FILTER = "filter";
54
55
56
57 public static final String CONDITION = "condition";
58
59
60
61
62
63
64
65 public static final String GENERATOR = "generator";
66
67
68
69 public static final String CONVERTER = "converter";
70
71
72
73 public static final String PATTERN = "pattern";
74
75
76
77 public static final String SCRIPT = "script";
78
79
80
81
82 public static final String SOURCE = "source";
83
84
85
86 public static final String FORMAT = "format";
87
88
89
90 public static final String ROW_BASED = "rowBased";
91
92
93
94 public static final String SEGMENT = "segment";
95
96
97
98 public static final String OFFSET = "offset";
99
100
101
102 public static final String SELECTOR = "selector";
103
104
105
106 public static final String SUB_SELECTOR = "subSelector";
107
108
109
110 public static final String ENCODING = "encoding";
111
112
113
114 public static final String SEPARATOR = "separator";
115
116
117
118 public static final String EMPTY_MARKER = "emptyMarker";
119
120
121
122 public static final String NULL_MARKER = "nullMarker";
123
124
125
126
127 public static final String CYCLIC = "cyclic";
128
129
130
131 public static final String SCOPE = "scope";
132
133
134
135
136 public static final String LOCALE = "locale";
137
138
139
140 public static final String DATASET = "dataset";
141
142
143
144 public static final String NESTING = "nesting";
145
146
147
148
149 public static final String DISTRIBUTION = "distribution";
150
151
152
153
154
155
156 protected String parentName;
157
158
159
160 protected TypeDescriptor parent;
161
162
163
164
165
166
167
168
169
170
171 public TypeDescriptor(String name, DescriptorProvider provider,
172 TypeDescriptor parent) {
173 this(name, provider, (parent != null ? parent.getName() : null));
174 this.parent = parent;
175 }
176
177
178
179
180
181
182
183
184 public TypeDescriptor(String name, DescriptorProvider provider,
185 String parentName) {
186 super(name, provider);
187 this.parentName = parentName;
188 init();
189 }
190
191
192
193
194 protected void init() {
195
196 addConstraint(VALIDATOR, String.class, new FirstNonNullSelector<>());
197 addConstraint(FILTER, String.class, new FirstNonNullSelector<>());
198 addConstraint(CONDITION, String.class, new FirstNonNullSelector<>());
199
200
201 addConfig(GENERATOR, String.class);
202 addConfig(CONVERTER, String.class);
203 addConfig(PATTERN, String.class);
204 addConfig(SCRIPT, String.class);
205
206 addConfig(SOURCE, String.class);
207 addConfig(FORMAT, Format.class);
208 addConfig(ROW_BASED, Boolean.class);
209 addConfig(SEGMENT, String.class);
210 addConfig(OFFSET, Integer.class);
211 addConfig(SELECTOR, String.class);
212 addConfig(SUB_SELECTOR, String.class);
213 addConfig(SEPARATOR, String.class);
214 addConfig(EMPTY_MARKER, String.class);
215 addConfig(NULL_MARKER, String.class);
216 addConfig(ENCODING, String.class);
217 addConfig(SCOPE, String.class);
218 addConfig(CYCLIC, Boolean.class);
219
220 addConfig(LOCALE, Locale.class);
221 addConfig(DATASET, String.class);
222 addConfig(NESTING, String.class);
223
224 addConfig(DISTRIBUTION, String.class);
225 }
226
227
228
229
230
231
232
233
234 public String getParentName() {
235 return parentName;
236 }
237
238
239
240
241
242
243 public void setParentName(String parentName) {
244 this.parentName = parentName;
245 }
246
247
248
249
250
251
252 public Boolean isRowBased() {
253 return (Boolean) getDetailValue(ROW_BASED);
254 }
255
256
257
258
259
260
261 public void setRowBased(Boolean rowBased) {
262 setDetailValue(ROW_BASED, rowBased);
263 }
264
265
266
267
268
269
270 public String getValidator() {
271 return (String) getDetailValue(VALIDATOR);
272 }
273
274
275
276
277
278
279 public void setValidator(String filter) {
280 setDetailValue(VALIDATOR, filter);
281 }
282
283
284
285
286
287
288 public String getFilter() {
289 return (String) getDetailValue(FILTER);
290 }
291
292
293
294
295
296
297 public void setFilter(String filter) {
298 setDetailValue(FILTER, filter);
299 }
300
301
302
303
304
305
306 public String getCondition() {
307 return (String) getDetailValue(CONDITION);
308 }
309
310
311
312
313
314
315 public void setCondition(String condition) {
316 setDetailValue(CONDITION, condition);
317 }
318
319
320
321
322
323
324 public String getGenerator() {
325 return (String) getDetailValue(GENERATOR);
326 }
327
328
329
330
331
332
333 public void setGenerator(String generatorName) {
334 setDetailValue(GENERATOR, generatorName);
335 }
336
337
338
339
340
341
342 public String getConverter() {
343 return (String) getDetailValue(CONVERTER);
344 }
345
346
347
348
349
350
351 public void setConverter(String converter) {
352 setDetailValue(CONVERTER, converter);
353 }
354
355
356
357
358
359
360 public String getPattern() {
361 return (String) getDetailValue(PATTERN);
362 }
363
364
365
366
367
368
369 public void setPattern(String pattern) {
370 setDetailValue(PATTERN, pattern);
371 }
372
373
374
375
376
377
378 public String getScript() {
379 return (String) getDetailValue(SCRIPT);
380 }
381
382
383
384
385
386
387 public void setScript(String script) {
388 setDetailValue(SCRIPT, script);
389 }
390
391
392
393
394
395
396 public String getSource() {
397 return (String) getDetailValue(SOURCE);
398 }
399
400
401
402
403
404
405 public void setSource(String source) {
406 setDetailValue(SOURCE, source);
407 }
408
409
410
411
412
413
414 public Format getFormat() {
415 return (Format) getDetailValue(FORMAT);
416 }
417
418
419
420
421
422
423 public void setFormat(Format format) {
424 setDetailValue(FORMAT, format);
425 }
426
427
428
429
430
431
432 public String getSegment() {
433 return (String) getDetailValue(SEGMENT);
434 }
435
436
437
438
439
440
441 public void setSegment(String segment) {
442 setDetailValue(SEGMENT, segment);
443 }
444
445
446
447
448
449
450 public Integer getOffset() {
451 return (Integer) getDetailValue(OFFSET);
452 }
453
454
455
456
457
458
459 public void setOffset(Integer offset) {
460 setDetailValue(OFFSET, offset);
461 }
462
463
464
465
466
467
468 public String getSelector() {
469 return (String) getDetailValue(SELECTOR);
470 }
471
472
473
474
475
476
477 public void setSelector(String selector) {
478 setDetailValue(SELECTOR, selector);
479 }
480
481
482
483
484
485
486 public String getSubSelector() {
487 return (String) getDetailValue(SUB_SELECTOR);
488 }
489
490
491
492
493
494
495 public void setSubSelector(String selector) {
496 setDetailValue(SUB_SELECTOR, selector);
497 }
498
499
500
501
502
503
504 public String getSeparator() {
505 return (String) getDetailValue(SEPARATOR);
506 }
507
508
509
510
511
512
513 public void setSeparator(String separator) {
514 setDetailValue(SEPARATOR, separator);
515 }
516
517
518
519
520
521
522 public String getEmptyMarker() {
523 return (String) getDetailValue(EMPTY_MARKER);
524 }
525
526
527
528
529
530
531 public void setEmptyMarker(String emptyMarker) {
532 setDetailValue(EMPTY_MARKER, emptyMarker);
533 }
534
535
536
537
538
539
540 public String getNullMarker() {
541 return (String) getDetailValue(NULL_MARKER);
542 }
543
544
545
546
547
548
549 public void setNullMarker(String nullMarker) {
550 setDetailValue(NULL_MARKER, nullMarker);
551 }
552
553
554
555
556
557
558 public String getEncoding() {
559 return (String) getDetailValue(ENCODING);
560 }
561
562
563
564
565
566
567 public void setEncoding(String encoding) {
568 setDetailValue(ENCODING, encoding);
569 }
570
571
572
573
574
575
576 public String getScope() {
577 return (String) getDetailValue(SCOPE);
578 }
579
580
581
582
583
584
585 public void setScope(String scope) {
586 setDetailValue(SCOPE, scope);
587 }
588
589
590
591
592
593
594 public Boolean isCyclic() {
595 return (Boolean) getDetailValue(CYCLIC);
596 }
597
598
599
600
601
602
603 public void setCyclic(boolean cyclic) {
604 setDetailValue(CYCLIC, cyclic);
605 }
606
607
608
609
610
611
612 public String getDataset() {
613 return (String) getDetailValue(DATASET);
614 }
615
616
617
618
619
620
621 public void setDataset(String dataset) {
622 setDetailValue(DATASET, dataset);
623 }
624
625
626
627
628
629
630 public String getNesting() {
631 return (String) getDetailValue(NESTING);
632 }
633
634
635
636
637
638
639 public void setNesting(String nesting) {
640 setDetailValue(NESTING, nesting);
641 }
642
643
644
645
646
647
648 public Locale getLocale() {
649 return (Locale) getDetailValue(LOCALE);
650 }
651
652
653
654
655
656
657 public void setLocaleId(String localeId) {
658 setDetailValue(LOCALE, LocaleUtil.getLocale(localeId));
659 }
660
661
662
663
664
665
666 public String getDistribution() {
667 return (String) getDetailValue(DISTRIBUTION);
668 }
669
670
671
672
673
674
675 public void setDistribution(String distribution) {
676 setDetailValue(DISTRIBUTION, distribution);
677 }
678
679
680
681
682
683
684
685
686
687 public TypeDescriptor withSource(String source) {
688 setSource(source);
689 return this;
690 }
691
692
693
694
695
696
697
698 public TypeDescriptor withSeparator(String separator) {
699 setSeparator(separator);
700 return this;
701 }
702
703
704
705
706
707
708
709 public TypeDescriptor withGenerator(String generator) {
710 setGenerator(generator);
711 return this;
712 }
713
714
715
716
717
718
719
720
721 public TypeDescriptor getParent() {
722 if (parent != null) {
723 return parent;
724 }
725 if (parentName == null) {
726 return null;
727 }
728
729 TypeDescriptor candidate = getDataModel().getTypeDescriptor(parentName);
730 if (candidate != this) {
731 parent = candidate;
732 }
733 return parent;
734 }
735
736
737
738
739
740
741 public void setParent(TypeDescriptor parent) {
742 this.parent = parent;
743 }
744
745 }