001 /* 002 // $Id: Measure.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 */ 020 package org.olap4j.metadata; 021 022 /** 023 * Data value of primary interest to the user browsing the cube. 024 * 025 * <p>A <code>Measure</code> provides the value of each cell, and is usually 026 * numeric. Every measure is a member of a special dimension called "Measures". 027 * 028 * @author jhyde 029 * @version $Id: Measure.java 482 2012-01-05 23:27:27Z jhyde $ 030 * @since Oct 13, 2006 031 */ 032 public interface Measure extends Member { 033 /** 034 * Returns the Aggregator of this Measure. 035 * 036 * @return Aggregator 037 */ 038 Aggregator getAggregator(); 039 040 /** 041 * Returns the data type of this Measure. 042 * 043 * @return data type 044 */ 045 Datatype getDatatype(); 046 047 /** 048 * Returns whether this Measure is visible. 049 * 050 * @return whether this Measure is visible 051 */ 052 boolean isVisible(); 053 054 /** 055 * Enumeration of the aggregate functions which can be used to derive a 056 * <code>Measure</code>. 057 * 058 * <p>The values are as specified by XMLA. 059 * For example, XMLA specifies MDMEASURE_AGGR_SUM with ordinal 1, 060 * which corresponds to the value {@link #SUM}, 061 * whose {@link #xmlaOrdinal} is 1. 062 */ 063 enum Aggregator implements XmlaConstant { 064 /** 065 * Identifies that the measure was derived using the 066 * SUM aggregation function. 067 */ 068 SUM(1), 069 /** 070 * Identifies that the measure was derived using the 071 * COUNT aggregation function. 072 */ 073 COUNT(2), 074 /** 075 * Identifies that the measure was derived using the 076 * MIN aggregation function. 077 */ 078 MIN(3), 079 /** 080 * Identifies that the measure was derived using the 081 * MAX aggregation function. 082 */ 083 MAX(4), 084 /** 085 * Identifies that the measure was derived using the 086 * AVG aggregation function. 087 */ 088 AVG(5), 089 /** 090 * Identifies that the measure was derived using the 091 * VAR aggregation function. 092 */ 093 VAR(6), 094 /** 095 * Identifies that the measure was derived using the 096 * STDEV aggregation function. 097 */ 098 STD(7), 099 /** 100 * Identifies that the measure was derived from a formula that was not 101 * any single function above. 102 */ 103 CALCULATED(127), 104 105 /** 106 * Identifies that the measure was derived from an unknown aggregation 107 * function or formula. 108 */ 109 UNKNOWN(0); 110 111 private final int xmlaOrdinal; 112 private static final DictionaryImpl<Aggregator> DICTIONARY = 113 DictionaryImpl.forClass(Aggregator.class); 114 115 /** 116 * Creates an Aggregator. 117 * 118 * @param xmlaOrdinal Ordinal of the aggregator in the XMLA 119 * specification 120 */ 121 private Aggregator(int xmlaOrdinal) { 122 this.xmlaOrdinal = xmlaOrdinal; 123 } 124 125 public String xmlaName() { 126 return "MDMEASURE_AGGR_" + name(); 127 } 128 129 public String getDescription() { 130 return ""; 131 } 132 133 public int xmlaOrdinal() { 134 return xmlaOrdinal; 135 } 136 137 /** 138 * Per {@link org.olap4j.metadata.XmlaConstant}, returns a dictionary 139 * of all values of this enumeration. 140 * 141 * @return Dictionary of all values 142 */ 143 public static Dictionary<Aggregator> getDictionary() { 144 return DICTIONARY; 145 } 146 } 147 } 148 149 // End Measure.java