Class: Mondrian::OLAP::Member

Inherits:
Object
  • Object
show all
Includes:
Annotated
Defined in:
lib/mondrian/olap/cube.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_member) ⇒ Member

Returns a new instance of Member.



332
333
334
# File 'lib/mondrian/olap/cube.rb', line 332

def initialize(raw_member)
  @raw_member = raw_member
end

Instance Attribute Details

#raw_memberObject (readonly)

Returns the value of attribute raw_member.



336
337
338
# File 'lib/mondrian/olap/cube.rb', line 336

def raw_member
  @raw_member
end

Instance Method Details

#all_member?Boolean

Returns:

  • (Boolean)


362
363
364
# File 'lib/mondrian/olap/cube.rb', line 362

def all_member?
  @raw_member.isAll
end

#annotationsObject



432
433
434
# File 'lib/mondrian/olap/cube.rb', line 432

def annotations
  annotations_for(@raw_member)
end

#calculated?Boolean

Returns:

  • (Boolean)


350
351
352
# File 'lib/mondrian/olap/cube.rb', line 350

def calculated?
  @raw_member.isCalculated
end

#calculated_in_query?Boolean

Returns:

  • (Boolean)


354
355
356
# File 'lib/mondrian/olap/cube.rb', line 354

def calculated_in_query?
  @raw_member.isCalculatedInQuery
end

#captionObject



346
347
348
# File 'lib/mondrian/olap/cube.rb', line 346

def caption
  @caption ||= @raw_member.getCaption
end

#cell_formatterObject



452
453
454
455
456
457
458
459
460
461
# 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_nameObject



446
447
448
449
450
# 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

#childrenObject



390
391
392
393
394
# 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

#depthObject



375
376
377
# File 'lib/mondrian/olap/cube.rb', line 375

def depth
  @raw_member.getDepth
end

#descendants_at_level(level) ⇒ Object



396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
# 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_typeObject



379
380
381
382
383
384
385
386
387
388
# 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?Boolean

Returns:

  • (Boolean)


366
367
368
369
370
371
372
373
# 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_stringObject



436
437
438
439
440
441
442
443
444
# 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_nameObject



342
343
344
# File 'lib/mondrian/olap/cube.rb', line 342

def full_name
  @full_name ||= @raw_member.getUniqueName
end

#mondrian_memberObject



427
428
429
# File 'lib/mondrian/olap/cube.rb', line 427

def mondrian_member
  @raw_member.unwrap(Java::MondrianOlap::Member.java_class)
end

#nameObject



338
339
340
# File 'lib/mondrian/olap/cube.rb', line 338

def name
  @name ||= @raw_member.getName
end

#property_formatted_value(name) ⇒ Object



421
422
423
424
425
# 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) ⇒ Object



415
416
417
418
419
# 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?Boolean

Returns:

  • (Boolean)


358
359
360
# File 'lib/mondrian/olap/cube.rb', line 358

def visible?
  @raw_member.isVisible
end