cube 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -0
 - data/Gemfile.lock +2 -0
 - data/README.md +6 -4
 - data/VERSION +1 -1
 - data/cube.gemspec +7 -2
 - data/lib/cube/cube.rb +23 -27
 - data/lib/cube/xmla.rb +5 -12
 - data/spec/cassettes/.yml +40 -0
 - data/spec/cassettes/mondrian_broj_intervencija.yml +269 -0
 - data/spec/cube_spec.rb +47 -27
 - metadata +28 -15
 
    
        data/Gemfile
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -8,6 +8,7 @@ GEM 
     | 
|
| 
       8 
8 
     | 
    
         
             
                crack (0.3.1)
         
     | 
| 
       9 
9 
     | 
    
         
             
                diff-lcs (1.1.3)
         
     | 
| 
       10 
10 
     | 
    
         
             
                git (1.2.5)
         
     | 
| 
      
 11 
     | 
    
         
            +
                guerrilla_patch (2.0.0)
         
     | 
| 
       11 
12 
     | 
    
         
             
                gyoku (0.4.4)
         
     | 
| 
       12 
13 
     | 
    
         
             
                  builder (>= 2.1.2)
         
     | 
| 
       13 
14 
     | 
    
         
             
                httpi (0.9.5)
         
     | 
| 
         @@ -48,6 +49,7 @@ PLATFORMS 
     | 
|
| 
       48 
49 
     | 
    
         | 
| 
       49 
50 
     | 
    
         
             
            DEPENDENCIES
         
     | 
| 
       50 
51 
     | 
    
         
             
              bundler (~> 1.0.0)
         
     | 
| 
      
 52 
     | 
    
         
            +
              guerrilla_patch
         
     | 
| 
       51 
53 
     | 
    
         
             
              jeweler (~> 1.6.4)
         
     | 
| 
       52 
54 
     | 
    
         
             
              rspec (~> 2.3.0)
         
     | 
| 
       53 
55 
     | 
    
         
             
              savon
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Cube
         
     | 
| 
       2 
2 
     | 
    
         
             
            ================
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            Use this gem talk to the OLAP based backend via  
     | 
| 
      
 4 
     | 
    
         
            +
            Use this gem talk to the OLAP based backend via XMLA SOAP messages from Ruby.
         
     | 
| 
       5 
5 
     | 
    
         
             
            You can send (simple) MDX queries and get the result back in a human friendly from. 
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            Installation
         
     | 
| 
         @@ -17,7 +17,7 @@ Configuration 
     | 
|
| 
       17 
17 
     | 
    
         
             
            Set up your catalog and endpoint
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            ```
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 20 
     | 
    
         
            +
            XMLA.configure do |c|
         
     | 
| 
       21 
21 
     | 
    
         
             
             c.endpoint = "http://localhost:8282/icCube/xmla"
         
     | 
| 
       22 
22 
     | 
    
         
             
             c.catalog = "GOSJAR"
         
     | 
| 
       23 
23 
     | 
    
         
             
            end
         
     | 
| 
         @@ -26,14 +26,16 @@ end 
     | 
|
| 
       26 
26 
     | 
    
         
             
            Usage
         
     | 
| 
       27 
27 
     | 
    
         
             
            -------
         
     | 
| 
       28 
28 
     | 
    
         
             
            ```
         
     | 
| 
       29 
     | 
    
         
            -
            table = Cube.execute 
     | 
| 
      
 29 
     | 
    
         
            +
            table = XMLA::Cube.execute "select [Location].[City].children  on COLUMNS,
         
     | 
| 
      
 30 
     | 
    
         
            +
                                               [Measures].[Count] on ROWS
         
     | 
| 
      
 31 
     | 
    
         
            +
                                        from [GOSJAR]"
         
     | 
| 
       30 
