Overview Schemas Index

SHAPE_DATA_QUALITY_CRITERIA_SCHEMA (jsdai.SShape_data_quality_criteria_schema)


FUNCTION validate_accuracy_types
          (ei : shape_data_quality_criterion; type_list : BAG [0:?] OF STRING) : LOGICAL;

LOCAL
       sdqca: BAG  OF
        SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION:=[];
       sma: BAG  OF  SHAPE_MEASUREMENT_ACCURACY:=[];
       sdqir: SET OF
        SHAPE_DATA_QUALITY_INSPECTION_RESULT:=[];
       scraa: BAG OF
        SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION:=[];
       t_logic:BOOLEAN;
     END_LOCAL;
     -- STEP-1
     -- collect types OF  range attribute OF  shape_measurement_accuracy
     -- referred FROM  shape_data_quality_criterion_and_accuracy_association 
     -- that refers TO  given shape_data_quality_criterion.
     sdqca := USEDIN(ei,
               'SHAPE_DATA_QUALITY_CRITERIA_SCHEMA.'+
               'SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION.'+
               'SHAPE_DATA_QUALITY_CRITERION');
     IF(SIZEOF(sdqca) <> 0) THEN
       REPEAT  i:= 1 TO  SIZEOF(sdqca);
         sma := sma + sdqca[i].required_specific_accuracy;
       END_REPEAT;
  
       -- STEP-2
       -- check whether the collected types include all the TYPE  names
       -- IN  the TYPE  LIST  given AS  an input argument OF  this function
       -- AND  they do NOT  include any other TYPE  names. 
       IF(SIZEOF(type_list) < SIZEOF(sma)) THEN
         RETURN(FALSE);
       END_IF;
  
       REPEAT  i:= 1 TO  SIZEOF(sma);
         t_logic := FALSE;
         REPEAT  j:= 1 TO  SIZEOF(type_list);
           IF(type_list[j] IN  value_limit_type(sma[i].range)) THEN
             t_logic := TRUE;
             ESCAPE;
           END_IF;
         END_REPEAT;
         IF(NOT(t_logic)) THEN
           RETURN(FALSE);
         END_IF;
       END_REPEAT;
    END_IF;
  
     -- STEP-3
     -- collect types OF  range attribute OF shape_measurement_accuracy
     -- referred FROM shape_inspection_result_accuracy_association
     -- that refers TO  shape_data_quality_inspection_result
     -- FOR the given shape_data_quality_criterion.
     sdqir := QUERY(q <* bag_to_set(USEDIN(ei,
                   'PRODUCT_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
                   'DATA_QUALITY_INSPECTION_RESULT.'+
                   'CRITERION_INSPECTED'))|
           'SHAPE_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
           'SHAPE_DATA_QUALITY_INSPECTION_RESULT'
            IN  TYPEOF(q));
     IF(SIZEOF(sdqir) = 0) THEN
       RETURN(TRUE);
     END_IF;
  
     REPEAT  i:= 1 TO  SIZEOF(sdqir);
       scraa := USEDIN(sdqir[i],
               'SHAPE_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
               'SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION.'+
               'SHAPE_DATA_QUALITY_RESULT');
       IF(SIZEOF(scraa) <> 0) THEN
         sma := [];
         REPEAT  j:= 1 TO  SIZEOF(scraa);
           sma := sma + scraa[j].applied_specific_accuracy;
         END_REPEAT;
  
         -- STEP-4
         -- check whether the collected types include all the type
         -- names IN  the TYPE  LIST given AS an input argument of
         -- this FUNCTION AND they do NOT include any other TYPE names.
         IF(SIZEOF(type_list) < SIZEOF(sma)) THEN
           RETURN(FALSE);
         END_IF;
  
         REPEAT  j:= 1 TO  SIZEOF(sma);
           t_logic := FALSE;
           REPEAT k:= 1 TO SIZEOF(type_list);
             IF(type_list[k] IN value_limit_type(sma[j].range)) THEN
               t_logic := TRUE;
               ESCAPE;
             END_IF;
           END_REPEAT;
           IF(NOT(t_logic)) THEN
             RETURN(FALSE);
           END_IF;
         END_REPEAT;
       END_IF;
     END_REPEAT;
  
     RETURN(TRUE);

END_FUNCTION; -- validate_accuracy_types

public class FValidate_accuracy_types
          public static Value run(SdaiContext _context, Value ei, Value type_list)