Process performs type conversion and validates the expression
()
| 35 | |
| 36 | // Process performs type conversion and validates the expression |
| 37 | func (expressionProcessor *ExpressionProcessor) Process() (expression Expression, errors []error) { |
| 38 | if logicalExpression, ok := expressionProcessor.expression.(LogicalExpression); ok { |
| 39 | log.Debugf("Performing type conversion on expression comparisons") |
| 40 | if errors = logicalExpression.ConvertTypes(expressionProcessor.fieldTypeDescriptor); len(errors) > 0 { |
| 41 | log.Debugf("ConvertTypes returned errors") |
| 42 | return |
| 43 | } |
| 44 | |
| 45 | log.Debugf("Performing expression validation") |
| 46 | if errors = logicalExpression.Validate(expressionProcessor.fieldTypeDescriptor); len(errors) > 0 { |
| 47 | log.Debugf("Expression is not valid") |
| 48 | return |
| 49 | } |
| 50 | |
| 51 | log.Debugf("Finished processing expression") |
| 52 | expression = logicalExpression |
| 53 | } else { |
| 54 | errors = append(errors, fmt.Errorf("Expected logical expression but received expression of type %v", |
| 55 | reflect.TypeOf(expressionProcessor.expression).Elem().Name())) |
| 56 | } |
| 57 | |
| 58 | return |
| 59 | } |
| 60 | |
| 61 | type binaryOperatorPosition int |
| 62 |