001package gudusoft.gsqlparser.ir.common;
002
003/**
004 * Confidence level for an analysis result, ranging from 0.0 to 1.0.
005 */
006public final class Confidence {
007
008    /** Confidence value between 0.0 and 1.0. */
009    public final double value;
010
011    /** High confidence constant (1.0). */
012    public static final Confidence HIGH = new Confidence(1.0);
013
014    /** Medium confidence constant (0.7). */
015    public static final Confidence MEDIUM = new Confidence(0.7);
016
017    /** Low confidence constant (0.3). */
018    public static final Confidence LOW = new Confidence(0.3);
019
020    /** Unknown confidence constant (0.0). */
021    public static final Confidence UNKNOWN = new Confidence(0.0);
022
023    public Confidence(double value) {
024        if (value < 0.0) value = 0.0;
025        if (value > 1.0) value = 1.0;
026        this.value = value;
027    }
028
029    /**
030     * Returns the confidence level bucket.
031     */
032    public EConfidenceLevel getLevel() {
033        if (value >= 0.9) return EConfidenceLevel.HIGH;
034        if (value >= 0.5) return EConfidenceLevel.MEDIUM;
035        return EConfidenceLevel.LOW;
036    }
037
038    @Override
039    public String toString() {
040        return String.format("Confidence(%.2f, %s)", value, getLevel());
041    }
042}