예제 #1
0
  static void printProductPartitionTree(
      AdGroupCriterion node, Map<Long, ArrayList<AdGroupCriterion>> childBranches, int treeLevel) {
    ProductPartition criterion = (ProductPartition) node.getCriterion();

    outputStatusMessage(
        String.format(
            "%" + ((treeLevel > 0) ? treeLevel * 4 : "") + "s%s\n",
            "",
            criterion.getPartitionType()));

    outputStatusMessage(
        String.format(
            "%" + ((treeLevel > 0) ? treeLevel * 4 : "") + "s%s%d\n",
            "",
            "ParentCriterionId: ",
            criterion.getParentCriterionId()));

    outputStatusMessage(
        String.format(
            "%" + ((treeLevel > 0) ? treeLevel * 4 : "") + "s%s%d\n", "", "Id: ", node.getId()));

    if (criterion.getPartitionType() == ProductPartitionType.UNIT) {
      if (node instanceof BiddableAdGroupCriterion) {
        outputStatusMessage(
            String.format(
                "%" + ((treeLevel > 0) ? treeLevel * 4 : "") + "s%s%.2f\n",
                "",
                "Bid amount: ",
                ((FixedBid) ((BiddableAdGroupCriterion) node).getCriterionBid())
                    .getBid()
                    .getAmount()));

      } else {
        if (node instanceof NegativeAdGroupCriterion) {
          outputStatusMessage(
              String.format("%" + treeLevel * 4 + "s%s\n", "", "Not bidding on this condition"));
        }
      }
    }

    String nullAttribute =
        (criterion.getParentCriterionId() != null) ? "(All Others)" : "(Tree Root)";

    outputStatusMessage(
        String.format(
            "%" + ((treeLevel > 0) ? treeLevel * 4 : "") + "s%s%s\n",
            "",
            "Attribute: ",
            (criterion.getCondition().getAttribute() == null)
                ? nullAttribute
                : criterion.getCondition().getAttribute()));

    outputStatusMessage(
        String.format(
            "%" + ((treeLevel > 0) ? treeLevel * 4 : "") + "s%s%s\n",
            "",
            "Condition: ",
            criterion.getCondition().getOperand()));

    for (AdGroupCriterion childNode : childBranches.get(node.getId())) {
      printProductPartitionTree(childNode, childBranches, treeLevel + 1);
    }
  }