class Mondrian::OLAP::Member

Attributes

raw_member[R]

Public Class Methods

new(raw_member) click to toggle source
# File lib/mondrian/olap/cube.rb, line 332
def initialize(raw_member)
  @raw_member = raw_member
end

Public Instance Methods

all_member?() click to toggle source
# File lib/mondrian/olap/cube.rb, line 362
def all_member?
  @raw_member.isAll
end
annotations() click to toggle source
# File lib/mondrian/olap/cube.rb, line 432
def annotations
  annotations_for(@raw_member)
end
calculated?() click to toggle source
# File lib/mondrian/olap/cube.rb, line 350
def calculated?
  @raw_member.isCalculated
end
calculated_in_query?() click to toggle source
# File lib/mondrian/olap/cube.rb, line 354
def calculated_in_query?
  @raw_member.isCalculatedInQuery
end
caption() click to toggle source
# File lib/mondrian/olap/cube.rb, line 346
def caption
  @caption ||= @raw_member.getCaption
end
cell_formatter() click to toggle source
# File lib/mondrian/olap/cube.rb, line 452
def cell_formatter
  if dimension_type == :measures
    cube_measure = raw_member.unwrap(Java::MondrianOlap::Member.java_class)
    if value_formatter = cube_measure.getFormatter
      f = value_formatter.java_class.declared_field('cf')
      f.accessible = true
      f.value(value_formatter)
    end
  end
end
cell_formatter_name() click to toggle source
# File lib/mondrian/olap/cube.rb, line 446
def cell_formatter_name
  if cf = cell_formatter
    cf.class.name.split('::').last.gsub(/Udf\z/, '')
  end
end
children() click to toggle source
# File lib/mondrian/olap/cube.rb, line 390
def children
  Error.wrap_native_exception do
    @raw_member.getChildMembers.map{|m| Member.new(m)}
  end
end
depth() click to toggle source
# File lib/mondrian/olap/cube.rb, line 375
def depth
  @raw_member.getDepth
end
descendants_at_level(level) click to toggle source
# File lib/mondrian/olap/cube.rb, line 396
def descendants_at_level(level)
  Error.wrap_native_exception do
    raw_level = @raw_member.getLevel
    raw_levels = raw_level.getHierarchy.getLevels
    current_level_index = raw_levels.indexOf(raw_level)
    descendants_level_index = raw_levels.indexOfName(level)

    return nil unless descendants_level_index > current_level_index

    members = [self]
    (descendants_level_index - current_level_index).times do
      members = members.map do |member|
        member.children
      end.flatten
    end
    members
  end
end
dimension_type() click to toggle source
# File lib/mondrian/olap/cube.rb, line 379
def dimension_type
  case @raw_member.getDimension.getDimensionType
  when Java::OrgOlap4jMetadata::Dimension::Type::TIME
    :time
  when Java::OrgOlap4jMetadata::Dimension::Type::MEASURE
    :measures
  else
    :standard
  end
end
drillable?() click to toggle source
# File lib/mondrian/olap/cube.rb, line 366
def drillable?
  return false if calculated?
  # @raw_member.getChildMemberCount > 0
  # This hopefully is faster than counting actual child members
  raw_level = @raw_member.getLevel
  raw_levels = raw_level.getHierarchy.getLevels
  raw_levels.indexOf(raw_level) < raw_levels.size - 1
end
format_string() click to toggle source
# File lib/mondrian/olap/cube.rb, line 436
def format_string
  format_exp = property_value('FORMAT_EXP')
  if format_exp && format_exp =~ /\A"(.*)"\z/
    format_exp = $1
  end
  if format_exp && !format_exp.empty?
    format_exp
  end
end
full_name() click to toggle source
# File lib/mondrian/olap/cube.rb, line 342
def full_name
  @full_name ||= @raw_member.getUniqueName
end
mondrian_member() click to toggle source
# File lib/mondrian/olap/cube.rb, line 427
def mondrian_member
  @raw_member.unwrap(Java::MondrianOlap::Member.java_class)
end
name() click to toggle source
# File lib/mondrian/olap/cube.rb, line 338
def name
  @name ||= @raw_member.getName
end
property_formatted_value(name) click to toggle source
# File lib/mondrian/olap/cube.rb, line 421
def property_formatted_value(name)
  if property = @raw_member.getProperties.get(name)
    @raw_member.getPropertyFormattedValue(property)
  end
end
property_value(name) click to toggle source
# File lib/mondrian/olap/cube.rb, line 415
def property_value(name)
  if property = @raw_member.getProperties.get(name)
    @raw_member.getPropertyValue(property)
  end
end
visible?() click to toggle source
# File lib/mondrian/olap/cube.rb, line 358
def visible?
  @raw_member.isVisible
end