33import com .relogiclabs .jschema .exception .DuplicatePragmaException ;
44import com .relogiclabs .jschema .internal .time .DateTimeParser ;
55import com .relogiclabs .jschema .internal .tree .PragmaDescriptor ;
6+ import com .relogiclabs .jschema .message .OutlineFormatter ;
67import com .relogiclabs .jschema .node .JPragma ;
78import lombok .Getter ;
89
910import java .util .HashMap ;
1011import java .util .Iterator ;
1112import java .util .Map ;
1213
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 ;
1421import static com .relogiclabs .jschema .message .MessageFormatter .formatForSchema ;
1522import static com .relogiclabs .jschema .time .DateTimeType .DATE_TYPE ;
1623import static com .relogiclabs .jschema .time .DateTimeType .TIME_TYPE ;
1724
1825@ Getter
1926public 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" ;
2634
2735 private final Map <String , JPragma > pragmas ;
2836
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 ();
3943
4044 private DateTimeParser dateTypeParser ;
4145 private DateTimeParser timeTypeParser ;
@@ -47,26 +51,29 @@ public PragmaRegistry() {
4751 }
4852
4953 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 ));
5257 pragmas .put (pragma .getName (), pragma );
5358 setPragmaValue (pragma .getName (), pragma .getValue ().toNativeValue ());
5459 return pragma ;
5560 }
5661
5762 public <T > void setPragmaValue (String name , T value ) {
5863 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 -> {
6368 dateDataTypeFormat = (String ) value ;
6469 dateTypeParser = new DateTimeParser (dateDataTypeFormat , DATE_TYPE );
6570 }
66- case TIME_DATA_TYPE_FORMAT -> {
71+ case NAME_TIME_DATA_TYPE_FORMAT -> {
6772 timeDataTypeFormat = (String ) value ;
6873 timeTypeParser = new DateTimeParser (timeDataTypeFormat , TIME_TYPE );
6974 }
75+ case NAME_ENABLE_CONTEXTUAL_EXCEPTION -> enableContextualException = (boolean ) value ;
76+ case NAME_OUTLINE_MAXIMUM_LENGTH -> OutlineFormatter .setMaximumLength ((int ) (long ) value );
7077 }
7178 }
7279
0 commit comments