protected EqualityEvaluator<String, Criterion, Object> compileEqual(final Equality eq) {
    if (eq.getIdentifier() instanceof Property) {
      propertyInQuery = true;
      final Property property = (Property) eq.getIdentifier();
      return new EqualityEvaluator<String, Criterion, Object>() {
        public Criterion evaluate(Object paramValue) {
          Conjunction conj = Restrictions.conjunction();
          if (!StringUtils.isEmpty(property.getNamespace())) {
            conj.add(Restrictions.eq(PROPERTY_NS_DB_FIELD, property.getNamespace()));
          }
          conj.add(Restrictions.eq(PROPERTY_NAME_DB_FIELD, property.getName()));
          conj.add(Restrictions.eq(PROPERTY_VALUE_DB_FIELD, eq.getValue().getValue()));

          return conj;
        };

        public String getIdentifier() {
          return property.toString();
        };
      };
    } else {
      final String fieldName = eq.getIdentifier().getName();
      final Object value = eq.getValue().getValue();

      final String dbField = getDBField(fieldName);

      if (INSTANCE_STATUS_FIELD.equals(fieldName)) {
        return new FieldValueEquality(INSTANCE_STATUS_FIELD) {
          /** @see org.apache.ode.ql.eval.skel.CommandEvaluator#evaluate(java.lang.Object) */
          public Criterion evaluate(Object paramValue) {
            short noState = 200; // TODO move to constants
            Disjunction disj = Restrictions.disjunction();

            if (STATUS_ACTIVE.equals(paramValue)) {
              disj.add(Restrictions.eq(dbField, ProcessState.STATE_NEW));
              disj.add(Restrictions.eq(dbField, ProcessState.STATE_ACTIVE));
              disj.add(Restrictions.eq(dbField, ProcessState.STATE_READY));
            } else if (STATUS_SUSPENDED.equals(paramValue)) {
              disj.add(Restrictions.eq(dbField, ProcessState.STATE_SUSPENDED));
            } else if (STATUS_ERROR.equals(value)) {
              disj.add(Restrictions.eq(dbField, noState)); // Error instance state doesn't exist yet
            } else if (STATUS_COMPLETED.equals(paramValue)) {
              disj.add(Restrictions.eq(dbField, ProcessState.STATE_COMPLETED_OK));
            } else if (STATUS_TERMINATED.equals(paramValue)) {
              disj.add(Restrictions.eq(dbField, ProcessState.STATE_TERMINATED));
            } else if (STATUS_FAULTED.equals(paramValue)) {
              disj.add(Restrictions.eq(dbField, ProcessState.STATE_COMPLETED_WITH_FAULT));
            } else {
              disj.add(Restrictions.eq(dbField, noState)); // Non existent state
            }
            return disj;
          }
        };
      }

      return new DBFieldValueEq(dbField, value);
    }
  }
  /** Partially evaluate the right-hand side and the conditions of a specified rule. */
  private static Rule evaluateRule(Rule rule, TermContext termContext) {
    try {
      // TODO(AndreiS): some evaluation is required in the LHS as well
      // TODO(YilongL): cannot simply uncomment the following code because it
      // may evaluate the LHS using the rule itself
      // Term leftHandSide = rule.leftHandSide().evaluate(termContext);

      Rule origRule = rule;
      Term rightHandSide = rule.rightHandSide().evaluate(termContext);
      List<Term> requires = new ArrayList<>();
      for (Term term : rule.requires()) {
        requires.add(term.evaluate(termContext));
      }
      List<Term> ensures = new ArrayList<>();
      for (Term term : rule.ensures()) {
        ensures.add(term.evaluate(termContext));
      }
      ConjunctiveFormula lookups = ConjunctiveFormula.of(termContext);
      for (Equality equality : rule.lookups().equalities()) {
        lookups =
            lookups.add(
                equality.leftHandSide().evaluate(termContext),
                equality.rightHandSide().evaluate(termContext));
      }

      Map<CellLabel, Term> rhsOfWriteCell = null;
      if (rule.isCompiledForFastRewriting()) {
        rhsOfWriteCell = new HashMap<>();
        for (Map.Entry<CellLabel, Term> entry : rule.rhsOfWriteCell().entrySet()) {
          rhsOfWriteCell.put(entry.getKey(), entry.getValue().evaluate(termContext));
        }
      }

      Rule newRule =
          new Rule(
              rule.label(),
              rule.leftHandSide(),
              rightHandSide,
              requires,
              ensures,
              rule.freshConstants(),
              rule.freshVariables(),
              lookups,
              rule.isCompiledForFastRewriting(),
              rule.lhsOfReadCell(),
              rhsOfWriteCell,
              rule.cellsToCopy(),
              rule.matchingInstructions(),
              rule,
              termContext);
      return newRule.equals(rule) ? origRule : newRule;
    } catch (KEMException e) {
      e.exception.addTraceFrame(
          "while compiling rule at location " + rule.getSource() + rule.getLocation());
      throw e;
    }
  }