32 
     | 
    
         
             
            ```
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
34 
     | 
    
         
             
            Limitations
         
     | 
| 
       33 
35 
     | 
    
         
             
            ------------
         
     | 
| 
       34 
36 
     | 
    
         
             
            * No drill down (fails to even parse the result)
         
     | 
| 
       35 
37 
     | 
    
         
             
            * No multi named columns
         
     | 
| 
       36 
     | 
    
         
            -
            * Tested only with icCube, in theory works with every  
     | 
| 
      
 38 
     | 
    
         
            +
            * Tested only with icCube and Mondrian XMLA, in theory works with every XMLA provider
         
     | 
| 
       37 
39 
     | 
    
         | 
| 
       38 
40 
     | 
    
         
             
            Contributing to cube
         
     | 
| 
       39 
41 
     | 
    
         
             
            -------------------------------
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            1. 
     | 
| 
      
 1 
     | 
    
         
            +
            1.1.0
         
     | 
    
        data/cube.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = "cube"
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "1. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "1.1.0"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["drKreso"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = "2012-02- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = "2012-02-12"
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = "Eases the pain I had to go through to get to the data of Xmla based OLAP provider"
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = "kresimir.bojcic@gmail.com"
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -30,8 +30,10 @@ Gem::Specification.new do |s| 
     | 
|
| 
       30 
30 
     | 
    
         
             
                "lib/cube/cube.rb",
         
     | 
| 
       31 
31 
     | 
    
         
             
                "lib/cube/xmla.rb",
         
     | 
| 
       32 
32 
     | 
    
         
             
                "lib/wsdl/xmla.xml",
         
     | 
| 
      
 33 
     | 
    
         
            +
                "spec/cassettes/.yml",
         
     | 
| 
       33 
34 
     | 
    
         
             
                "spec/cassettes/kvartovi_u_recima.yml",
         
     | 
| 
       34 
35 
     | 
    
         
             
                "spec/cassettes/kvatovi_u_koloni.yml",
         
     | 
| 
      
 36 
     | 
    
         
            +
                "spec/cassettes/mondrian_broj_intervencija.yml",
         
     | 
| 
       35 
37 
     | 
    
         
             
                "spec/cassettes/razlog_prijave_i_kvart.yml",
         
     | 
| 
       36 
38 
     | 
    
         
             
                "spec/cube_spec.rb",
         
     | 
| 
       37 
39 
     | 
    
         
             
                "spec/spec_helper.rb"
         
     | 
| 
         @@ -48,6 +50,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       48 
50 
     | 
    
         
             
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         
     | 
| 
       49 
51 
     | 
    
         
             
                  s.add_runtime_dependency(%q<savon>, [">= 0"])
         
     | 
| 
       50 
52 
     | 
    
         
             
                  s.add_runtime_dependency(%q<webmock>, [">= 0"])
         
     | 
| 
      
 53 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<guerrilla_patch>, [">= 0"])
         
     | 
| 
       51 
54 
     | 
    
         
             
                  s.add_development_dependency(%q<vcr>, [">= 0"])
         
     | 
| 
       52 
55 
     | 
    
         
             
                  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
         
     | 
| 
       53 
56 
     | 
    
         
             
                  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
         @@ -55,6 +58,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       55 
58 
     | 
    
         
             
                else
         
     | 
| 
       56 
59 
     | 
    
         
             
                  s.add_dependency(%q<savon>, [">= 0"])
         
     | 
| 
       57 
60 
     | 
    
         
             
                  s.add_dependency(%q<webmock>, [">= 0"])
         
     | 
| 
      
 61 
     | 
    
         
            +
                  s.add_dependency(%q<guerrilla_patch>, [">= 0"])
         
     | 
| 
       58 
62 
     | 
    
         
             
                  s.add_dependency(%q<vcr>, [">= 0"])
         
     | 
| 
       59 
63 
     | 
    
         
             
                  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
         
     | 
| 
       60 
64 
     | 
    
         
             
                  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
         @@ -63,6 +67,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       63 
67 
     | 
    
         
             
              else
         
     | 
| 
       64 
68 
     | 
    
         
             
                s.add_dependency(%q<savon>, [">= 0"])
         
     | 
| 
       65 
69 
     | 
    
         
             
                s.add_dependency(%q<webmock>, [">= 0"])
         
     | 
| 
      
 70 
     | 
    
         
            +
                s.add_dependency(%q<guerrilla_patch>, [">= 0"])
         
     | 
| 
       66 
71 
     | 
    
         
             
                s.add_dependency(%q<vcr>, [">= 0"])
         
     | 
| 
       67 
72 
     | 
    
         
             
                s.add_dependency(%q<rspec>, ["~> 2.3.0"])
         
     | 
| 
       68 
73 
     | 
    
         
             
                s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
    
        data/lib/cube/cube.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'savon'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'guerrilla_patch'
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            Savon.configure do |config|
         
     | 
| 
       4 
5 
     | 
    
         
             
              config.soap_version = 1
         
     | 
| 
         @@ -7,11 +8,12 @@ end 
     | 
|
| 
       7 
8 
     | 
    
         | 
| 
       8 
9 
     | 
    
         
             
            HTTPI.log = false
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            module  
     | 
| 
      
 11 
     | 
    
         
            +
            module XMLA
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
              class Cube
         
     | 
| 
      
 14 
     | 
    
         
            +
                attr_reader :query, :catalog
         
     | 
| 
       13 
15 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                def Cube.execute(query, catalog =  
     | 
| 
      
 16 
     | 
    
         
            +
                def Cube.execute(query, catalog = XMLA.catalog)
         
     | 
| 
       15 
17 
     | 
    
         
             
                  Cube.new(query, catalog).as_table
         
     | 
| 
       16 
18 
     | 
    
         
             
                end
         
     | 
| 
       17 
19 
     | 
    
         | 
| 
         @@ -19,10 +21,10 @@ module Xmla 
     | 
|
| 
       19 
21 
     | 
    
         
             
                  clean_table(table, y_size).reduce([]) { |result, row| result << row.flatten.join('|') }
         
     | 
| 
       20 
22 
     | 
    
         
             
                end
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                 
     | 
| 
       23 
     | 
    
         
            -
                 
     | 
| 
       24 
     | 
    
         
            -
                 
     | 
| 
       25 
     | 
    
         
            -
                 
     | 
| 
      
 24 
     | 
    
         
            +
                let(:x_axe)  { @x_axe ||= axes[0] }
         
     | 
| 
      
 25 
     | 
    
         
            +
                let(:y_axe)  { @y_axe ||= axes[1] }
         
     | 
| 
      
 26 
     | 
    
         
            +
                let(:y_size) { y_axe[0].size }
         
     | 
| 
      
 27 
     | 
    
         
            +
                let(:x_size) { x_axe.size }
         
     | 
| 
       26 
28 
     | 
    
         | 
| 
       27 
29 
     | 
    
         
             
                private
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
         @@ -38,24 +40,12 @@ module Xmla 
     | 
|
| 
       38 
40 
     | 
    
         
             
                def axes
         
     | 
| 
       39 
41 
     | 
    
         
             
                  axes = @response.to_hash[:execute_response][:return][:root][:axes][:axis].select { |axe| axe[:@name] != "SlicerAxis" }
         
     | 
| 
       40 
42 
     | 
    
         
             
                  @axes ||= axes.reduce([]) do |result, axe|
         
     | 
| 
       41 
     | 
    
         
            -
                     
     | 
| 
      
 43 
     | 
    
         
            +
                    result << tuple(axe).reduce([]) { |y, member|
         
     | 
| 
       42 
44 
     | 
    
         
             
                      data = (member[0] == :member) ? member[1] : member[:member]
         
     | 
| 
       43 
     | 
    
         
            -
                       
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                        y <<  data[:caption].strip
         
     | 
| 
       47 
     | 
    
         
            -
                      else
         
     | 
| 
       48 
     | 
    
         
            -
                        z = []
         
     | 
| 
       49 
     | 
    
         
            -
                        data.each do |item_data|
         
     | 
| 
       50 
     | 
    
         
            -
                          if (item_data.class == Hash)
         
     | 
| 
       51 
     | 
    
         
            -
                            caption = item_data[:caption].strip
         
     | 
| 
       52 
     | 
    
         
            -
                            z << caption
         
     | 
| 
       53 
     | 
    
         
            -
                          end
         
     | 
| 
       54 
     | 
    
         
            -
                        end
         
     | 
| 
       55 
     | 
    
         
            -
                        y << z
         
     | 
| 
       56 
     | 
    
         
            -
                      end
         
     | 
| 
      
 45 
     | 
    
         
            +
                      y << ( data.class == Hash || data.size == 1 ?
         
     | 
| 
      
 46 
     | 
    
         
            +
                                                  [data[:caption].strip].flatten :
         
     | 
| 
      
 47 
     | 
    
         
            +
                                                  data.select { |item_data| item_data.class == Hash }.reduce([]) { |z,item_data| z << item_data[:caption].strip } )
         
     | 
| 
       57 
48 
     | 
    
         
             
                    }
         
     | 
| 
       58 
     | 
    
         
            -
                    result << y
         
     | 
| 
       59 
49 
     | 
    
         
             
                  end
         
     | 
| 
       60 
50 
     | 
    
         
             
                end
         
     | 
| 
       61 
51 
     | 
    
         | 
| 
         @@ -69,13 +59,12 @@ module Xmla 
     | 
|
| 
       69 
59 
     | 
    
         
             
                def get_response
         
     | 
| 
       70 
60 
     | 
    
         
             
                  client = Savon::Client.new do
         
     | 
| 
       71 
61 
     | 
    
         
             
                    wsdl.document = File.expand_path("../../wsdl/xmla.xml", __FILE__)
         
     | 
| 
       72 
     | 
    
         
            -
                    wsdl.endpoint =  
     | 
| 
      
 62 
     | 
    
         
            +
                    wsdl.endpoint = XMLA.endpoint
         
     | 
| 
       73 
63 
     | 
    
         
             
                  end
         
     | 
| 
       74 
64 
     | 
    
         | 
| 
       75 
65 
     | 
    
         
             
                  @response = client.request :execute,  xmlns:"urn:schemas-microsoft-com:xml-analysis" do
         
     | 
| 
       76 
     | 
    
         
            -
                    soap.body =  
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                    end
         
     | 
| 
      
 66 
     | 
    
         
            +
                    soap.body = Cube.request_body(query, catalog)
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
       79 
68 
     | 
    
         
             
                end
         
     | 
| 
       80 
69 
     | 
    
         | 
| 
       81 
70 
     | 
    
         
             
                #cleanup table so items don't repeat (if they are same)
         
     | 
| 
         @@ -94,7 +83,14 @@ module Xmla 
     | 
|
| 
       94 
83 
     | 
    
         
             
                  @data ||= cell_data.reduce([]) { |data, cell| cell[1].reduce(data) { |data, value| data << value[:value] } }
         
     | 
| 
       95 
84 
     | 
    
         
             
                end
         
     | 
| 
       96 
85 
     | 
    
         | 
| 
       97 
     | 
    
         
            -
                 
     | 
| 
      
 86 
     | 
    
         
            +
                let(:tuple) { |axe| axe[:tuples][:tuple] }
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                def Cube.request_body(query, catalog)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  "<Command> <Statement> <![CDATA[ #{query} ]]> </Statement> </Command> <Properties> <PropertyList> <Catalog>#{catalog}</Catalog>
         
     | 
| 
      
 90 
     | 
    
         
            +
                  <Format>Multidimensional</Format> <AxisFormat>TupleFormat</AxisFormat> </PropertyList> </Properties>"
         
     | 
| 
      
 91 
     | 
    
         
            +
                end
         
     | 
| 
       98 
92 
     | 
    
         | 
| 
       99 
93 
     | 
    
         
             
              end
         
     | 
| 
       100 
94 
     | 
    
         
             
            end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
    
        data/lib/cube/xmla.rb
    CHANGED
    
    | 
         @@ -1,16 +1,9 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module  
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
              end
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              def self.endpoint=(value)
         
     | 
| 
       7 
     | 
    
         
            -
                @endpoint = value
         
     | 
| 
      
 1 
     | 
    
         
            +
            module XMLA 
         
     | 
| 
      
 2 
     | 
    
         
            +
              class << self
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_accessor :endpoint, :catalog
         
     | 
| 
       8 
4 
     | 
    
         
             
              end
         
     | 
| 
       9 
5 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
              def self. 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
              def self.configure
         
     | 
| 
      
 7 
     | 
    
         
            +
                yield self if block_given?
         
     | 
| 
       12 
8 
     | 
    
         
             
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              def self.endpoint() @endpoint end
         
     | 
| 
       15 
     | 
    
         
            -
              def self.catalog() @catalog end
         
     | 
| 
       16 
9 
     | 
    
         
             
            end
         
     | 
    
        data/spec/cassettes/.yml
    ADDED
    
    | 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            - !ruby/struct:VCR::HTTPInteraction
         
     | 
| 
      
 3 
     | 
    
         
            +
              request: !ruby/struct:VCR::Request
         
     | 
| 
      
 4 
     | 
    
         
            +
                method: :post
         
     | 
| 
      
 5 
     | 
    
         
            +
                uri: http://localhost:8383/mondrian/xmla
         
     | 
| 
      
 6 
     | 
    
         
            +
                body: ! "<?xml version=\"1.0\" encoding=\"UTF-8\"?><env:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
         
     | 
| 
      
 7 
     | 
    
         
            +
                  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:wsdl=\"http://tempuri.org/wsdl/\"
         
     | 
| 
      
 8 
     | 
    
         
            +
                  xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ins0=\"http://tempuri.org/type\"><env:Body><Execute
         
     | 
| 
      
 9 
     | 
    
         
            +
                  xmlns=\"urn:schemas-microsoft-com:xml-analysis\"><Command> <Statement> <![CDATA[
         
     | 
| 
      
 10 
     | 
    
         
            +
                  \ ]]> </Statement> </Command> <Properties> <PropertyList> <Catalog></Catalog>\n
         
     | 
| 
      
 11 
     | 
    
         
            +
                  \                    <Format>Multidimensional</Format> <AxisFormat>TupleFormat</AxisFormat>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  </PropertyList> </Properties></Execute></env:Body></env:Envelope>"
         
     | 
| 
      
 13 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 14 
     | 
    
         
            +
                  soapaction:
         
     | 
| 
      
 15 
     | 
    
         
            +
                  - ! '"urn:schemas-microsoft-com:xml-analysis:Execute"'
         
     | 
| 
      
 16 
     | 
    
         
            +
                  content-type:
         
     | 
| 
      
 17 
     | 
    
         
            +
                  - text/xml;charset=UTF-8
         
     | 
| 
      
 18 
     | 
    
         
            +
                  content-length:
         
     | 
| 
      
 19 
     | 
    
         
            +
                  - '612'
         
     | 
| 
      
 20 
     | 
    
         
            +
              response: !ruby/struct:VCR::Response
         
     | 
| 
      
 21 
     | 
    
         
            +
                status: !ruby/struct:VCR::ResponseStatus
         
     | 
| 
      
 22 
     | 
    
         
            +
                  code: 200
         
     | 
| 
      
 23 
     | 
    
         
            +
                  message: OK
         
     | 
| 
      
 24 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 25 
     | 
    
         
            +
                  server:
         
     | 
| 
      
 26 
     | 
    
         
            +
                  - Apache-Coyote/1.1
         
     | 
| 
      
 27 
     | 
    
         
            +
                  content-type:
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - text/xml
         
     | 
| 
      
 29 
     | 
    
         
            +
                  transfer-encoding:
         
     | 
| 
      
 30 
     | 
    
         
            +
                  - chunked
         
     | 
| 
      
 31 
     | 
    
         
            +
                  date:
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - Sat, 11 Feb 2012 23:02:52 GMT
         
     | 
| 
      
 33 
     | 
    
         
            +
                body: ! "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"
         
     | 
| 
      
 34 
     | 
    
         
            +
                  SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" >\n<SOAP-ENV:Header>\n</SOAP-ENV:Header>\n<SOAP-ENV:Body>\n<SOAP-ENV:Fault>\n
         
     | 
| 
      
 35 
     | 
    
         
            +
                  \ <faultcode>SOAP-ENV:Server.00HSBB01</faultcode>\n  <faultstring>XMLA SOAP
         
     | 
| 
      
 36 
     | 
    
         
            +
                  Body processing error</faultstring>\n  <faultactor>Mondrian</faultactor>\n  <detail>\n
         
     | 
| 
      
 37 
     | 
    
         
            +
                  \   <XA:error xmlns:XA=\"http://mondrian.sourceforge.net\">\n      <code>00HSBB01</code>\n
         
     | 
| 
      
 38 
     | 
    
         
            +
                  \     <desc>The Mondrian XML: Mondrian Error:Internal error: Unknown catalog
         
     | 
| 
      
 39 
     | 
    
         
            +
                  ''</desc>\n    </XA:error>\n  </detail>\n</SOAP-ENV:Fault>\n</SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n"
         
     | 
| 
      
 40 
     | 
    
         
            +
                http_version: '1.1'
         
     | 
| 
         @@ -0,0 +1,269 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            - !ruby/struct:VCR::HTTPInteraction
         
     | 
| 
      
 3 
     | 
    
         
            +
              request: !ruby/struct:VCR::Request
         
     | 
| 
      
 4 
     | 
    
         
            +
                method: :post
         
     | 
| 
      
 5 
     | 
    
         
            +
                uri: http://localhost:8383/mondrian/xmla
         
     | 
| 
      
 6 
     | 
    
         
            +
                body: ! "<?xml version=\"1.0\" encoding=\"UTF-8\"?><env:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
         
     | 
| 
      
 7 
     | 
    
         
            +
                  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:wsdl=\"http://tempuri.org/wsdl/\"
         
     | 
| 
      
 8 
     | 
    
         
            +
                  xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ins0=\"http://tempuri.org/type\"><env:Body><Execute
         
     | 
| 
      
 9 
     | 
    
         
            +
                  xmlns=\"urn:schemas-microsoft-com:xml-analysis\"><Command> <Statement> <![CDATA[
         
     | 
| 
      
 10 
     | 
    
         
            +
                  SELECT NON EMPTY {Hierarchize({[Measures].[Broj intervencija]})} ON COLUMNS,
         
     | 
| 
      
 11 
     | 
    
         
            +
                  NON EMPTY {Hierarchize({[Gradska cetvrt].[Gradska cetvrt].Members})} ON ROWS
         
     | 
| 
      
 12 
     | 
    
         
            +
                  FROM [Kvarovi] ]]> </Statement> </Command> <Properties> <PropertyList> <Catalog>GOSJAR</Catalog>\n
         
     | 
| 
      
 13 
     | 
    
         
            +
                  \                    <Format>Multidimensional</Format> <AxisFormat>TupleFormat</AxisFormat>
         
     | 
| 
      
 14 
     | 
    
         
            +
                  </PropertyList> </Properties></Execute></env:Body></env:Envelope>"
         
     | 
| 
      
 15 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 16 
     | 
    
         
            +
                  soapaction:
         
     | 
| 
      
 17 
     | 
    
         
            +
                  - ! '"urn:schemas-microsoft-com:xml-analysis:Execute"'
         
     | 
| 
      
 18 
     | 
    
         
            +
                  content-type:
         
     | 
| 
      
 19 
     | 
    
         
            +
                  - text/xml;charset=UTF-8
         
     | 
| 
      
 20 
     | 
    
         
            +
                  content-length:
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - '786'
         
     | 
| 
      
 22 
     | 
    
         
            +
              response: !ruby/struct:VCR::Response
         
     | 
| 
      
 23 
     | 
    
         
            +
                status: !ruby/struct:VCR::ResponseStatus
         
     | 
| 
      
 24 
     | 
    
         
            +
                  code: 200
         
     | 
| 
      
 25 
     | 
    
         
            +
                  message: OK
         
     | 
| 
      
 26 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 27 
     | 
    
         
            +
                  server:
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - Apache-Coyote/1.1
         
     | 
| 
      
 29 
     | 
    
         
            +
                  content-type:
         
     | 
| 
      
 30 
     | 
    
         
            +
                  - text/xml;charset=UTF-8
         
     | 
| 
      
 31 
     | 
    
         
            +
                  transfer-encoding:
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - chunked
         
     | 
| 
      
 33 
     | 
    
         
            +
                  date:
         
     | 
| 
      
 34 
     | 
    
         
            +
                  - Sun, 12 Feb 2012 14:58:54 GMT
         
     | 
| 
      
 35 
     | 
    
         
            +
                body: ! "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"
         
     | 
| 
      
 36 
     | 
    
         
            +
                  SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" >\n<SOAP-ENV:Header>\n</SOAP-ENV:Header>\n<SOAP-ENV:Body>\n<cxmla:ExecuteResponse
         
     | 
| 
      
 37 
     | 
    
         
            +
                  xmlns:cxmla=\"urn:schemas-microsoft-com:xml-analysis\">\n  <cxmla:return>\n
         
     | 
| 
      
 38 
     | 
    
         
            +
                  \   <root xmlns=\"urn:schemas-microsoft-com:xml-analysis:mddataset\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:EX=\"urn:schemas-microsoft-com:xml-analysis:exception\">\n
         
     | 
| 
      
 40 
     | 
    
         
            +
                  \     <xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"urn:schemas-microsoft-com:xml-analysis:mddataset\"
         
     | 
| 
      
 41 
     | 
    
         
            +
                  xmlns=\"urn:schemas-microsoft-com:xml-analysis:mddataset\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
         
     | 
| 
      
 42 
     | 
    
         
            +
                  xmlns:sql=\"urn:schemas-microsoft-com:xml-sql\" elementFormDefault=\"qualified\">\n
         
     | 
| 
      
 43 
     | 
    
         
            +
                  \       <xsd:complexType name=\"MemberType\">\n          <xsd:sequence>\n            <xsd:element
         
     | 
| 
      
 44 
     | 
    
         
            +
                  name=\"UName\" type=\"xsd:string\"/>\n            <xsd:element name=\"Caption\"
         
     | 
| 
      
 45 
     | 
    
         
            +
                  type=\"xsd:string\"/>\n            <xsd:element name=\"LName\" type=\"xsd:string\"/>\n
         
     | 
| 
      
 46 
     | 
    
         
            +
                  \           <xsd:element name=\"LNum\" type=\"xsd:unsignedInt\"/>\n            <xsd:element
         
     | 
| 
      
 47 
     | 
    
         
            +
                  name=\"DisplayInfo\" type=\"xsd:unsignedInt\"/>\n            <xsd:sequence maxOccurs=\"unbounded\"
         
     | 
| 
      
 48 
     | 
    
         
            +
                  minOccurs=\"0\">\n              <xsd:any processContents=\"lax\" maxOccurs=\"unbounded\"/>\n
         
     | 
| 
      
 49 
     | 
    
         
            +
                  \           </xsd:sequence>\n          </xsd:sequence>\n          <xsd:attribute
         
     | 
| 
      
 50 
     | 
    
         
            +
                  name=\"Hierarchy\" type=\"xsd:string\"/>\n        </xsd:complexType>\n        <xsd:complexType
         
     | 
| 
      
 51 
     | 
    
         
            +
                  name=\"PropType\">\n          <xsd:attribute name=\"name\" type=\"xsd:string\"/>\n
         
     | 
| 
      
 52 
     | 
    
         
            +
                  \       </xsd:complexType>\n        <xsd:complexType name=\"TupleType\">\n          <xsd:sequence
         
     | 
| 
      
 53 
     | 
    
         
            +
                  maxOccurs=\"unbounded\">\n            <xsd:element name=\"Member\" type=\"MemberType\"/>\n
         
     | 
| 
      
 54 
     | 
    
         
            +
                  \         </xsd:sequence>\n        </xsd:complexType>\n        <xsd:complexType
         
     | 
| 
      
 55 
     | 
    
         
            +
                  name=\"MembersType\">\n          <xsd:sequence maxOccurs=\"unbounded\">\n            <xsd:element
         
     | 
| 
      
 56 
     | 
    
         
            +
                  name=\"Member\" type=\"MemberType\"/>\n          </xsd:sequence>\n          <xsd:attribute
         
     | 
| 
      
 57 
     | 
    
         
            +
                  name=\"Hierarchy\" type=\"xsd:string\"/>\n        </xsd:complexType>\n        <xsd:complexType
         
     | 
| 
      
 58 
     | 
    
         
            +
                  name=\"TuplesType\">\n          <xsd:sequence maxOccurs=\"unbounded\">\n            <xsd:element
         
     | 
| 
      
 59 
     | 
    
         
            +
                  name=\"Tuple\" type=\"TupleType\"/>\n          </xsd:sequence>\n        </xsd:complexType>\n
         
     | 
| 
      
 60 
     | 
    
         
            +
                  \       <xsd:complexType name=\"CrossProductType\">\n          <xsd:sequence>\n
         
     | 
| 
      
 61 
     | 
    
         
            +
                  \           <xsd:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n              <xsd:element
         
     | 
| 
      
 62 
     | 
    
         
            +
                  name=\"Members\" type=\"MembersType\"/>\n              <xsd:element name=\"Tuples\"
         
     | 
| 
      
 63 
     | 
    
         
            +
                  type=\"TuplesType\"/>\n            </xsd:choice>\n          </xsd:sequence>\n
         
     | 
| 
      
 64 
     | 
    
         
            +
                  \         <xsd:attribute name=\"Size\" type=\"xsd:unsignedInt\"/>\n        </xsd:complexType>\n
         
     | 
| 
      
 65 
     | 
    
         
            +
                  \       <xsd:complexType name=\"OlapInfo\">\n          <xsd:sequence>\n            <xsd:element
         
     | 
| 
      
 66 
     | 
    
         
            +
                  name=\"CubeInfo\">\n              <xsd:complexType>\n                <xsd:sequence>\n
         
     | 
| 
      
 67 
     | 
    
         
            +
                  \                 <xsd:element name=\"Cube\" maxOccurs=\"unbounded\">\n                    <xsd:complexType>\n
         
     | 
| 
      
 68 
     | 
    
         
            +
                  \                     <xsd:sequence>\n                        <xsd:element name=\"CubeName\"
         
     | 
| 
      
 69 
     | 
    
         
            +
                  type=\"xsd:string\"/>\n                      </xsd:sequence>\n                    </xsd:complexType>\n
         
     | 
| 
      
 70 
     | 
    
         
            +
                  \                 </xsd:element>\n                </xsd:sequence>\n              </xsd:complexType>\n
         
     | 
| 
      
 71 
     | 
    
         
            +
                  \           </xsd:element>\n            <xsd:element name=\"AxesInfo\">\n              <xsd:complexType>\n
         
     | 
| 
      
 72 
     | 
    
         
            +
                  \               <xsd:sequence>\n                  <xsd:element name=\"AxisInfo\"
         
     | 
| 
      
 73 
     | 
    
         
            +
                  maxOccurs=\"unbounded\">\n                    <xsd:complexType>\n                      <xsd:sequence>\n
         
     | 
| 
      
 74 
     | 
    
         
            +
                  \                       <xsd:element name=\"HierarchyInfo\" minOccurs=\"0\"
         
     | 
| 
      
 75 
     | 
    
         
            +
                  maxOccurs=\"unbounded\">\n                          <xsd:complexType>\n                            <xsd:sequence>\n
         
     | 
| 
      
 76 
     | 
    
         
            +
                  \                             <xsd:sequence maxOccurs=\"unbounded\">\n                                <xsd:element
         
     | 
| 
      
 77 
     | 
    
         
            +
                  name=\"UName\" type=\"PropType\"/>\n                                <xsd:element
         
     | 
| 
      
 78 
     | 
    
         
            +
                  name=\"Caption\" type=\"PropType\"/>\n                                <xsd:element
         
     | 
| 
      
 79 
     | 
    
         
            +
                  name=\"LName\" type=\"PropType\"/>\n                                <xsd:element
         
     | 
| 
      
 80 
     | 
    
         
            +
                  name=\"LNum\" type=\"PropType\"/>\n                                <xsd:element
         
     | 
| 
      
 81 
     | 
    
         
            +
                  name=\"DisplayInfo\" type=\"PropType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n
         
     | 
| 
      
 82 
     | 
    
         
            +
                  \                             </xsd:sequence>\n                              <xsd:sequence>\n
         
     | 
| 
      
 83 
     | 
    
         
            +
                  \                               <xsd:any processContents=\"lax\" minOccurs=\"0\"
         
     | 
| 
      
 84 
     | 
    
         
            +
                  maxOccurs=\"unbounded\"/>\n                              </xsd:sequence>\n                            </xsd:sequence>\n
         
     | 
| 
      
 85 
     | 
    
         
            +
                  \                           <xsd:attribute name=\"name\" type=\"xsd:string\"
         
     | 
| 
      
 86 
     | 
    
         
            +
                  use=\"required\"/>\n                          </xsd:complexType>\n                        </xsd:element>\n
         
     | 
| 
      
 87 
     | 
    
         
            +
                  \                     </xsd:sequence>\n                      <xsd:attribute
         
     | 
| 
      
 88 
     | 
    
         
            +
                  name=\"name\" type=\"xsd:string\"/>\n                    </xsd:complexType>\n
         
     | 
| 
      
 89 
     | 
    
         
            +
                  \                 </xsd:element>\n                </xsd:sequence>\n              </xsd:complexType>\n
         
     | 
| 
      
 90 
     | 
    
         
            +
                  \           </xsd:element>\n            <xsd:element name=\"CellInfo\">\n              <xsd:complexType>\n
         
     | 
| 
      
 91 
     | 
    
         
            +
                  \               <xsd:sequence>\n                  <xsd:sequence minOccurs=\"0\"
         
     | 
| 
      
 92 
     | 
    
         
            +
                  maxOccurs=\"unbounded\">\n                    <xsd:choice>\n                      <xsd:element
         
     | 
| 
      
 93 
     | 
    
         
            +
                  name=\"Value\" type=\"PropType\"/>\n                      <xsd:element name=\"FmtValue\"
         
     | 
| 
      
 94 
     | 
    
         
            +
                  type=\"PropType\"/>\n                      <xsd:element name=\"BackColor\" type=\"PropType\"/>\n
         
     | 
| 
      
 95 
     | 
    
         
            +
                  \                     <xsd:element name=\"ForeColor\" type=\"PropType\"/>\n
         
     | 
| 
      
 96 
     | 
    
         
            +
                  \                     <xsd:element name=\"FontName\" type=\"PropType\"/>\n                      <xsd:element
         
     | 
| 
      
 97 
     | 
    
         
            +
                  name=\"FontSize\" type=\"PropType\"/>\n                      <xsd:element name=\"FontFlags\"
         
     | 
| 
      
 98 
     | 
    
         
            +
                  type=\"PropType\"/>\n                      <xsd:element name=\"FormatString\"
         
     | 
| 
      
 99 
     | 
    
         
            +
                  type=\"PropType\"/>\n                      <xsd:element name=\"NonEmptyBehavior\"
         
     | 
| 
      
 100 
     | 
    
         
            +
                  type=\"PropType\"/>\n                      <xsd:element name=\"SolveOrder\"
         
     | 
| 
      
 101 
     | 
    
         
            +
                  type=\"PropType\"/>\n                      <xsd:element name=\"Updateable\"
         
     | 
| 
      
 102 
     | 
    
         
            +
                  type=\"PropType\"/>\n                      <xsd:element name=\"Visible\" type=\"PropType\"/>\n
         
     | 
| 
      
 103 
     | 
    
         
            +
                  \                     <xsd:element name=\"Expression\" type=\"PropType\"/>\n
         
     | 
| 
      
 104 
     | 
    
         
            +
                  \                   </xsd:choice>\n                  </xsd:sequence>\n                  <xsd:sequence
         
     | 
| 
      
 105 
     | 
    
         
            +
                  maxOccurs=\"unbounded\" minOccurs=\"0\">\n                    <xsd:any processContents=\"lax\"
         
     | 
| 
      
 106 
     | 
    
         
            +
                  maxOccurs=\"unbounded\"/>\n                  </xsd:sequence>\n                </xsd:sequence>\n
         
     | 
| 
      
 107 
     | 
    
         
            +
                  \             </xsd:complexType>\n            </xsd:element>\n          </xsd:sequence>\n
         
     | 
| 
      
 108 
     | 
    
         
            +
                  \       </xsd:complexType>\n        <xsd:complexType name=\"Axes\">\n          <xsd:sequence
         
     | 
| 
      
 109 
     | 
    
         
            +
                  maxOccurs=\"unbounded\">\n            <xsd:element name=\"Axis\">\n              <xsd:complexType>\n
         
     | 
| 
      
 110 
     | 
    
         
            +
                  \               <xsd:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n                  <xsd:element
         
     | 
| 
      
 111 
     | 
    
         
            +
                  name=\"CrossProduct\" type=\"CrossProductType\"/>\n                  <xsd:element
         
     | 
| 
      
 112 
     | 
    
         
            +
                  name=\"Tuples\" type=\"TuplesType\"/>\n                  <xsd:element name=\"Members\"
         
     | 
| 
      
 113 
     | 
    
         
            +
                  type=\"MembersType\"/>\n                </xsd:choice>\n                <xsd:attribute
         
     | 
| 
      
 114 
     | 
    
         
            +
                  name=\"name\" type=\"xsd:string\"/>\n              </xsd:complexType>\n            </xsd:element>\n
         
     | 
| 
      
 115 
     | 
    
         
            +
                  \         </xsd:sequence>\n        </xsd:complexType>\n        <xsd:complexType
         
     | 
| 
      
 116 
     | 
    
         
            +
                  name=\"CellData\">\n          <xsd:sequence>\n            <xsd:element name=\"Cell\"
         
     | 
| 
      
 117 
     | 
    
         
            +
                  minOccurs=\"0\" maxOccurs=\"unbounded\">\n              <xsd:complexType>\n
         
     | 
| 
      
 118 
     | 
    
         
            +
                  \               <xsd:sequence maxOccurs=\"unbounded\">\n                  <xsd:choice>\n
         
     | 
| 
      
 119 
     | 
    
         
            +
                  \                   <xsd:element name=\"Value\"/>\n                    <xsd:element
         
     | 
| 
      
 120 
     | 
    
         
            +
                  name=\"FmtValue\" type=\"xsd:string\"/>\n                    <xsd:element name=\"BackColor\"
         
     | 
| 
      
 121 
     | 
    
         
            +
                  type=\"xsd:unsignedInt\"/>\n                    <xsd:element name=\"ForeColor\"
         
     | 
| 
      
 122 
     | 
    
         
            +
                  type=\"xsd:unsignedInt\"/>\n                    <xsd:element name=\"FontName\"
         
     | 
| 
      
 123 
     | 
    
         
            +
                  type=\"xsd:string\"/>\n                    <xsd:element name=\"FontSize\" type=\"xsd:unsignedShort\"/>\n
         
     | 
| 
      
 124 
     | 
    
         
            +
                  \                   <xsd:element name=\"FontFlags\" type=\"xsd:unsignedInt\"/>\n
         
     | 
| 
      
 125 
     | 
    
         
            +
                  \                   <xsd:element name=\"FormatString\" type=\"xsd:string\"/>\n
         
     | 
| 
      
 126 
     | 
    
         
            +
                  \                   <xsd:element name=\"NonEmptyBehavior\" type=\"xsd:unsignedShort\"/>\n
         
     | 
| 
      
 127 
     | 
    
         
            +
                  \                   <xsd:element name=\"SolveOrder\" type=\"xsd:unsignedInt\"/>\n
         
     | 
| 
      
 128 
     | 
    
         
            +
                  \                   <xsd:element name=\"Updateable\" type=\"xsd:unsignedInt\"/>\n
         
     | 
| 
      
 129 
     | 
    
         
            +
                  \                   <xsd:element name=\"Visible\" type=\"xsd:unsignedInt\"/>\n
         
     | 
| 
      
 130 
     | 
    
         
            +
                  \                   <xsd:element name=\"Expression\" type=\"xsd:string\"/>\n
         
     | 
| 
      
 131 
     | 
    
         
            +
                  \                 </xsd:choice>\n                </xsd:sequence>\n                <xsd:attribute
         
     | 
| 
      
 132 
     | 
    
         
            +
                  name=\"CellOrdinal\" type=\"xsd:unsignedInt\" use=\"required\"/>\n              </xsd:complexType>\n
         
     | 
| 
      
 133 
     | 
    
         
            +
                  \           </xsd:element>\n          </xsd:sequence>\n        </xsd:complexType>\n
         
     | 
| 
      
 134 
     | 
    
         
            +
                  \       <xsd:element name=\"root\">\n          <xsd:complexType>\n            <xsd:sequence
         
     | 
| 
      
 135 
     | 
    
         
            +
                  maxOccurs=\"unbounded\">\n              <xsd:element name=\"OlapInfo\" type=\"OlapInfo\"/>\n
         
     | 
| 
      
 136 
     | 
    
         
            +
                  \             <xsd:element name=\"Axes\" type=\"Axes\"/>\n              <xsd:element
         
     | 
| 
      
 137 
     | 
    
         
            +
                  name=\"CellData\" type=\"CellData\"/>\n            </xsd:sequence>\n          </xsd:complexType>\n
         
     | 
| 
      
 138 
     | 
    
         
            +
                  \       </xsd:element>\n      </xsd:schema>\n      <OlapInfo>\n        <CubeInfo>\n
         
     | 
| 
      
 139 
     | 
    
         
            +
                  \         <Cube>\n            <CubeName>Kvarovi</CubeName>\n          </Cube>\n
         
     | 
| 
      
 140 
     | 
    
         
            +
                  \       </CubeInfo>\n        <AxesInfo>\n          <AxisInfo name=\"Axis0\">\n
         
     | 
| 
      
 141 
     | 
    
         
            +
                  \           <HierarchyInfo name=\"Measures\">\n              <UName name=\"[Measures].[MEMBER_UNIQUE_NAME]\"/>\n
         
     | 
| 
      
 142 
     | 
    
         
            +
                  \             <Caption name=\"[Measures].[MEMBER_CAPTION]\"/>\n              <LName
         
     | 
| 
      
 143 
     | 
    
         
            +
                  name=\"[Measures].[LEVEL_UNIQUE_NAME]\"/>\n              <LNum name=\"[Measures].[LEVEL_NUMBER]\"/>\n
         
     | 
| 
      
 144 
     | 
    
         
            +
                  \             <DisplayInfo name=\"[Measures].[DISPLAY_INFO]\"/>\n            </HierarchyInfo>\n
         
     | 
| 
      
 145 
     | 
    
         
            +
                  \         </AxisInfo>\n          <AxisInfo name=\"Axis1\">\n            <HierarchyInfo
         
     | 
| 
      
 146 
     | 
    
         
            +
                  name=\"Gradska cetvrt.Gradska cetvrt\">\n              <UName name=\"[Gradska
         
     | 
| 
      
 147 
     | 
    
         
            +
                  cetvrt].[MEMBER_UNIQUE_NAME]\"/>\n              <Caption name=\"[Gradska cetvrt].[MEMBER_CAPTION]\"/>\n
         
     | 
| 
      
 148 
     | 
    
         
            +
                  \             <LName name=\"[Gradska cetvrt].[LEVEL_UNIQUE_NAME]\"/>\n              <LNum
         
     | 
| 
      
 149 
     | 
    
         
            +
                  name=\"[Gradska cetvrt].[LEVEL_NUMBER]\"/>\n              <DisplayInfo name=\"[Gradska
         
     | 
| 
      
 150 
     | 
    
         
            +
                  cetvrt].[DISPLAY_INFO]\"/>\n            </HierarchyInfo>\n          </AxisInfo>\n
         
     | 
| 
      
 151 
     | 
    
         
            +
                  \         <AxisInfo name=\"SlicerAxis\"/>\n        </AxesInfo>\n        <CellInfo>\n
         
     | 
| 
      
 152 
     | 
    
         
            +
                  \         <Value name=\"VALUE\"/>\n          <FmtValue name=\"FORMATTED_VALUE\"/>\n
         
     | 
| 
      
 153 
     | 
    
         
            +
                  \         <FormatString name=\"FORMAT_STRING\"/>\n        </CellInfo>\n      </OlapInfo>\n
         
     | 
| 
      
 154 
     | 
    
         
            +
                  \     <Axes>\n        <Axis name=\"Axis0\">\n          <Tuples>\n            <Tuple>\n
         
     | 
| 
      
 155 
     | 
    
         
            +
                  \             <Member Hierarchy=\"Measures\">\n                <UName>[Measures].[Broj
         
     | 
| 
      
 156 
     | 
    
         
            +
                  intervencija]</UName>\n                <Caption>Broj intervencija</Caption>\n
         
     | 
| 
      
 157 
     | 
    
         
            +
                  \               <LName>[Measures].[MeasuresLevel]</LName>\n                <LNum>0</LNum>\n
         
     | 
| 
      
 158 
     | 
    
         
            +
                  \               <DisplayInfo>0</DisplayInfo>\n              </Member>\n            </Tuple>\n
         
     | 
| 
      
 159 
     | 
    
         
            +
                  \         </Tuples>\n        </Axis>\n        <Axis name=\"Axis1\">\n          <Tuples>\n
         
     | 
| 
      
 160 
     | 
    
         
            +
                  \           <Tuple>\n              <Member Hierarchy=\"Gradska cetvrt.Gradska
         
     | 
| 
      
 161 
     | 
    
         
            +
                  cetvrt\">\n                <UName>[Gradska cetvrt].[DONJI GRAD]</UName>\n                <Caption>DONJI
         
     | 
| 
      
 162 
     | 
    
         
            +
                  GRAD</Caption>\n                <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n
         
     | 
| 
      
 163 
     | 
    
         
            +
                  \               <LNum>1</LNum>\n                <DisplayInfo>0</DisplayInfo>\n
         
     | 
| 
      
 164 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 165 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 166 
     | 
    
         
            +
                  cetvrt].[GORNJI GRAD – MEDVEŠČAK]</UName>\n                <Caption>GORNJI GRAD
         
     | 
| 
      
 167 
     | 
    
         
            +
                  – MEDVEŠČAK</Caption>\n                <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n
         
     | 
| 
      
 168 
     | 
    
         
            +
                  \               <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 169 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 170 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 171 
     | 
    
         
            +
                  cetvrt].[TRNJE]</UName>\n                <Caption>TRNJE</Caption>\n                <LName>[Gradska
         
     | 
| 
      
 172 
     | 
    
         
            +
                  cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 173 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 174 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 175 
     | 
    
         
            +
                  cetvrt].[MAKSIMIR]</UName>\n                <Caption>MAKSIMIR</Caption>\n                <LName>[Gradska
         
     | 
| 
      
 176 
     | 
    
         
            +
                  cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 177 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 178 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 179 
     | 
    
         
            +
                  cetvrt].[PEŠČENICA - ŽITNJAK]</UName>\n                <Caption>PEŠČENICA -
         
     | 
| 
      
 180 
     | 
    
         
            +
                  ŽITNJAK</Caption>\n                <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n
         
     | 
| 
      
 181 
     | 
    
         
            +
                  \               <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 182 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 183 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 184 
     | 
    
         
            +
                  cetvrt].[NOVI ZAGREB – ISTOK]</UName>\n                <Caption>NOVI ZAGREB
         
     | 
| 
      
 185 
     | 
    
         
            +
                  – ISTOK</Caption>\n                <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n
         
     | 
| 
      
 186 
     | 
    
         
            +
                  \               <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 187 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 188 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 189 
     | 
    
         
            +
                  cetvrt].[NOVI ZAGREB – ZAPAD]</UName>\n                <Caption>NOVI ZAGREB
         
     | 
| 
      
 190 
     | 
    
         
            +
                  – ZAPAD</Caption>\n                <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n
         
     | 
| 
      
 191 
     | 
    
         
            +
                  \               <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 192 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 193 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 194 
     | 
    
         
            +
                  cetvrt].[TREŠNJEVKA – SJEVER]</UName>\n                <Caption>TREŠNJEVKA –
         
     | 
| 
      
 195 
     | 
    
         
            +
                  SJEVER</Caption>\n                <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n
         
     | 
| 
      
 196 
     | 
    
         
            +
                  \               <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 197 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 198 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 199 
     | 
    
         
            +
                  cetvrt].[TREŠNJEVKA – JUG]</UName>\n                <Caption>TREŠNJEVKA – JUG</Caption>\n
         
     | 
| 
      
 200 
     | 
    
         
            +
                  \               <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n
         
     | 
| 
      
 201 
     | 
    
         
            +
                  \               <DisplayInfo>131072</DisplayInfo>\n              </Member>\n
         
     | 
| 
      
 202 
     | 
    
         
            +
                  \           </Tuple>\n            <Tuple>\n              <Member Hierarchy=\"Gradska
         
     | 
| 
      
 203 
     | 
    
         
            +
                  cetvrt.Gradska cetvrt\">\n                <UName>[Gradska cetvrt].[ČRNOMEREC]</UName>\n
         
     | 
| 
      
 204 
     | 
    
         
            +
                  \               <Caption>ČRNOMEREC</Caption>\n                <LName>[Gradska
         
     | 
| 
      
 205 
     | 
    
         
            +
                  cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 206 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 207 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 208 
     | 
    
         
            +
                  cetvrt].[GORNJA DUBRAVA]</UName>\n                <Caption>GORNJA DUBRAVA</Caption>\n
         
     | 
| 
      
 209 
     | 
    
         
            +
                  \               <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n
         
     | 
| 
      
 210 
     | 
    
         
            +
                  \               <DisplayInfo>131072</DisplayInfo>\n              </Member>\n
         
     | 
| 
      
 211 
     | 
    
         
            +
                  \           </Tuple>\n            <Tuple>\n              <Member Hierarchy=\"Gradska
         
     | 
| 
      
 212 
     | 
    
         
            +
                  cetvrt.Gradska cetvrt\">\n                <UName>[Gradska cetvrt].[DONJA DUBRAVA]</UName>\n
         
     | 
| 
      
 213 
     | 
    
         
            +
                  \               <Caption>DONJA DUBRAVA</Caption>\n                <LName>[Gradska
         
     | 
| 
      
 214 
     | 
    
         
            +
                  cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 215 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 216 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 217 
     | 
    
         
            +
                  cetvrt].[STENJEVEC]</UName>\n                <Caption>STENJEVEC</Caption>\n
         
     | 
| 
      
 218 
     | 
    
         
            +
                  \               <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n
         
     | 
| 
      
 219 
     | 
    
         
            +
                  \               <DisplayInfo>131072</DisplayInfo>\n              </Member>\n
         
     | 
| 
      
 220 
     | 
    
         
            +
                  \           </Tuple>\n            <Tuple>\n              <Member Hierarchy=\"Gradska
         
     | 
| 
      
 221 
     | 
    
         
            +
                  cetvrt.Gradska cetvrt\">\n                <UName>[Gradska cetvrt].[PODSUSED
         
     | 
| 
      
 222 
     | 
    
         
            +
                  – VRAPČE]</UName>\n                <Caption>PODSUSED – VRAPČE</Caption>\n                <LName>[Gradska
         
     | 
| 
      
 223 
     | 
    
         
            +
                  cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 224 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n            <Tuple>\n              <Member
         
     | 
| 
      
 225 
     | 
    
         
            +
                  Hierarchy=\"Gradska cetvrt.Gradska cetvrt\">\n                <UName>[Gradska
         
     | 
| 
      
 226 
     | 
    
         
            +
                  cetvrt].[PODSLJEME ]</UName>\n                <Caption>PODSLJEME </Caption>\n
         
     | 
| 
      
 227 
     | 
    
         
            +
                  \               <LName>[Gradska cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n
         
     | 
| 
      
 228 
     | 
    
         
            +
                  \               <DisplayInfo>131072</DisplayInfo>\n              </Member>\n
         
     | 
| 
      
 229 
     | 
    
         
            +
                  \           </Tuple>\n            <Tuple>\n              <Member Hierarchy=\"Gradska
         
     | 
| 
      
 230 
     | 
    
         
            +
                  cetvrt.Gradska cetvrt\">\n                <UName>[Gradska cetvrt].[SESVETE]</UName>\n
         
     | 
| 
      
 231 
     | 
    
         
            +
                  \               <Caption>SESVETE</Caption>\n                <LName>[Gradska
         
     | 
| 
      
 232 
     | 
    
         
            +
                  cetvrt].[Gradska cetvrt]</LName>\n                <LNum>1</LNum>\n                <DisplayInfo>131072</DisplayInfo>\n
         
     | 
| 
      
 233 
     | 
    
         
            +
                  \             </Member>\n            </Tuple>\n          </Tuples>\n        </Axis>\n
         
     | 
| 
      
 234 
     | 
    
         
            +
                  \       <Axis name=\"SlicerAxis\">\n          <Tuples>\n            <Tuple/>\n
         
     | 
| 
      
 235 
     | 
    
         
            +
                  \         </Tuples>\n        </Axis>\n      </Axes>\n      <CellData>\n        <Cell
         
     | 
| 
      
 236 
     | 
    
         
            +
                  CellOrdinal=\"0\">\n          <Value xsi:type=\"xsd:int\">1422</Value>\n          <FmtValue>1,422</FmtValue>\n
         
     | 
| 
      
 237 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"1\">\n
         
     | 
| 
      
 238 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2259</Value>\n          <FmtValue>2,259</FmtValue>\n
         
     | 
| 
      
 239 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"2\">\n
         
     | 
| 
      
 240 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2148</Value>\n          <FmtValue>2,148</FmtValue>\n
         
     | 
| 
      
 241 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"3\">\n
         
     | 
| 
      
 242 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2733</Value>\n          <FmtValue>2,733</FmtValue>\n
         
     | 
| 
      
 243 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"4\">\n
         
     | 
| 
      
 244 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2004</Value>\n          <FmtValue>2,004</FmtValue>\n
         
     | 
| 
      
 245 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"5\">\n
         
     | 
| 
      
 246 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2607</Value>\n          <FmtValue>2,607</FmtValue>\n
         
     | 
| 
      
 247 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"6\">\n
         
     | 
| 
      
 248 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2829</Value>\n          <FmtValue>2,829</FmtValue>\n
         
     | 
| 
      
 249 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"7\">\n
         
     | 
| 
      
 250 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">1611</Value>\n          <FmtValue>1,611</FmtValue>\n
         
     | 
| 
      
 251 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"8\">\n
         
     | 
| 
      
 252 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2581</Value>\n          <FmtValue>2,581</FmtValue>\n
         
     | 
| 
      
 253 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"9\">\n
         
     | 
| 
      
 254 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">1945</Value>\n          <FmtValue>1,945</FmtValue>\n
         
     | 
| 
      
 255 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"10\">\n
         
     | 
| 
      
 256 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">3602</Value>\n          <FmtValue>3,602</FmtValue>\n
         
     | 
| 
      
 257 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"11\">\n
         
     | 
| 
      
 258 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">1356</Value>\n          <FmtValue>1,356</FmtValue>\n
         
     | 
| 
      
 259 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"12\">\n
         
     | 
| 
      
 260 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">1696</Value>\n          <FmtValue>1,696</FmtValue>\n
         
     | 
| 
      
 261 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"13\">\n
         
     | 
| 
      
 262 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">2327</Value>\n          <FmtValue>2,327</FmtValue>\n
         
     | 
| 
      
 263 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"14\">\n
         
     | 
| 
      
 264 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">1228</Value>\n          <FmtValue>1,228</FmtValue>\n
         
     | 
| 
      
 265 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n        <Cell CellOrdinal=\"15\">\n
         
     | 
| 
      
 266 
     | 
    
         
            +
                  \         <Value xsi:type=\"xsd:int\">3186</Value>\n          <FmtValue>3,186</FmtValue>\n
         
     | 
| 
      
 267 
     | 
    
         
            +
                  \         <FormatString/>\n        </Cell>\n      </CellData>\n    </root>\n
         
     | 
| 
      
 268 
     | 
    
         
            +
                  \ </cxmla:return>\n</cxmla:ExecuteResponse>\n</SOAP-ENV:Body>\n</SOAP-ENV:Envelope>\n"
         
     | 
| 
      
 269 
     | 
    
         
            +
                http_version: '1.1'
         
     | 
    
        data/spec/cube_spec.rb
    CHANGED
    
    | 
         @@ -1,48 +1,68 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #encoding: utf-8
         
     | 
| 
       1 
2 
     | 
    
         
             
            require 'cube'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'webmock'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'vcr'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'guerrilla_patch'
         
     | 
| 
       4 
6 
     | 
    
         | 
| 
       5 
7 
     | 
    
         
             
            VCR.config do |c|
         
     | 
| 
       6 
8 
     | 
    
         
             
              c.cassette_library_dir = 'spec/cassettes'
         
     | 
| 
       7 
9 
     | 
    
         
             
              c.stub_with :webmock
         
     | 
| 
       8 
10 
     | 
    
         
             
            end
         
     | 
| 
       9 
11 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
            XMLA.configure do |c|
         
     | 
| 
       11 
13 
     | 
    
         
             
             c.endpoint = "http://localhost:8282/icCube/xmla"
         
     | 
| 
       12 
14 
     | 
    
         
             
             c.catalog = "GOSJAR"
         
     | 
| 
       13 
15 
     | 
    
         
             
            end
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            module Xmla
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
            describe XMLA::Cube do
         
     | 
| 
      
 19 
     | 
    
         
            +
              it 'supports multiple items on x axis' do
         
     | 
| 
      
 20 
     | 
    
         
            +
               VCR.use_cassette('kvatovi_u_koloni') do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  result = XMLA::Cube.execute("select [Lokacija].[Kvart].children  on COLUMNS, [Measures].[Broj] on ROWS from [GOSJAR]") 
         
     | 
| 
      
 22 
     | 
    
         
            +
                  result.size.should == 2
         
     | 
| 
      
 23 
     | 
    
         
            +
                  result[0].split('|').size.should == 18
         
     | 
| 
      
 24 
     | 
    
         
            +
                  result[1].should == "Broj|1422|2259|2148|2733|2004|2607|2829|1611|2581|1945|3602|1356|1696|2327|1228|3186|"
         
     | 
| 
      
 25 
     | 
    
         
            +
               end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
       26 
27 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
              it 'supports multiple items on y axis' do
         
     | 
| 
      
 29 
     | 
    
         
            +
               VCR.use_cassette('kvartovi_u_recima') do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  result =  XMLA::Cube.execute("select [Measures].[Broj]  on COLUMNS, non empty topcount( [Lokacija].[Kvart].children, 100,  [Measures].[Broj]) on ROWS from [GOSJAR]")
         
     | 
| 
      
 31 
     | 
    
         
            +
                  result.size.should == 17
         
     | 
| 
      
 32 
     | 
    
         
            +
                  result[0].should == '|Broj'
         
     | 
| 
      
 33 
     | 
    
         
            +
                  result[6].should == 'TRESNJEVKA - JUG|2607'
         
     | 
| 
      
 34 
     | 
    
         
            +
                  result[16].should == 'PODSLJEME|1228'
         
     | 
| 
       35 
35 
     | 
    
         
             
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
       36 
37 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
              it 'support multiple items on y axis and multiple items on x axis' do
         
     | 
| 
      
 39 
     | 
    
         
            +
               VCR.use_cassette('razlog_prijave_i_kvart') do
         
     | 
| 
      
 40 
     | 
    
         
            +
                 result = XMLA::Cube.execute("select [Measures].[Broj]  on COLUMNS, non empty topcount ( [Razlog prijave].[Razlog].children * [Lokacija].[Kvart].children , 20,  [Measures].[Broj] ) on ROWS from [GOSJAR]")
         
     | 
| 
      
 41 
     | 
    
         
            +
                  result.size.should == 21
         
     | 
| 
      
 42 
     | 
    
         
            +
                  result[0].should == "||Broj"
         
     | 
| 
      
 43 
     | 
    
         
            +
                  result[2].should == "|GORNJA DUBRAVA|1383"
         
     | 
| 
      
 44 
     | 
    
         
            +
                  result[20].should == "Redovna izmjena|GORNJA DUBRAVA|575"
         
     | 
| 
       45 
45 
     | 
    
         
             
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
       46 
47 
     | 
    
         | 
| 
      
 48 
     | 
    
         
            +
              it 'check if request is correct - to fix that bug with class varables not beign visible inside the block' do
         
     | 
| 
      
 49 
     | 
    
         
            +
                XMLA::Cube.send(:request_body, "SELECT", "GOSJAR").should == 
         
     | 
| 
      
 50 
     | 
    
         
            +
                  "<Command> <Statement> <![CDATA[ SELECT ]]> </Statement> </Command> <Properties> <PropertyList> <Catalog>GOSJAR</Catalog>
         
     | 
| 
      
 51 
     | 
    
         
            +
                  <Format>Multidimensional</Format> <AxisFormat>TupleFormat</AxisFormat> </PropertyList> </Properties>"
         
     | 
| 
       47 
52 
     | 
    
         
             
              end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              it 'should connect to mondrian' do
         
     | 
| 
      
 55 
     | 
    
         
            +
               XMLA.configure do |c|
         
     | 
| 
      
 56 
     | 
    
         
            +
                 c.endpoint = "http://localhost:8383/mondrian/xmla"
         
     | 
| 
      
 57 
     | 
    
         
            +
                 c.catalog = "GOSJAR"
         
     | 
| 
      
 58 
     | 
    
         
            +
               end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
               VCR.use_cassette('mondrian_broj_intervencija') do
         
     | 
| 
      
 61 
     | 
    
         
            +
                result = XMLA::Cube.execute("SELECT NON EMPTY {Hierarchize({[Measures].[Broj intervencija]})} ON COLUMNS, NON EMPTY {Hierarchize({[Gradska cetvrt].[Gradska cetvrt].Members})} ON ROWS FROM [Kvarovi]")
         
     | 
| 
      
 62 
     | 
    
         
            +
                result.size.should == 17
         
     | 
| 
      
 63 
     | 
    
         
            +
                result[0].should == "|Broj intervencija"
         
     | 
| 
      
 64 
     | 
    
         
            +
                result[2].should == "GORNJI GRAD – MEDVEŠČAK|2259"
         
     | 
| 
      
 65 
     | 
    
         
            +
               end
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
       48 
68 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cube
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-02- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-02-12 00:00:00.000000000Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: savon
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &70118415011960 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -21,10 +21,10 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *70118415011960
         
     | 
| 
       25 
25 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
26 
     | 
    
         
             
              name: webmock
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &70118415011460 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
28 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
29 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
30 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,10 +32,21 @@ dependencies: 
     | 
|
| 
       32 
32 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       33 
33 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
34 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *70118415011460
         
     | 
| 
      
 36 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 37 
     | 
    
         
            +
              name: guerrilla_patch
         
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &70118415010940 !ruby/object:Gem::Requirement
         
     | 
| 
      
 39 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 40 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 41 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 42 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 43 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 44 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 45 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *70118415010940
         
     | 
| 
       36 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
48 
     | 
    
         
             
              name: vcr
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &70118415010460 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
52 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -43,10 +54,10 @@ dependencies: 
     | 
|
| 
       43 
54 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       44 
55 
     | 
    
         
             
              type: :development
         
     | 
| 
       45 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *70118415010460
         
     | 
| 
       47 
58 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
59 
     | 
    
         
             
              name: rspec
         
     | 
| 
       49 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &70118415009940 !ruby/object:Gem::Requirement
         
     | 
| 
       50 
61 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
62 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
63 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -54,10 +65,10 @@ dependencies: 
     | 
|
| 
       54 
65 
     | 
    
         
             
                    version: 2.3.0
         
     | 
| 
       55 
66 
     | 
    
         
             
              type: :development
         
     | 
| 
       56 
67 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *70118415009940
         
     | 
| 
       58 
69 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
70 
     | 
    
         
             
              name: bundler
         
     | 
| 
       60 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: &70118415009440 !ruby/object:Gem::Requirement
         
     | 
| 
       61 
72 
     | 
    
         
             
                none: false
         
     | 
| 
       62 
73 
     | 
    
         
             
                requirements:
         
     | 
| 
       63 
74 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -65,10 +76,10 @@ dependencies: 
     | 
|
| 
       65 
76 
     | 
    
         
             
                    version: 1.0.0
         
     | 
| 
       66 
77 
     | 
    
         
             
              type: :development
         
     | 
| 
       67 
78 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 79 
     | 
    
         
            +
              version_requirements: *70118415009440
         
     | 
| 
       69 
80 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
81 
     | 
    
         
             
              name: jeweler
         
     | 
| 
       71 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 82 
     | 
    
         
            +
              requirement: &70118415008940 !ruby/object:Gem::Requirement
         
     | 
| 
       72 
83 
     | 
    
         
             
                none: false
         
     | 
| 
       73 
84 
     | 
    
         
             
                requirements:
         
     | 
| 
       74 
85 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -76,7 +87,7 @@ dependencies: 
     | 
|
| 
       76 
87 
     | 
    
         
             
                    version: 1.6.4
         
     | 
| 
       77 
88 
     | 
    
         
             
              type: :development
         
     | 
| 
       78 
89 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       79 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 90 
     | 
    
         
            +
              version_requirements: *70118415008940
         
     | 
| 
       80 
91 
     | 
    
         
             
            description: Eases the pain I had to go through to get to the data of Xmla based OLAP
         
     | 
| 
       81 
92 
     | 
    
         
             
              provider
         
     | 
| 
       82 
93 
     | 
    
         
             
            email: kresimir.bojcic@gmail.com
         
     | 
| 
         @@ -99,8 +110,10 @@ files: 
     | 
|
| 
       99 
110 
     | 
    
         
             
            - lib/cube/cube.rb
         
     | 
| 
       100 
111 
     | 
    
         
             
            - lib/cube/xmla.rb
         
     | 
| 
       101 
112 
     | 
    
         
             
            - lib/wsdl/xmla.xml
         
     | 
| 
      
 113 
     | 
    
         
            +
            - spec/cassettes/.yml
         
     | 
| 
       102 
114 
     | 
    
         
             
            - spec/cassettes/kvartovi_u_recima.yml
         
     | 
| 
       103 
115 
     | 
    
         
             
            - spec/cassettes/kvatovi_u_koloni.yml
         
     | 
| 
      
 116 
     | 
    
         
            +
            - spec/cassettes/mondrian_broj_intervencija.yml
         
     | 
| 
       104 
117 
     | 
    
         
             
            - spec/cassettes/razlog_prijave_i_kvart.yml
         
     | 
| 
       105 
118 
     | 
    
         
             
            - spec/cube_spec.rb
         
     | 
| 
       106 
119 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
         @@ -119,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       119 
132 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       120 
133 
     | 
    
         
             
                  segments:
         
     | 
| 
       121 
134 
     | 
    
         
             
                  - 0
         
     | 
| 
       122 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 135 
     | 
    
         
            +
                  hash: -309596402643366136
         
     | 
| 
       123 
136 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       124 
137 
     | 
    
         
             
              none: false
         
     | 
| 
       125 
138 
     | 
    
         
             
              requirements:
         
     |