11# Root and base type expression checker functions
2- import common .validator .enums .exception_messages as ExceptionMessages
32import datetime
4- import uuid
53import re
6- from common .validator .lookup .lookup_data import LookUpData
4+ import uuid
5+ from enum import Enum
6+
7+ import common .validator .enums .exception_messages as ExceptionMessages
78from common .validator .lookup .key_data import KeyData
8- from common .validator .record_error import RecordError , ErrorReport
9+ from common .validator .lookup .lookup_data import LookUpData
10+ from common .validator .record_error import ErrorReport
11+ from common .validator .record_error import RecordError
12+
13+
14+ class ExpressionType (Enum ):
15+ DATETIME = 'DATETIME'
16+ DATE = 'DATE'
17+ UUID = 'UUID'
18+ INT = 'INT'
19+ FLOAT = 'FLOAT'
20+ REGEX = 'REGEX'
21+ EQUAL = 'EQUAL'
22+ NOTEQUAL = 'NOTEQUAL'
23+ IN = 'IN'
24+ NRANGE = 'NRANGE'
25+ INARRAY = 'INARRAY'
26+ UPPER = 'UPPER'
27+ LOWER = 'LOWER'
28+ LENGTH = 'LENGTH'
29+ STARTSWITH = 'STARTSWITH'
30+ ENDSWITH = 'ENDSWITH'
31+ EMPTY = 'EMPTY'
32+ NOTEMPTY = 'NOTEMPTY'
33+ POSITIVE = 'POSITIVE'
34+ GENDER = 'GENDER'
35+ NHSNUMBER = 'NHSNUMBER'
36+ MAXOBJECTS = 'MAXOBJECTS'
37+ POSTCODE = 'POSTCODE'
38+ ONLYIF = 'ONLYIF'
39+ LOOKUP = 'LOOKUP'
40+ KEYCHECK = 'KEYCHECK'
941
1042
1143class ExpressionChecker :
@@ -17,7 +49,7 @@ def __init__(self, data_parser, summarise, report_unexpected_exception):
1749 self .summarise = summarise
1850 self .report_unexpected_exception = report_unexpected_exception
1951
20- def validateExpression (self , expression_type , rule , field_name , field_value , row ) -> ErrorReport :
52+ def validate_expression (self , expression_type : str , rule , field_name , field_value , row ) -> ErrorReport :
2153 match expression_type :
2254 case "DATETIME" :
2355 return self ._validate_datetime (rule , field_name , field_value , row )
@@ -75,7 +107,7 @@ def validateExpression(self, expression_type, rule, field_name, field_value, ro
75107 return "Schema expression not found! Check your expression type : " + expression_type
76108
77109 # iso8086 date time validate
78- def _validate_datetime (self , rule , field_name , field_value , row ):
110+ def _validate_datetime (self , rule , field_name , field_value , row ) -> ErrorReport :
79111 try :
80112 datetime .date .fromisoformat (field_value )
81113 # TODO - rule is not used - could be date only, date time, past, future etc
@@ -88,14 +120,14 @@ def _validate_datetime(self, rule, field_name, field_value, row):
88120 else ExceptionMessages .MESSAGES [ExceptionMessages .RECORD_CHECK_FAILED ])
89121 if e .details is not None :
90122 details = e .details
91- return RecordError (code , message , row , field_name , details , self .summarise )
123+ return ErrorReport (code , message , row , field_name , details , self .summarise )
92124 except Exception as e :
93125 if self .report_unexpected_exception :
94126 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
95- return RecordError (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
127+ return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
96128
97129 # UUID validate
98- def _validate_uuid (self , expressionRule , field_name , field_value , row ):
130+ def _validate_uuid (self , expressionRule , field_name , field_value , row ) -> ErrorReport :
99131 try :
100132 uuid .UUID (str (field_value ))
101133 except RecordError as e :
@@ -112,7 +144,7 @@ def _validate_uuid(self, expressionRule, field_name, field_value, row):
112144
113145 # Integer Validate
114146 def _validate_integer (self , expression_rule , field_name ,
115- field_value , row , summarise = False ) -> ErrorReport :
147+ field_value , row ) -> ErrorReport :
116148 try :
117149 int (field_value )
118150 if expression_rule :
@@ -138,14 +170,14 @@ def _validate_integer(self, expression_rule, field_name,
138170 else ExceptionMessages .MESSAGES [ExceptionMessages .RECORD_CHECK_FAILED ])
139171 if e .details is not None :
140172 details = e .details
141- return RecordError (code , message , row , field_name , details , self .summarise )
173+ return ErrorReport (code , message , row , field_name , details , self .summarise )
142174 except Exception as e :
143175 if self .report_unexpected_exception :
144176 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
145177 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
146178
147179 # Float Validate
148- def _validate_float (self , expression_rule , field_name , field_value , row , summarise ) :
180+ def _validate_float (self , expression_rule , field_name , field_value , row ) -> ErrorReport :
149181 try :
150182 float (field_value )
151183 except RecordError as e :
@@ -154,7 +186,7 @@ def _validate_float(self, expression_rule, field_name, field_value, row, summar
154186 else ExceptionMessages .MESSAGES [ExceptionMessages .RECORD_CHECK_FAILED ])
155187 if e .details is not None :
156188 details = e .details
157- return RecordError (code , message , row , field_name , details , self .summarise )
189+ return ErrorReport (code , message , row , field_name , details , self .summarise )
158190 except Exception as e :
159191 if self .report_unexpected_exception :
160192 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
@@ -183,7 +215,7 @@ def _validate_length(self, expression_rule, field_name, field_value, row) -> Er
183215 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
184216
185217 # Regex Validate
186- def _validate_regex (self , expression_rule , field_name , field_value , row , summarise ) -> ErrorReport :
218+ def _validate_regex (self , expression_rule , field_name , field_value , row ) -> ErrorReport :
187219 try :
188220 result = re .search (expression_rule , field_value )
189221 if not result :
@@ -197,7 +229,7 @@ def _validate_regex(self, expression_rule, field_name, field_value, row, summar
197229 )
198230 if e .details is not None :
199231 details = e .details
200- return RecordError (code , message , row , field_name , details , self .summarise )
232+ return ErrorReport (code , message , row , field_name , details , self .summarise )
201233 except Exception as e :
202234 if self .report_unexpected_exception :
203235 message = ExceptionMessages .MESSAGES [ExceptionMessages .UNEXPECTED_EXCEPTION ] % (e .__class__ .__name__ , e )
@@ -273,6 +305,7 @@ def _validate_n_range(self, expression_rule, field_name, field_value, row) -> E
273305 raise RecordError (ExceptionMessages .RECORD_CHECK_FAILED ,
274306 "Value range check failed" , "Value is not within the number range, data- "
275307 + field_value )
308+ return None
276309 except RecordError as e :
277310 code = e .code if e .code is not None else ExceptionMessages .RECORD_CHECK_FAILED
278311 message = (
@@ -348,7 +381,7 @@ def _validate_lower(self, expression_rule, field_name, field_value, row) -> Erro
348381 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
349382
350383 # Starts With Validate
351- def _validate_starts_with (self , expression_rule , field_name , field_value , row , summarise ) -> ErrorReport :
384+ def _validate_starts_with (self , expression_rule , field_name , field_value , row ) -> ErrorReport :
352385 try :
353386 result = field_value .startswith (expression_rule )
354387 if not result :
@@ -369,7 +402,7 @@ def _validate_starts_with(self, expression_rule, field_name, field_value, row, s
369402 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
370403
371404 # Ends With Validate
372- def _validate_ends_with (self , expression_rule , field_name , field_value , row , summarise ) -> ErrorReport :
405+ def _validate_ends_with (self , expression_rule , field_name , field_value , row ) -> ErrorReport :
373406 try :
374407 result = field_value .endswith (expression_rule )
375408 if not result :
@@ -390,7 +423,7 @@ def _validate_ends_with(self, expression_rule, field_name, field_value, row, sum
390423 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
391424
392425 # Empty Validate
393- def _validate_empty (self , expression_rule , field_name , field_value , row , summarise ) -> ErrorReport :
426+ def _validate_empty (self , expression_rule , field_name , field_value , row ) -> ErrorReport :
394427 try :
395428 if field_value :
396429 raise RecordError (ExceptionMessages .RECORD_CHECK_FAILED ,
@@ -409,7 +442,7 @@ def _validate_empty(self, expression_rule, field_name, field_value, row, summari
409442 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
410443
411444 # Not Empty Validate
412- def _validate_not_empty (self , expression_rule , field_name , field_value , row , summarise ) -> ErrorReport :
445+ def _validate_not_empty (self , expression_rule , field_name , field_value , row ) -> ErrorReport :
413446 try :
414447 if not field_value :
415448 raise RecordError (ExceptionMessages .RECORD_CHECK_FAILED ,
@@ -428,7 +461,7 @@ def _validate_not_empty(self, expression_rule, field_name, field_value, row, sum
428461 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , field_name , '' , self .summarise )
429462
430463 # Positive Validate
431- def _validate_positive (self , expressionRule , fieldName , fieldValue , row , summarise ) -> ErrorReport :
464+ def _validate_positive (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
432465 try :
433466 value = float (fieldValue )
434467 if value < 0 :
@@ -448,7 +481,7 @@ def _validate_positive(self, expressionRule, fieldName, fieldValue, row, summar
448481 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , '' , self .summarise )
449482
450483 # NHSNumber Validate
451- def _validate_nhs_number (self , expressionRule , fieldName , fieldValue , row , summarise ) -> ErrorReport :
484+ def _validate_nhs_number (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
452485 try :
453486 regexRule = '^6[0-9]{10}$'
454487 result = re .search (regexRule , fieldValue )
@@ -469,7 +502,7 @@ def _validate_nhs_number(self, expressionRule, fieldName, fieldValue, row, summ
469502 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , '' , self .summarise )
470503
471504 # Gender Validate
472- def _validate_gender (self , expressionRule , fieldName , fieldValue , row , summarise ) -> ErrorReport :
505+ def _validate_gender (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
473506 try :
474507 ruleList = ['0' , '1' , '2' , '9' ]
475508
@@ -490,7 +523,7 @@ def _validate_gender(self, expressionRule, fieldName, fieldValue, row, summaris
490523 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , '' , self .summarise )
491524
492525 # PostCode Validate
493- def _validate_post_code (self , expressionRule , fieldName , fieldValue , row , summarise ) -> ErrorReport :
526+ def _validate_post_code (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
494527 try :
495528 regexRule = '^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y]'
496529 '[0-9]{1,2})|(([AZa-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$'
@@ -512,7 +545,7 @@ def _validate_post_code(self, expressionRule, fieldName, fieldValue, row, summa
512545 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , '' , self .summarise )
513546
514547 # Max Objects Validate
515- def _validate_max_objects (self , expressionRule , fieldName , fieldValue , row , summarise ) -> ErrorReport :
548+ def _validate_max_objects (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
516549 try :
517550 value = len (fieldValue )
518551 if value > int (expressionRule ):
@@ -556,7 +589,7 @@ def _validate_only_if(self, expressionRule, fieldName, fieldValue, row) -> Error
556589 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , '' , self .summarise )
557590
558591 # Check with Lookup
559- def _validate_against_lookup (self , expressionRule , fieldName , fieldValue , row , summarise ) -> ErrorReport :
592+ def _validate_against_lookup (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
560593 try :
561594 result = self .dataLookUp .findLookUp (fieldValue )
562595 if not result :
@@ -576,7 +609,7 @@ def _validate_against_lookup(self, expressionRule, fieldName, fieldValue, row,
576609 return ErrorReport (ExceptionMessages .UNEXPECTED_EXCEPTION , message , row , fieldName , '' , self .summarise )
577610
578611 # Check with Key Lookup
579- def _validate_against_key (self , expressionRule , fieldName , fieldValue , row , summarise ) -> ErrorReport :
612+ def _validate_against_key (self , expressionRule , fieldName , fieldValue , row ) -> ErrorReport :
580613 try :
581614 result = self .KeyData .findKey (expressionRule , fieldValue )
582615 if not result :
0 commit comments