3
3
import com .relogiclabs .jschema .exception .DuplicatePragmaException ;
4
4
import com .relogiclabs .jschema .internal .time .DateTimeParser ;
5
5
import com .relogiclabs .jschema .internal .tree .PragmaDescriptor ;
6
+ import com .relogiclabs .jschema .message .OutlineFormatter ;
6
7
import com .relogiclabs .jschema .node .JPragma ;
7
8
import lombok .Getter ;
8
9
9
10
import java .util .HashMap ;
10
11
import java .util .Iterator ;
11
12
import java .util .Map ;
12
13
13
- import static com .relogiclabs .jschema .message .ErrorCode .PRAG03 ;
14
+ import static com .relogiclabs .jschema .internal .tree .PragmaDescriptor .DATE_DATA_TYPE_FORMAT ;
15
+ import static com .relogiclabs .jschema .internal .tree .PragmaDescriptor .ENABLE_CONTEXTUAL_EXCEPTION ;
16
+ import static com .relogiclabs .jschema .internal .tree .PragmaDescriptor .FLOATING_POINT_TOLERANCE ;
17
+ import static com .relogiclabs .jschema .internal .tree .PragmaDescriptor .IGNORE_OBJECT_PROPERTY_ORDER ;
18
+ import static com .relogiclabs .jschema .internal .tree .PragmaDescriptor .IGNORE_UNDEFINED_PROPERTIES ;
19
+ import static com .relogiclabs .jschema .internal .tree .PragmaDescriptor .TIME_DATA_TYPE_FORMAT ;
20
+ import static com .relogiclabs .jschema .message .ErrorCode .PRGDUP01 ;
14
21
import static com .relogiclabs .jschema .message .MessageFormatter .formatForSchema ;
15
22
import static com .relogiclabs .jschema .time .DateTimeType .DATE_TYPE ;
16
23
import static com .relogiclabs .jschema .time .DateTimeType .TIME_TYPE ;
17
24
18
25
@ Getter
19
26
public final class PragmaRegistry implements Iterable <Map .Entry <String , JPragma >> {
20
-
21
- private static final String IGNORE_UNDEFINED_PROPERTIES = "IgnoreUndefinedProperties" ;
22
- private static final String FLOATING_POINT_TOLERANCE = "FloatingPointTolerance" ;
23
- private static final String IGNORE_OBJECT_PROPERTY_ORDER = "IgnoreObjectPropertyOrder" ;
24
- private static final String DATE_DATA_TYPE_FORMAT = "DateDataTypeFormat" ;
25
- private static final String TIME_DATA_TYPE_FORMAT = "TimeDataTypeFormat" ;
27
+ public static final String NAME_IGNORE_UNDEFINED_PROPERTIES = "IgnoreUndefinedProperties" ;
28
+ public static final String NAME_FLOATING_POINT_TOLERANCE = "FloatingPointTolerance" ;
29
+ public static final String NAME_IGNORE_OBJECT_PROPERTY_ORDER = "IgnoreObjectPropertyOrder" ;
30
+ public static final String NAME_DATE_DATA_TYPE_FORMAT = "DateDataTypeFormat" ;
31
+ public static final String NAME_TIME_DATA_TYPE_FORMAT = "TimeDataTypeFormat" ;
32
+ public static final String NAME_ENABLE_CONTEXTUAL_EXCEPTION = "EnableContextualException" ;
33
+ public static final String NAME_OUTLINE_MAXIMUM_LENGTH = "OutlineMaximumLength" ;
26
34
27
35
private final Map <String , JPragma > pragmas ;
28
36
29
- private boolean ignoreUndefinedProperties = PragmaDescriptor
30
- .IGNORE_UNDEFINED_PROPERTIES .getDefaultValue ();
31
- private double floatingPointTolerance = PragmaDescriptor
32
- .FLOATING_POINT_TOLERANCE .getDefaultValue ();
33
- private boolean ignoreObjectPropertyOrder = PragmaDescriptor
34
- .IGNORE_OBJECT_PROPERTY_ORDER .getDefaultValue ();
35
- private String dateDataTypeFormat = PragmaDescriptor
36
- .DATE_DATA_TYPE_FORMAT .getDefaultValue ();
37
- private String timeDataTypeFormat = PragmaDescriptor
38
- .TIME_DATA_TYPE_FORMAT .getDefaultValue ();
37
+ private boolean ignoreUndefinedProperties = IGNORE_UNDEFINED_PROPERTIES .getDefaultValue ();
38
+ private double floatingPointTolerance = FLOATING_POINT_TOLERANCE .getDefaultValue ();
39
+ private boolean ignoreObjectPropertyOrder = IGNORE_OBJECT_PROPERTY_ORDER .getDefaultValue ();
40
+ private String dateDataTypeFormat = DATE_DATA_TYPE_FORMAT .getDefaultValue ();
41
+ private String timeDataTypeFormat = TIME_DATA_TYPE_FORMAT .getDefaultValue ();
42
+ private boolean enableContextualException = ENABLE_CONTEXTUAL_EXCEPTION .getDefaultValue ();
39
43
40
44
private DateTimeParser dateTypeParser ;
41
45
private DateTimeParser timeTypeParser ;
@@ -47,26 +51,29 @@ public PragmaRegistry() {
47
51
}
48
52
49
53
public JPragma addPragma (JPragma pragma ) {
50
- if (pragmas .containsKey (pragma .getName ())) throw new DuplicatePragmaException (formatForSchema (
51
- PRAG03 , "Duplication found for " + pragma .getOutline (), pragma ));
54
+ if (pragmas .containsKey (pragma .getName ()))
55
+ throw new DuplicatePragmaException (formatForSchema (PRGDUP01 ,
56
+ "Duplication found for " + pragma .getOutline (), pragma ));
52
57
pragmas .put (pragma .getName (), pragma );
53
58
setPragmaValue (pragma .getName (), pragma .getValue ().toNativeValue ());
54
59
return pragma ;
55
60
}
56
61
57
62
public <T > void setPragmaValue (String name , T value ) {
58
63
switch (name ) {
59
- case IGNORE_UNDEFINED_PROPERTIES -> ignoreUndefinedProperties = (boolean ) value ;
60
- case FLOATING_POINT_TOLERANCE -> floatingPointTolerance = (double ) value ;
61
- case IGNORE_OBJECT_PROPERTY_ORDER -> ignoreObjectPropertyOrder = (boolean ) value ;
62
- case DATE_DATA_TYPE_FORMAT -> {
64
+ case NAME_IGNORE_UNDEFINED_PROPERTIES -> ignoreUndefinedProperties = (boolean ) value ;
65
+ case NAME_FLOATING_POINT_TOLERANCE -> floatingPointTolerance = (double ) value ;
66
+ case NAME_IGNORE_OBJECT_PROPERTY_ORDER -> ignoreObjectPropertyOrder = (boolean ) value ;
67
+ case NAME_DATE_DATA_TYPE_FORMAT -> {
63
68
dateDataTypeFormat = (String ) value ;
64
69
dateTypeParser = new DateTimeParser (dateDataTypeFormat , DATE_TYPE );
65
70
}
66
- case TIME_DATA_TYPE_FORMAT -> {
71
+ case NAME_TIME_DATA_TYPE_FORMAT -> {
67
72
timeDataTypeFormat = (String ) value ;
68
73
timeTypeParser = new DateTimeParser (timeDataTypeFormat , TIME_TYPE );
69
74
}
75
+ case NAME_ENABLE_CONTEXTUAL_EXCEPTION -> enableContextualException = (boolean ) value ;
76
+ case NAME_OUTLINE_MAXIMUM_LENGTH -> OutlineFormatter .setMaximumLength ((int ) (long ) value );
70
77
}
71
78
}
72
79
0 commit comments