/* *************************************************************************************** * Copyright (C) 2006 EsperTech, Inc. All rights reserved. * * http://www.espertech.com/esper * * http://www.espertech.com * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the GPL license * * a copy of which has been included with this distribution in the license.txt file. * *************************************************************************************** */ package com.espertech.esper.epl.join.plan; import com.espertech.esper.collection.MultiKeyUntyped; import java.util.HashMap; import java.util.Map; /** * Property lists stored as a value for each stream-to-stream relationship, for use by {@link com.espertech.esper.epl.join.plan.QueryGraph}. */ public class QueryGraphRangeUtil { private static final Map<MultiKeyUntyped, QueryGraphRangeConsolidateDesc> OPS_TABLE = new HashMap<MultiKeyUntyped, QueryGraphRangeConsolidateDesc>(); static { add(QueryGraphRangeEnum.LESS_OR_EQUAL, QueryGraphRangeEnum.GREATER_OR_EQUAL, QueryGraphRangeEnum.RANGE_CLOSED); add(QueryGraphRangeEnum.LESS, QueryGraphRangeEnum.GREATER, QueryGraphRangeEnum.RANGE_OPEN); add(QueryGraphRangeEnum.LESS_OR_EQUAL, QueryGraphRangeEnum.GREATER, QueryGraphRangeEnum.RANGE_HALF_CLOSED); add(QueryGraphRangeEnum.LESS, QueryGraphRangeEnum.GREATER_OR_EQUAL, QueryGraphRangeEnum.RANGE_HALF_OPEN); } private static void add(QueryGraphRangeEnum opOne, QueryGraphRangeEnum opTwo, QueryGraphRangeEnum range) { MultiKeyUntyped keyOne = getKey(opOne, opTwo); OPS_TABLE.put(keyOne, new QueryGraphRangeConsolidateDesc(range, false)); MultiKeyUntyped keyRev = getKey(opTwo, opOne); OPS_TABLE.put(keyRev, new QueryGraphRangeConsolidateDesc(range, true)); } private static MultiKeyUntyped getKey(QueryGraphRangeEnum op1, QueryGraphRangeEnum op2) { return new MultiKeyUntyped(new Object[]{op1, op2}); } public static QueryGraphRangeConsolidateDesc getCanConsolidate(QueryGraphRangeEnum op1, QueryGraphRangeEnum op2) { return OPS_TABLE.get(getKey(op1, op2)); } }