/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.optaplanner.benchmark.config.statistic; import org.apache.commons.lang3.StringUtils; import org.optaplanner.benchmark.impl.report.ReportHelper; import org.optaplanner.benchmark.impl.result.SubSingleBenchmarkResult; import org.optaplanner.benchmark.impl.statistic.PureSubSingleStatistic; import org.optaplanner.benchmark.impl.statistic.StatisticType; import org.optaplanner.benchmark.impl.statistic.subsingle.constraintmatchtotalbestscore.ConstraintMatchTotalBestScoreSubSingleStatistic; import org.optaplanner.benchmark.impl.statistic.subsingle.constraintmatchtotalstepscore.ConstraintMatchTotalStepScoreSubSingleStatistic; import org.optaplanner.benchmark.impl.statistic.subsingle.pickedmovetypebestscore.PickedMoveTypeBestScoreDiffSubSingleStatistic; import org.optaplanner.benchmark.impl.statistic.subsingle.pickedmovetypestepscore.PickedMoveTypeStepScoreDiffSubSingleStatistic; public enum SingleStatisticType implements StatisticType { CONSTRAINT_MATCH_TOTAL_BEST_SCORE, CONSTRAINT_MATCH_TOTAL_STEP_SCORE, PICKED_MOVE_TYPE_BEST_SCORE_DIFF, PICKED_MOVE_TYPE_STEP_SCORE_DIFF; @Override public String getLabel() { return StringUtils.capitalize(name().replace('_', ' ').toLowerCase()); } public PureSubSingleStatistic buildPureSubSingleStatistic(SubSingleBenchmarkResult subSingleBenchmarkResult) { // Keep in sync with ProblemStatistic XStreamInclude list switch (this) { case CONSTRAINT_MATCH_TOTAL_BEST_SCORE: return new ConstraintMatchTotalBestScoreSubSingleStatistic(subSingleBenchmarkResult); case CONSTRAINT_MATCH_TOTAL_STEP_SCORE: return new ConstraintMatchTotalStepScoreSubSingleStatistic(subSingleBenchmarkResult); case PICKED_MOVE_TYPE_BEST_SCORE_DIFF: return new PickedMoveTypeBestScoreDiffSubSingleStatistic(subSingleBenchmarkResult); case PICKED_MOVE_TYPE_STEP_SCORE_DIFF: return new PickedMoveTypeStepScoreDiffSubSingleStatistic(subSingleBenchmarkResult); default: throw new IllegalStateException("The singleStatisticType (" + this + ") is not implemented."); } } public String getAnchorId() { return ReportHelper.escapeHtmlId(name()); } public boolean hasScoreLevels() { return this == CONSTRAINT_MATCH_TOTAL_BEST_SCORE || this == CONSTRAINT_MATCH_TOTAL_STEP_SCORE || this == PICKED_MOVE_TYPE_BEST_SCORE_DIFF || this == PICKED_MOVE_TYPE_STEP_SCORE_DIFF; } }