21
21
import com .ezylang .evalex .data .conversion .DefaultEvaluationValueConverter ;
22
22
import com .ezylang .evalex .data .conversion .EvaluationValueConverterIfc ;
23
23
import com .ezylang .evalex .functions .FunctionIfc ;
24
- import com .ezylang .evalex .functions .basic .*;
25
- import com .ezylang .evalex .functions .datetime .*;
26
- import com .ezylang .evalex .functions .string .*;
27
- import com .ezylang .evalex .functions .trigonometric .*;
24
+ import com .ezylang .evalex .functions .basic .AbsFunction ;
25
+ import com .ezylang .evalex .functions .basic .AverageFunction ;
26
+ import com .ezylang .evalex .functions .basic .CeilingFunction ;
27
+ import com .ezylang .evalex .functions .basic .CoalesceFunction ;
28
+ import com .ezylang .evalex .functions .basic .FactFunction ;
29
+ import com .ezylang .evalex .functions .basic .FloorFunction ;
30
+ import com .ezylang .evalex .functions .basic .IfFunction ;
31
+ import com .ezylang .evalex .functions .basic .Log10Function ;
32
+ import com .ezylang .evalex .functions .basic .LogFunction ;
33
+ import com .ezylang .evalex .functions .basic .MaxFunction ;
34
+ import com .ezylang .evalex .functions .basic .MinFunction ;
35
+ import com .ezylang .evalex .functions .basic .NotFunction ;
36
+ import com .ezylang .evalex .functions .basic .RandomFunction ;
37
+ import com .ezylang .evalex .functions .basic .RoundFunction ;
38
+ import com .ezylang .evalex .functions .basic .SqrtFunction ;
39
+ import com .ezylang .evalex .functions .basic .SumFunction ;
40
+ import com .ezylang .evalex .functions .basic .SwitchFunction ;
41
+ import com .ezylang .evalex .functions .datetime .DateTimeFormatFunction ;
42
+ import com .ezylang .evalex .functions .datetime .DateTimeNewFunction ;
43
+ import com .ezylang .evalex .functions .datetime .DateTimeNowFunction ;
44
+ import com .ezylang .evalex .functions .datetime .DateTimeParseFunction ;
45
+ import com .ezylang .evalex .functions .datetime .DateTimeToEpochFunction ;
46
+ import com .ezylang .evalex .functions .datetime .DateTimeTodayFunction ;
47
+ import com .ezylang .evalex .functions .datetime .DurationFromMillisFunction ;
48
+ import com .ezylang .evalex .functions .datetime .DurationNewFunction ;
49
+ import com .ezylang .evalex .functions .datetime .DurationParseFunction ;
50
+ import com .ezylang .evalex .functions .datetime .DurationToMillisFunction ;
51
+ import com .ezylang .evalex .functions .string .StringContains ;
52
+ import com .ezylang .evalex .functions .string .StringEndsWithFunction ;
53
+ import com .ezylang .evalex .functions .string .StringFormatFunction ;
54
+ import com .ezylang .evalex .functions .string .StringLeftFunction ;
55
+ import com .ezylang .evalex .functions .string .StringLengthFunction ;
56
+ import com .ezylang .evalex .functions .string .StringLowerFunction ;
57
+ import com .ezylang .evalex .functions .string .StringMatchesFunction ;
58
+ import com .ezylang .evalex .functions .string .StringRightFunction ;
59
+ import com .ezylang .evalex .functions .string .StringStartsWithFunction ;
60
+ import com .ezylang .evalex .functions .string .StringSubstringFunction ;
61
+ import com .ezylang .evalex .functions .string .StringTrimFunction ;
62
+ import com .ezylang .evalex .functions .string .StringUpperFunction ;
63
+ import com .ezylang .evalex .functions .trigonometric .AcosFunction ;
64
+ import com .ezylang .evalex .functions .trigonometric .AcosHFunction ;
65
+ import com .ezylang .evalex .functions .trigonometric .AcosRFunction ;
66
+ import com .ezylang .evalex .functions .trigonometric .AcotFunction ;
67
+ import com .ezylang .evalex .functions .trigonometric .AcotHFunction ;
68
+ import com .ezylang .evalex .functions .trigonometric .AcotRFunction ;
69
+ import com .ezylang .evalex .functions .trigonometric .AsinFunction ;
70
+ import com .ezylang .evalex .functions .trigonometric .AsinHFunction ;
71
+ import com .ezylang .evalex .functions .trigonometric .AsinRFunction ;
72
+ import com .ezylang .evalex .functions .trigonometric .Atan2Function ;
73
+ import com .ezylang .evalex .functions .trigonometric .Atan2RFunction ;
74
+ import com .ezylang .evalex .functions .trigonometric .AtanFunction ;
75
+ import com .ezylang .evalex .functions .trigonometric .AtanHFunction ;
76
+ import com .ezylang .evalex .functions .trigonometric .AtanRFunction ;
77
+ import com .ezylang .evalex .functions .trigonometric .CosFunction ;
78
+ import com .ezylang .evalex .functions .trigonometric .CosHFunction ;
79
+ import com .ezylang .evalex .functions .trigonometric .CosRFunction ;
80
+ import com .ezylang .evalex .functions .trigonometric .CotFunction ;
81
+ import com .ezylang .evalex .functions .trigonometric .CotHFunction ;
82
+ import com .ezylang .evalex .functions .trigonometric .CotRFunction ;
83
+ import com .ezylang .evalex .functions .trigonometric .CscFunction ;
84
+ import com .ezylang .evalex .functions .trigonometric .CscHFunction ;
85
+ import com .ezylang .evalex .functions .trigonometric .CscRFunction ;
86
+ import com .ezylang .evalex .functions .trigonometric .DegFunction ;
87
+ import com .ezylang .evalex .functions .trigonometric .RadFunction ;
88
+ import com .ezylang .evalex .functions .trigonometric .SecFunction ;
89
+ import com .ezylang .evalex .functions .trigonometric .SecHFunction ;
90
+ import com .ezylang .evalex .functions .trigonometric .SecRFunction ;
91
+ import com .ezylang .evalex .functions .trigonometric .SinFunction ;
92
+ import com .ezylang .evalex .functions .trigonometric .SinHFunction ;
93
+ import com .ezylang .evalex .functions .trigonometric .SinRFunction ;
94
+ import com .ezylang .evalex .functions .trigonometric .TanFunction ;
95
+ import com .ezylang .evalex .functions .trigonometric .TanHFunction ;
96
+ import com .ezylang .evalex .functions .trigonometric .TanRFunction ;
28
97
import com .ezylang .evalex .operators .OperatorIfc ;
29
- import com .ezylang .evalex .operators .arithmetic .*;
30
- import com .ezylang .evalex .operators .booleans .*;
98
+ import com .ezylang .evalex .operators .arithmetic .InfixDivisionOperator ;
99
+ import com .ezylang .evalex .operators .arithmetic .InfixMinusOperator ;
100
+ import com .ezylang .evalex .operators .arithmetic .InfixModuloOperator ;
101
+ import com .ezylang .evalex .operators .arithmetic .InfixMultiplicationOperator ;
102
+ import com .ezylang .evalex .operators .arithmetic .InfixPlusOperator ;
103
+ import com .ezylang .evalex .operators .arithmetic .InfixPowerOfOperator ;
104
+ import com .ezylang .evalex .operators .arithmetic .PrefixMinusOperator ;
105
+ import com .ezylang .evalex .operators .arithmetic .PrefixPlusOperator ;
106
+ import com .ezylang .evalex .operators .booleans .InfixAndOperator ;
107
+ import com .ezylang .evalex .operators .booleans .InfixEqualsOperator ;
108
+ import com .ezylang .evalex .operators .booleans .InfixGreaterEqualsOperator ;
109
+ import com .ezylang .evalex .operators .booleans .InfixGreaterOperator ;
110
+ import com .ezylang .evalex .operators .booleans .InfixLessEqualsOperator ;
111
+ import com .ezylang .evalex .operators .booleans .InfixLessOperator ;
112
+ import com .ezylang .evalex .operators .booleans .InfixNotEqualsOperator ;
113
+ import com .ezylang .evalex .operators .booleans .InfixOrOperator ;
114
+ import com .ezylang .evalex .operators .booleans .PrefixNotOperator ;
31
115
import java .math .BigDecimal ;
32
116
import java .math .MathContext ;
33
117
import java .math .RoundingMode ;
34
118
import java .time .ZoneId ;
35
119
import java .time .format .DateTimeFormatter ;
36
- import java .util .*;
120
+ import java .util .ArrayList ;
121
+ import java .util .Arrays ;
122
+ import java .util .Collections ;
123
+ import java .util .List ;
124
+ import java .util .Locale ;
125
+ import java .util .Map ;
126
+ import java .util .TreeMap ;
37
127
import java .util .function .Supplier ;
38
128
import lombok .Builder ;
39
129
import lombok .Getter ;
@@ -183,9 +273,11 @@ public class ExpressionConfiguration {
183
273
Map .entry ("STR_CONTAINS" , new StringContains ()),
184
274
Map .entry ("STR_ENDS_WITH" , new StringEndsWithFunction ()),
185
275
Map .entry ("STR_FORMAT" , new StringFormatFunction ()),
276
+ Map .entry ("STR_LEFT" , new StringLeftFunction ()),
186
277
Map .entry ("STR_LENGTH" , new StringLengthFunction ()),
187
278
Map .entry ("STR_LOWER" , new StringLowerFunction ()),
188
279
Map .entry ("STR_MATCHES" , new StringMatchesFunction ()),
280
+ Map .entry ("STR_RIGHT" , new StringRightFunction ()),
189
281
Map .entry ("STR_STARTS_WITH" , new StringStartsWithFunction ()),
190
282
Map .entry ("STR_SUBSTRING" , new StringSubstringFunction ()),
191
283
Map .entry ("STR_TRIM" , new StringTrimFunction ()),
@@ -305,17 +397,44 @@ public static ExpressionConfiguration defaultConfiguration() {
305
397
return ExpressionConfiguration .builder ().build ();
306
398
}
307
399
400
+ private static Map <String , EvaluationValue > getStandardConstants () {
401
+
402
+ Map <String , EvaluationValue > constants = new TreeMap <>(String .CASE_INSENSITIVE_ORDER );
403
+
404
+ constants .put ("TRUE" , EvaluationValue .TRUE );
405
+ constants .put ("FALSE" , EvaluationValue .FALSE );
406
+ constants .put (
407
+ "PI" ,
408
+ EvaluationValue .numberValue (
409
+ new BigDecimal (
410
+ "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679" )));
411
+ constants .put (
412
+ "E" ,
413
+ EvaluationValue .numberValue (
414
+ new BigDecimal (
415
+ "2.71828182845904523536028747135266249775724709369995957496696762772407663" )));
416
+ constants .put ("NULL" , EvaluationValue .NULL_VALUE );
417
+
418
+ constants .put (
419
+ "DT_FORMAT_ISO_DATE_TIME" ,
420
+ EvaluationValue .stringValue ("yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]['['VV']']" ));
421
+ constants .put (
422
+ "DT_FORMAT_LOCAL_DATE_TIME" , EvaluationValue .stringValue ("yyyy-MM-dd'T'HH:mm:ss[.SSS]" ));
423
+ constants .put ("DT_FORMAT_LOCAL_DATE" , EvaluationValue .stringValue ("yyyy-MM-dd" ));
424
+
425
+ return constants ;
426
+ }
427
+
308
428
/**
309
429
* Adds additional operators to this configuration.
310
430
*
311
431
* @param operators variable number of arguments with a map entry holding the operator name and
312
432
* implementation. <br>
313
433
* Example: <code>
314
- * ExpressionConfiguration.defaultConfiguration()
315
- * .withAdditionalOperators(
316
- * Map.entry("++", new PrefixPlusPlusOperator()),
317
- * Map.entry("++", new PostfixPlusPlusOperator()));
318
- * </code>
434
+ * ExpressionConfiguration.defaultConfiguration() .withAdditionalOperators(
435
+ * Map.entry("++", new PrefixPlusPlusOperator()), Map.entry("++", new
436
+ * PostfixPlusPlusOperator()));
437
+ * </code>
319
438
* @return The modified configuration, to allow chaining of methods.
320
439
*/
321
440
@ SafeVarargs
@@ -332,11 +451,10 @@ public final ExpressionConfiguration withAdditionalOperators(
332
451
* @param functions variable number of arguments with a map entry holding the functions name and
333
452
* implementation. <br>
334
453
* Example: <code>
335
- * ExpressionConfiguration.defaultConfiguration()
336
- * .withAdditionalFunctions(
337
- * Map.entry("save", new SaveFunction()),
338
- * Map.entry("update", new UpdateFunction()));
339
- * </code>
454
+ * ExpressionConfiguration.defaultConfiguration() .withAdditionalFunctions(
455
+ * Map.entry("save", new SaveFunction()), Map.entry("update", new
456
+ * UpdateFunction()));
457
+ * </code>
340
458
* @return The modified configuration, to allow chaining of methods.
341
459
*/
342
460
@ SafeVarargs
@@ -346,32 +464,4 @@ public final ExpressionConfiguration withAdditionalFunctions(
346
464
.forEach (entry -> functionDictionary .addFunction (entry .getKey (), entry .getValue ()));
347
465
return this ;
348
466
}
349
-
350
- private static Map <String , EvaluationValue > getStandardConstants () {
351
-
352
- Map <String , EvaluationValue > constants = new TreeMap <>(String .CASE_INSENSITIVE_ORDER );
353
-
354
- constants .put ("TRUE" , EvaluationValue .TRUE );
355
- constants .put ("FALSE" , EvaluationValue .FALSE );
356
- constants .put (
357
- "PI" ,
358
- EvaluationValue .numberValue (
359
- new BigDecimal (
360
- "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679" )));
361
- constants .put (
362
- "E" ,
363
- EvaluationValue .numberValue (
364
- new BigDecimal (
365
- "2.71828182845904523536028747135266249775724709369995957496696762772407663" )));
366
- constants .put ("NULL" , EvaluationValue .NULL_VALUE );
367
-
368
- constants .put (
369
- "DT_FORMAT_ISO_DATE_TIME" ,
370
- EvaluationValue .stringValue ("yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]['['VV']']" ));
371
- constants .put (
372
- "DT_FORMAT_LOCAL_DATE_TIME" , EvaluationValue .stringValue ("yyyy-MM-dd'T'HH:mm:ss[.SSS]" ));
373
- constants .put ("DT_FORMAT_LOCAL_DATE" , EvaluationValue .stringValue ("yyyy-MM-dd" ));
374
-
375
- return constants ;
376
- }
377
467
}
0 commit comments