001/*
002// $Id: AllocationPolicy.java 482 2012-01-05 23:27:27Z jhyde $
003//
004// Licensed to Julian Hyde under one or more contributor license
005// agreements. See the NOTICE file distributed with this work for
006// additional information regarding copyright ownership.
007//
008// Julian Hyde licenses this file to you under the Apache License,
009// Version 2.0 (the "License"); you may not use this file except in
010// compliance with the License. You may obtain a copy of the License at:
011//
012// http://www.apache.org/licenses/LICENSE-2.0
013//
014// Unless required by applicable law or agreed to in writing, software
015// distributed under the License is distributed on an "AS IS" BASIS,
016// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017// See the License for the specific language governing permissions and
018// limitations under the License.
019*/
020package org.olap4j;
021
022/**
023 * Enumeration of the policies that can be used to modify the values of
024 * child cells when their parent cell is modified in a writeback operation.
025 *
026 * @see Cell#setValue
027 *
028 * @author jhyde
029 * @version $Id: AllocationPolicy.java 482 2012-01-05 23:27:27Z jhyde $
030 * @since Aug 22, 2006
031 */
032public enum AllocationPolicy {
033    /**
034     * Every atomic cell that contributes to the updated cell will be
035     * assigned an equal value that is:
036     *
037     * <blockquote>
038     * &lt;atomic cell value&gt; =
039     * &lt;value&gt; / Count(atomic cells contained in &lt;tuple&gt;)
040     * </blockquote>
041     */
042    EQUAL_ALLOCATION,
043
044    /**
045     * Every atomic cell that contributes to the updated cell will be
046     * changed according to:
047     *
048     * <blockquote>
049     * &lt;atomic cell value&gt; = &lt;atomic cell value&gt; +
050     * (&lt;value&gt; - &lt;existing value&gt;)  /
051     * Count(atomic cells contained in &lt;tuple&gt;)
052     * </blockquote>
053     */
054    EQUAL_INCREMENT,
055
056    /**
057     * Every atomic cell that contributes to the updated cell will be
058     * assigned an equal value that is:
059     *
060     * <blockquote>
061     * &lt;atomic cell value&gt; =
062     * &lt;value&gt; * &lt;weight value expression&gt;
063     * </blockquote>
064     *
065     * <p>Takes an optional argument, {@code weight_value_expression}.
066     * If {@code weight_value_expression} is not provided, the following
067     * expression is assigned to it by default:
068     *
069     * <blockquote>
070     * &lt;weight value expression&gt; =
071     * &lt;atomic cell value&gt; / &lt;existing value&gt;
072     * <blockquote>
073     *
074     * <p>The value of {@code weight value expression} should be expressed
075     * as a value between 0 and 1. This value specifies the ratio of the
076     * allocated value you want to assign to the atomic cells that are
077     * affected by the allocation. It is the client application programmer's
078     * responsibilffity to create expressions whose rollup aggregate values
079     * will equal the allocated value of the expression.
080     */
081    WEIGHTED_ALLOCATION,
082
083    /**
084     * Every atomic cell that contributes to the updated cell will be
085     * changed according to:
086     *
087     * <blockquote>
088     * &lt;atomic cell value&gt; = &lt;atomic cell value&gt; +
089     * (&lt;value&gt; - &lt;existing value&gt;)  *
090     * &lt;weight value expression&gt;
091     * </blockquote>
092     *
093     * <p>Takes an optional argument, {@code weight_value_expression}.
094     * If {@code weight_value_expression} is not provided, the following
095     * expression is assigned to it by default:
096     *
097     * <blockquote>
098     * &lt;weight value expression&gt; =
099     * &lt;atomic cell value&gt; / &lt;existing value&gt;
100     * <blockquote>
101     *
102     * <p>The value of {@code weight value expression} should be expressed
103     * as a value between 0 and 1. This value specifies the ratio of the
104     * allocated value you want to assign to the atomic cells that are
105     * affected by the allocation. It is the client application programmer's
106     * responsibility to create expressions whose rollup aggregate values
107     * will equal the allocated value of the expression.
108     */
109    WEIGHTED_INCREMENT,
110}
111
112// End AllocationPolicy.java