Example #1
0
 private String printCharacteristics() {
   String s = "| ";
   for (Characteristic c : this.characteristics) {
     s += c.getName() + " (" + c.getValue() + ") | ";
   }
   return s;
 }
Example #2
0
  protected void populateRHS(
      Rule rule,
      PMML pmmlDocument,
      Scorecard scorecard,
      Characteristic c,
      Attribute scoreAttribute,
      int position) {
    Consequence consequence = new Consequence();
    StringBuilder stringBuilder = new StringBuilder();
    String objectClass = scorecard.getModelName().replaceAll(" ", "");

    String setter = "insertLogical(new PartialScore(\"";
    String field = ScorecardPMMLUtils.extractFieldNameFromCharacteristic(c);

    stringBuilder
        .append(setter)
        .append(objectClass)
        .append("\",\"")
        .append(field)
        .append("\",")
        .append(scoreAttribute.getPartialScore());
    if (scorecard.isUseReasonCodes()) {
      String reasonCode = scoreAttribute.getReasonCode();
      if (reasonCode == null || StringUtils.isEmpty(reasonCode)) {
        reasonCode = c.getReasonCode();
      }
      stringBuilder.append(",\"").append(reasonCode).append("\", ").append(position);
    }
    stringBuilder.append("));");
    consequence.setSnippet(stringBuilder.toString());
    rule.addConsequence(consequence);
  }
Example #3
0
  // Function to alter a characteristics passed in parameter and test if value is not overrided
  public void upCharacteristic(
      Characteristic characteristicToAlter, int upValue, int maxValueCharacteristic) {
    int characteristicValue = characs.get(characteristicToAlter);

    characteristicValue = characteristicValue + upValue;
    if (characteristicValue < maxValueCharacteristic) {
      // characs.replace(characteristicToAlter, characteristicValue);
      characs.remove(characteristicToAlter);
      characs.put(characteristicToAlter, characteristicValue);
      displayBlue(
          this.name + " augmente sa " + characteristicToAlter.name() + " de " + upValue + "!");
    } else {
      characteristicValue = maxValueCharacteristic;
      characs.remove(characteristicToAlter);
      characs.put(characteristicToAlter, characteristicValue);
      displayBlue(
          this.name + " a atteind le palier maximum pour sa " + characteristicToAlter.name() + "!");
    }
  }
Example #4
0
 protected String formRuleName(
     PMML pmmlDocument, String modelName, Characteristic c, Attribute scoreAttribute) {
   StringBuilder sb = new StringBuilder();
   sb.append(modelName).append("_").append(c.getName()).append("_");
   String dataType =
       ScorecardPMMLUtils.getDataType(
           pmmlDocument, ScorecardPMMLUtils.extractFieldNameFromCharacteristic(c));
   if (XLSKeywords.DATATYPE_NUMBER.equalsIgnoreCase(dataType)) {
     if (scoreAttribute.getSimplePredicate() != null) {
       sb.append(scoreAttribute.getSimplePredicate().getOperator())
           .append("_")
           .append(scoreAttribute.getSimplePredicate().getValue());
     } else if (scoreAttribute.getCompoundPredicate() != null) {
       sb.append("between");
       for (Object obj :
           scoreAttribute
               .getCompoundPredicate()
               .getSimplePredicatesAndCompoundPredicatesAndSimpleSetPredicates()) {
         if (obj instanceof SimplePredicate) {
           sb.append("_").append(((SimplePredicate) obj).getValue());
         }
       }
     }
   } else if (XLSKeywords.DATATYPE_TEXT.equalsIgnoreCase(dataType)
       || XLSKeywords.DATATYPE_BOOLEAN.equalsIgnoreCase(dataType)) {
     if (scoreAttribute.getSimplePredicate() != null) {
       sb.append(scoreAttribute.getSimplePredicate().getOperator())
           .append("_")
           .append(scoreAttribute.getSimplePredicate().getValue());
     } else if (scoreAttribute.getSimpleSetPredicate() != null) {
       SimpleSetPredicate predicate = scoreAttribute.getSimpleSetPredicate();
       Array array = predicate.getArray();
       String text = array.getContent().replace(" ", "_");
       sb.append(predicate.getBooleanOperator()).append("_").append(text);
     }
   }
   return sb.toString();
 }
Example #5
0
  protected void createInitialRule(List<Rule> ruleList, Scorecard scorecard) {
    if (scorecard.getInitialScore() > 0 || scorecard.isUseReasonCodes()) {
      String objectClass = scorecard.getModelName().replaceAll(" ", "");
      String ruleName = objectClass + "_init";
      Rule rule = new Rule(ruleName, 999, 1);
      rule.setDescription("set the initial score");

      Condition condition = createInitialRuleCondition(scorecard, objectClass);
      rule.addCondition(condition);
      if (scorecard.getInitialScore() > 0) {
        Consequence consequence = new Consequence();
        // consequence.setSnippet("$sc.setInitialScore(" + scorecard.getInitialScore() + ");");
        consequence.setSnippet(
            "insertLogical(new InitialScore(\""
                + objectClass
                + "\","
                + scorecard.getInitialScore()
                + "));");
        rule.addConsequence(consequence);
      }
      if (scorecard.isUseReasonCodes()) {
        for (Object obj : scorecard.getExtensionsAndCharacteristicsAndMiningSchemas()) {
          if (obj instanceof Characteristics) {
            Characteristics characteristics = (Characteristics) obj;
            for (Characteristic characteristic : characteristics.getCharacteristics()) {
              String field = ScorecardPMMLUtils.extractFieldNameFromCharacteristic(characteristic);
              Consequence consequence = new Consequence();
              if (characteristic.getBaselineScore() == null
                  || characteristic.getBaselineScore() == 0) {
                consequence.setSnippet(
                    "insertLogical(new BaselineScore(\""
                        + objectClass
                        + "\",\""
                        + field
                        + "\","
                        + scorecard.getBaselineScore()
                        + "));");
                // consequence.setSnippet("$sc.setBaselineScore(\"" + field +
                // "\","+scorecard.getBaselineScore()+");");
              } else {
                consequence.setSnippet(
                    "insertLogical(new BaselineScore(\""
                        + objectClass
                        + "\",\""
                        + field
                        + "\","
                        + characteristic.getBaselineScore()
                        + "));");
                // consequence.setSnippet("$sc.setBaselineScore(\"" + field +
                // "\","+characteristic.getBaselineScore()+");");
              }
              rule.addConsequence(consequence);
            }
          }
        }
        if (scorecard.getReasonCodeAlgorithm() != null) {
          Consequence consequence = new Consequence();
          if ("pointsAbove".equalsIgnoreCase(scorecard.getReasonCodeAlgorithm())) {
            // TODO: ReasonCode Algorithm
            consequence.setSnippet(
                "//$sc.setReasonCodeAlgorithm(DroolsScorecard.REASON_CODE_ALGORITHM_POINTSABOVE);");
          } else if ("pointsBelow".equalsIgnoreCase(scorecard.getReasonCodeAlgorithm())) {
            consequence.setSnippet(
                "//$sc.setReasonCodeAlgorithm(DroolsScorecard.REASON_CODE_ALGORITHM_POINTSBELOW);");
          }
          rule.addConsequence(consequence);
        }
      }
      ruleList.add(rule);
    }
  }