// Path: Java/ShoprAlgorithm/src/com/uwetrottmann/shopr/algorithm/model/Attributes.java
// public interface AttributeValue {
// 
//     /**
//      * Returns the index of this value in the weights vector of the
//      * attribute.
//      */
//     public int index();
// 
//     /**
//      * Returns a {@link String} representation suitable for end-user
//      * representation.
//      */
//     public String descriptor();
// }


import com.uwetrottmann.shopr.algorithm.model.Attributes.AttributeValue;
import org.jgrapht.Graphs;
import org.jgrapht.UndirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

package com.uwetrottmann.shopr.algorithm.model;




public class Price extends GenericAttribute {

    private static UndirectedGraph<Price.Value, DefaultEdge> sSimilarValues;

    static {
        sSimilarValues = new SimpleGraph<Price.Value, DefaultEdge>(DefaultEdge.class);

        Value[] values = Value.values();
        for (Value value : values) {
            sSimilarValues.addVertex(value);
        }

        /**
         * Stores similar price values in an undirected graph. Price regions
         * right above or below are similar.
         */
        sSimilarValues.addEdge(Value.SUB_25, Value.BETWEEN_25_50);
        sSimilarValues.addEdge(Value.BETWEEN_25_50, Value.BETWEEN_50_75);
        sSimilarValues.addEdge(Value.BETWEEN_50_75, Value.BETWEEN_75_100);
        sSimilarValues.addEdge(Value.BETWEEN_75_100, Value.BETWEEN_100_150);
        sSimilarValues.addEdge(Value.BETWEEN_100_150, Value.BETWEEN_150_200);
        sSimilarValues.addEdge(Value.BETWEEN_150_200, Value.ABOVE_200);
    }

    public static final String ID = "price";

// Path: Java/ShoprAlgorithm/src/com/uwetrottmann/shopr/algorithm/model/Attributes.java
// public interface AttributeValue {
// 
//     /**
//      * Returns the index of this value in the weights vector of the
//      * attribute.
//      */
//     public int index();
// 
//     /**
//      * Returns a {@link String} representation suitable for end-user
//      * representation.
//      */
//     public String descriptor();
// }


// Path: Java/ShoprAlgorithm/src/com/uwetrottmann/shopr/algorithm/model/Price.java
import com.uwetrottmann.shopr.algorithm.model.Attributes.AttributeValue;
import org.jgrapht.Graphs;
import org.jgrapht.UndirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;


package com.uwetrottmann.shopr.algorithm.model;




public class Price extends GenericAttribute {

    private static UndirectedGraph<Price.Value, DefaultEdge> sSimilarValues;

    static {
        sSimilarValues = new SimpleGraph<Price.Value, DefaultEdge>(DefaultEdge.class);

        Value[] values = Value.values();
        for (Value value : values) {
            sSimilarValues.addVertex(value);
        }

        /**
         * Stores similar price values in an undirected graph. Price regions
         * right above or below are similar.
         */
        sSimilarValues.addEdge(Value.SUB_25, Value.BETWEEN_25_50);
        sSimilarValues.addEdge(Value.BETWEEN_25_50, Value.BETWEEN_50_75);
        sSimilarValues.addEdge(Value.BETWEEN_50_75, Value.BETWEEN_75_100);
        sSimilarValues.addEdge(Value.BETWEEN_75_100, Value.BETWEEN_100_150);
        sSimilarValues.addEdge(Value.BETWEEN_100_150, Value.BETWEEN_150_200);
        sSimilarValues.addEdge(Value.BETWEEN_150_200, Value.ABOVE_200);
    }

    public static final String ID = "price";

    public enum Value implements AttributeValue {