|
FUNCTION is_sql_mappable (arg : expression) : BOOLEAN; LOCAL i : INTEGER ; END_LOCAL ; IF 'iso13584_expressions_schema.simple_numeric_expression' IN TYPEOF ( arg ) THEN RETURN ( TRUE ) ; END_IF ; IF 'iso13584_expressions_schema.sql_mappable_defined_function' IN TYPEOF ( arg ) THEN RETURN ( TRUE ) ; END_IF ; IF 'iso13584_expressions_schema.minus_function' IN TYPEOF ( arg ) THEN RETURN ( is_sql_mappable ( arg \ unary_numeric_expression . operand ) ) ; END_IF ; IF ( 'iso13584_expressions_schema.abs_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.sin_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.cos_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.tan_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.asin_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.acos_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.atan_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.exp_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.log_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.log2_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.log10_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.square_root_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.value_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.length_function' IN TYPEOF ( arg ) ) THEN RETURN ( FALSE ) ; END_IF ; IF ( 'iso13584_expressions_schema.plus_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.mult_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.maximum_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.minimum_function' IN TYPEOF ( arg ) ) THEN REPEAT i := 1 TO SIZEOF ( arg \ multiple_arity_numeric_expression . operands ) ; IF NOT is_sql_mappable ( arg \ multiple_arity_numeric_expression . operands [ i ] ) THEN RETURN ( FALSE ) ; END_IF ; END_REPEAT ; RETURN ( TRUE ) ; END_IF ; IF ( 'iso13584_expressions_schema.minus_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.slash_expression' IN TYPEOF ( arg ) ) THEN RETURN ( is_sql_mappable ( arg \ binary_numeric_expression . operands [ 1 ] ) AND is_sql_mappable ( arg \ binary_numeric_expression . operands [ 2 ] ) ) ; END_IF ; IF ( 'iso13584_expressions_schema.div_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.mod_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.power_expression' IN TYPEOF ( arg ) ) THEN RETURN ( FALSE ) ; END_IF ; IF 'iso13584_expressions_schema.simple_boolean_expression' IN TYPEOF ( arg ) THEN RETURN ( TRUE ) ; END_IF ; IF 'iso13584_expressions_schema.not_expression' IN TYPEOF ( arg ) THEN RETURN ( is_sql_mappable ( arg \ unary_generic_expression . operand ) ) ; END_IF ; IF ( 'iso13584_expressions_schema.odd_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.xor_expression' IN TYPEOF ( arg ) ) THEN RETURN ( FALSE ) ; END_IF ; IF ( 'iso13584_expressions_schema.and_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.or_expression' IN TYPEOF ( arg ) ) THEN REPEAT i := 1 TO SIZEOF ( arg \ multiple_arity_boolean_expression . operands ) ; IF NOT is_sql_mappable ( arg \ multiple_arity_boolean_expression . operands [ i ] ) THEN RETURN ( FALSE ) ; END_IF ; END_REPEAT ; RETURN ( TRUE ) ; END_IF ; IF 'iso13584_expressions_schema.equals_expression' IN TYPEOF ( arg ) THEN RETURN ( is_sql_mappable ( arg \ binary_generic_expression . operands [ 1 ] ) AND is_sql_mappable ( arg \ binary_generic_expression . operands [ 2 ] ) ) ; END_IF ; IF ( 'iso13584_expressions_schema.comparison_equal' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.comparison_greater' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.comparison_greater_equal' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.comparison_less' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.comparison_less_equal' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.comparison_not_equal' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.like_expression' IN TYPEOF ( arg ) ) THEN RETURN ( is_sql_mappable ( arg \ comparison_expression . operands [ 1 ] ) AND is_sql_mappable ( arg \ comparison_expression . operands [ 2 ] ) ) ; END_IF ; IF 'iso13584_expressions_schema.interval_expression' IN TYPEOF ( arg ) THEN RETURN ( is_sql_mappable ( arg \ interval_expression . interval_low ) AND is_sql_mappable ( arg \ interval_expression . interval_high ) AND is_sql_mappable ( arg \ interval_expression . interval_item ) ) ; END_IF ; IF ( 'iso13584_expressions_schema.numeric_defined_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.boolean_defined_function' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.string_defined_function' IN TYPEOF ( arg ) ) THEN RETURN ( FALSE ) ; END_IF ; IF 'iso13584_expressions_schema.simple_string_expression' IN TYPEOF ( arg ) THEN RETURN ( TRUE ) ; END_IF ; IF ( 'iso13584_expressions_schema.index_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.substring_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.concat_expression' IN TYPEOF ( arg ) ) OR ( 'iso13584_expressions_schema.format_function' IN TYPEOF ( arg ) ) THEN RETURN ( FALSE ) ; END_IF ; RETURN ( FALSE ) ; END_FUNCTION; -- is_sql_mappable |
|
public class FIs_sql_mappable public static Value run(SdaiContext _context, Value arg) |