Exemple #3
0
  /**
   * This function obtains from a list of Equality's objects the Equality object which is related
   * with an identifier of the specification. The Equality's objects are used for refine one
   * variable in the specification to more than one variable in the specification.
   *
   * @param implID The identifier of a variable in the implementation
   * @param equalities A list of Equality's objects
   * @return the related equality
   */
  public static Equality getAssociatedEquality(String implID, List<Equality> equalities) {
    for (int i = 0; i < equalities.size(); i++) {
      Equality equality = equalities.get(i);
      String plCode = equality.getPLCodeEquality();
      plCode = plCode.trim();
      plCode = plCode.substring(0, plCode.length() - 1);

      if (plCode.equals(implID)) return equality;
    }
    return null;
  }
Exemple #4
0
 // Cuando evolucione el refinamiento esta funcion sera insuficiente porque voy a poder tener
 // codigo
 // ademas de identificadores. Posiblemente haya que agregar algo a TCRL
 public static String getRelatedImplID(Equality equality) {
   // No sera correcto en el futuro
   String implID = equality.getPLCodeEquality();
   implID = implID.trim();
   implID = implID.substring(0, implID.length() - 1);
   System.out.println("EL id es: " + implID);
   return implID.trim();
 }
 public static final SubLObject setup_hierarchical_visitor_file() {
   // CVS_ID("Id: hierarchical-visitor.lisp 127954 2009-06-04 20:08:55Z rck ");
   Structures.register_method(
       print_high.$print_object_method_table$.getGlobalValue(),
       $dtp_hierarchical_visitor$.getGlobalValue(),
       Symbols.symbol_function($sym8$HIERARCHICAL_VISITOR_PRINT_FUNCTION_TRAMPOLINE));
   Structures.def_csetf($sym9$HIER_VISIT_BEGIN_PATH_FN, $sym10$_CSETF_HIER_VISIT_BEGIN_PATH_FN);
   Structures.def_csetf($sym11$HIER_VISIT_END_PATH_FN, $sym12$_CSETF_HIER_VISIT_END_PATH_FN);
   Structures.def_csetf($sym13$HIER_VISIT_ACCEPT_NODE_FN, $sym14$_CSETF_HIER_VISIT_ACCEPT_NODE_FN);
   Structures.def_csetf($sym15$HIER_VISIT_BEGIN_VISIT_FN, $sym16$_CSETF_HIER_VISIT_BEGIN_VISIT_FN);
   Structures.def_csetf($sym17$HIER_VISIT_END_VISIT_FN, $sym18$_CSETF_HIER_VISIT_END_VISIT_FN);
   Structures.def_csetf($sym19$HIER_VISIT_PARAM, $sym20$_CSETF_HIER_VISIT_PARAM);
   Equality.identity($sym1$HIERARCHICAL_VISITOR);
   return NIL;
 }
 public static final SubLObject setup_bag_file() {
   // CVS_ID("Id: bag.lisp 126640 2008-12-04 13:39:36Z builder ");
   Structures.register_method(
       print_high.$print_object_method_table$.getGlobalValue(),
       $dtp_bag$.getGlobalValue(),
       Symbols.symbol_function($sym8$BAG_PRINT_FUNCTION_TRAMPOLINE));
   Structures.def_csetf(
       $sym9$BAG_STRUCT_UNIQUE_CONTENTS, $sym10$_CSETF_BAG_STRUCT_UNIQUE_CONTENTS);
   Structures.def_csetf(
       $sym11$BAG_STRUCT_REPEAT_CONTENTS, $sym12$_CSETF_BAG_STRUCT_REPEAT_CONTENTS);
   Structures.def_csetf($sym13$BAG_STRUCT_REPEAT_SIZE, $sym14$_CSETF_BAG_STRUCT_REPEAT_SIZE);
   Structures.def_csetf($sym15$BAG_STRUCT_TEST, $sym16$_CSETF_BAG_STRUCT_TEST);
   Equality.identity($sym0$BAG);
   access_macros.register_macro_helper($sym54$DO_BAG_REPEAT_INTERNAL, $sym63$DO_BAG_UNIQUE);
   access_macros.register_macro_helper($sym58$DO_BAG_UNIQUE_INTERNAL, $sym63$DO_BAG_UNIQUE);
   cfasl.register_cfasl_input_function(
       $cfasl_opcode_bag$.getGlobalValue(), $sym65$CFASL_INPUT_BAG);
   Structures.register_method(
       cfasl.$cfasl_output_object_method_table$.getGlobalValue(),
       $dtp_bag$.getGlobalValue(),
       Symbols.symbol_function($sym66$CFASL_OUTPUT_OBJECT_BAG_METHOD));
   generic_testing.define_test_case_table_int(
       $sym70$BAG_UNIT_TEST_KITCHEN_SINK,
       list(
           new SubLObject[] {
             $kw20$TEST,
             NIL,
             $kw71$OWNER,
             NIL,
             $kw72$CLASSES,
             NIL,
             $kw73$KB,
             $kw74$TINY,
             $kw75$WORKING_,
             T
           }),
       $list76);
   return NIL;
 }
 public static final SubLObject setup_simple_lru_cache_strategy_file() {
   // CVS_ID("Id: simple-lru-cache-strategy.lisp 126880 2009-01-22 21:59:16Z tbrussea ");
   Structures.register_method(
       print_high.$print_object_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function($sym7$SIMPLE_LRU_CACHE_STRATEGY_PRINT_FUNCTION_TRAMPOLINE));
   Structures.def_csetf($sym8$SLRU_CACHESTRAT_CAPACITY, $sym9$_CSETF_SLRU_CACHESTRAT_CAPACITY);
   Structures.def_csetf($sym10$SLRU_CACHESTRAT_INDEX, $sym11$_CSETF_SLRU_CACHESTRAT_INDEX);
   Structures.def_csetf($sym12$SLRU_CACHESTRAT_PAYLOAD, $sym13$_CSETF_SLRU_CACHESTRAT_PAYLOAD);
   Structures.def_csetf($sym14$SLRU_CACHESTRAT_HEAD, $sym15$_CSETF_SLRU_CACHESTRAT_HEAD);
   Structures.def_csetf($sym16$SLRU_CACHESTRAT_TAIL, $sym17$_CSETF_SLRU_CACHESTRAT_TAIL);
   Structures.def_csetf(
       $sym18$SLRU_CACHESTRAT_FREELIST_HEAD, $sym19$_CSETF_SLRU_CACHESTRAT_FREELIST_HEAD);
   Structures.def_csetf($sym20$SLRU_CACHESTRAT_METRICS, $sym21$_CSETF_SLRU_CACHESTRAT_METRICS);
   Equality.identity($sym0$SIMPLE_LRU_CACHE_STRATEGY);
   Structures.register_method(
       cache_utilities.$cache_strategy_object_p_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function($sym50$CACHE_STRATEGY_OBJECT_P_SIMPLE_LRU_CACHE_STRATEGY_METHOD));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_reset_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym51$CACHE_STRATEGY_OBJECT_RESET_SIMPLE_LRU_CACHE_STRATEGY_METHOD));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_cache_capacity_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym52$CACHE_STRATEGY_OBJECT_CACHE_CAPACITY_SIMPLE_LRU_CACHE_STRATEGY_ME));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_cache_size_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym53$CACHE_STRATEGY_OBJECT_CACHE_SIZE_SIMPLE_LRU_CACHE_STRATEGY_METHOD));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_track_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym54$CACHE_STRATEGY_OBJECT_TRACK_SIMPLE_LRU_CACHE_STRATEGY_METHOD));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_trackedP_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym55$CACHE_STRATEGY_OBJECT_TRACKED__SIMPLE_LRU_CACHE_STRATEGY_METHOD));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_untrack_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym56$CACHE_STRATEGY_OBJECT_UNTRACK_SIMPLE_LRU_CACHE_STRATEGY_METHOD));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_supports_parameter_p_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym57$CACHE_STRATEGY_OBJECT_SUPPORTS_PARAMETER_P_SIMPLE_LRU_CACHE_STRAT));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_get_parameter_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym58$CACHE_STRATEGY_OBJECT_GET_PARAMETER_SIMPLE_LRU_CACHE_STRATEGY_MET));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_set_parameter_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym59$CACHE_STRATEGY_OBJECT_SET_PARAMETER_SIMPLE_LRU_CACHE_STRATEGY_MET));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_note_reference_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym60$CACHE_STRATEGY_OBJECT_NOTE_REFERENCE_SIMPLE_LRU_CACHE_STRATEGY_ME));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_note_references_in_order_method_table$
           .getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym61$CACHE_STRATEGY_OBJECT_NOTE_REFERENCES_IN_ORDER_SIMPLE_LRU_CACHE_S));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_get_metrics_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym62$CACHE_STRATEGY_OBJECT_GET_METRICS_SIMPLE_LRU_CACHE_STRATEGY_METHO));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_reset_metrics_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym63$CACHE_STRATEGY_OBJECT_RESET_METRICS_SIMPLE_LRU_CACHE_STRATEGY_MET));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_gather_metrics_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym64$CACHE_STRATEGY_OBJECT_GATHER_METRICS_SIMPLE_LRU_CACHE_STRATEGY_ME));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_dont_gather_metrics_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym65$CACHE_STRATEGY_OBJECT_DONT_GATHER_METRICS_SIMPLE_LRU_CACHE_STRATE));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_keeps_metrics_p_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym66$CACHE_STRATEGY_OBJECT_KEEPS_METRICS_P_SIMPLE_LRU_CACHE_STRATEGY_M));
   Structures.register_method(
       cache_utilities.$new_cache_strategy_object_tracked_content_iterator_method_table$
           .getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym67$NEW_CACHE_STRATEGY_OBJECT_TRACKED_CONTENT_ITERATOR_SIMPLE_LRU_CAC));
   Structures.register_method(
       cache_utilities.$map_cache_strategy_object_tracked_content_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym68$MAP_CACHE_STRATEGY_OBJECT_TRACKED_CONTENT_SIMPLE_LRU_CACHE_STRATE));
   Structures.register_method(
       cache_utilities.$cache_strategy_object_untrack_all_method_table$.getGlobalValue(),
       $dtp_simple_lru_cache_strategy$.getGlobalValue(),
       Symbols.symbol_function(
           $sym69$CACHE_STRATEGY_OBJECT_UNTRACK_ALL_SIMPLE_LRU_CACHE_STRATEGY_METHO));
   generic_testing.define_test_case_table_int(
       $sym70$TEST_BASIC_SLRU_CACHE_STRATEGY,
       list(
           new SubLObject[] {
             $kw71$TEST,
             NIL,
             $kw72$OWNER,
             NIL,
             $kw73$CLASSES,
             NIL,
             $kw74$KB,
             $kw75$TINY,
             $kw76$WORKING_,
             T
           }),
       $list77);
   generic_testing.define_test_case_table_int(
       $sym90$COMPARE_SLRU_CACHE_STRATEGY_WITH_CACHE,
       list(
           new SubLObject[] {
             $kw71$TEST,
             NIL,
             $kw72$OWNER,
             NIL,
             $kw73$CLASSES,
             NIL,
             $kw74$KB,
             $kw75$TINY,
             $kw76$WORKING_,
             NIL
           }),
       $list91);
   generic_testing.define_test_case_table_int(
       $sym93$COMPARE_SLRU_CACHE_STRATEGY_SPEED_WITH_CACHE,
       list(
           new SubLObject[] {
             $kw71$TEST,
             NIL,
             $kw72$OWNER,
             NIL,
             $kw73$CLASSES,
             NIL,
             $kw74$KB,
             $kw75$TINY,
             $kw76$WORKING_,
             NIL
           }),
       $list94);
   return NIL;
 }