コード例 #1
0
  public Boolean handle(
      GuidelineAgent guidelineAgent, Guideline_Step guidelineStep, Criterion eligibilityCriteria) {
    MonitoringMessageEntity messageEntity;
    logger.info("ELIGIBILTY HANDLE START");
    Logger.getLogger(this.getClass())
        .log(Level.DEBUG, ("Eligibility Criteria:" + eligibilityCriteria.getName2()));

    // TODO: Message to Monitoring in the beginning
    messageEntity = new MonitoringMessageEntity();

    if (guidelineStep != null) {
      messageEntity.setStepName(guidelineStep.getName2());
    } else {
      messageEntity.setStepName(eligibilityCriteria.getName2());
    }

    messageEntity.setType("Eligibility Criteria");
    messageEntity.setMonitoringInfo("Starting eligibility check.");

    // First get the needed getDataAction array from the Criterion.
    Collection getDataActions = eligibilityCriteria.getGet_Data_Items();

    // Create an instance of the GetDataActionHandler.
    GetDataActionHandler getDataActionHandler = new GetDataActionHandler();

    // For each getDataAction, call the handler.
    for (Iterator i = getDataActions.iterator(); i.hasNext(); ) {
      getDataActionHandler.handle(guidelineAgent, guidelineStep, (Get_Data_Action) i.next());
    }

    // Get let expressions and execute them.
    Collection letExpressions = eligibilityCriteria.getLet_expressions();

    // For each letExpression, call the letExpressionHandler.
    LetExpressionHandler letExpressionHandler = new LetExpressionHandler();

    for (Iterator i = letExpressions.iterator(); i.hasNext(); ) {
      letExpressionHandler.handle(guidelineAgent, guidelineStep, (Let_Expression) i.next());
    }

    ExpressionHandler expressionHandler = new ExpressionHandler();
    Boolean result =
        (Boolean)
            expressionHandler.handle(
                guidelineAgent,
                guidelineStep,
                eligibilityCriteria.getSpecification(),
                guidelineAgent.getGuidelineURI());

    Logger.getLogger(this.getClass())
        .log(Level.DEBUG, ("The result of the eligibility criteria is: " + result));

    // TODO:
    // A monitoring message has to be sent now.
    messageEntity.setMonitoringInfo("Finishing eligibility check. The result is: " + result);

    // TODO:
    // Result needs to returned. But, which result? ExpressionHandler's???
    // How is Eligibility Criteria going to return its outcome? Either it will get it from
    // expression handler and pass it on to GuidelineHandler or a better to store it in the
    // global variable pool of the GuidelineAgent and check it after calling
    // EligibilityCriteriaHandler.
    logger.info("ELIGIBILTY HANDLE END");
    return result;
  }