class Olap::CellSet

Public Instance Methods

axes() click to toggle source

Returns list of axes

# File lib/olap4r/cellset.rb, line 9
def axes
  @axes ||= @cellset.get_axes.map do |axis|
    {
      :axis => axis.get_axis_ordinal.to_s.downcase.to_sym,
      :values => axis.get_positions.map do |position|
        position.get_members.inject [] do |members, member|
          members << {
            :name => member.get_caption,
            :unique_name => member.get_unique_name,
            :drillable => member.get_child_members.size > 0
          }
        end
      end
    }
  end
end
values(value_type = :formatted_value) click to toggle source

Returns query values

Attributes

  • value_type - Returned value type (:value or :formatted_value)

# File lib/olap4r/cellset.rb, line 32
def values(value_type = :formatted_value)
  return @values unless @values.nil?

  @values = []

  raise "olap4r doesn't support queries with more than 2 dimensions" if @cellset.get_axes.size > 2

  columns = @cellset.get_axes[0].get_positions.size - 1
  rows    = @cellset.get_axes[1].get_positions.size - 1

  cells = []

  (0..columns).each do |i|
    (0..rows).each do |j|
      cells << [i, j]
    end
  end

  cells.each do |cell|
    @values[cell[1]] = [] if @values[cell[1]].nil?
    @values[cell[1]][cell[0]] = @cellset.get_cell(cell.map { |coord| coord.to_java(:int) }).send :"get_#{value_type}"
    @values[cell[1]][cell[0]] = "0" if @values[cell[1]][cell[0]].respond_to?(:empty?) && @values[cell[1]][cell[0]].empty?
  end

  @values
end