Exception: Mondrian::OLAP::Error

Inherits:
StandardError
  • Object
show all
Defined in:
lib/mondrian/olap/error.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(native_error, options = {}) ⇒ Error

Returns a new instance of Error.



11
12
13
14
15
16
17
# File 'lib/mondrian/olap/error.rb', line 11

def initialize(native_error, options = {})
  @native_error = native_error
  get_root_cause
  super(native_error.toString)
  add_root_cause_to_backtrace
  get_profiling(options)
end

Instance Attribute Details

#native_errorObject (readonly)

root_cause will be nil if there is no cause for wrapped native error root_cause_message will have either root_cause message or wrapped native error message



9
10
11
# File 'lib/mondrian/olap/error.rb', line 9

def native_error
  @native_error
end

#profiling_handlerObject (readonly)

root_cause will be nil if there is no cause for wrapped native error root_cause_message will have either root_cause message or wrapped native error message



9
10
11
# File 'lib/mondrian/olap/error.rb', line 9

def profiling_handler
  @profiling_handler
end

#root_causeObject (readonly)

root_cause will be nil if there is no cause for wrapped native error root_cause_message will have either root_cause message or wrapped native error message



9
10
11
# File 'lib/mondrian/olap/error.rb', line 9

def root_cause
  @root_cause
end

#root_cause_messageObject (readonly)

root_cause will be nil if there is no cause for wrapped native error root_cause_message will have either root_cause message or wrapped native error message



9
10
11
# File 'lib/mondrian/olap/error.rb', line 9

def root_cause_message
  @root_cause_message
end

Class Method Details

.wrap_native_exception(options = {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/mondrian/olap/error.rb', line 19

def self.wrap_native_exception(options = {})
  yield
# TokenMgrError for some unknown reason extends java.lang.Error which normally should not be rescued
rescue Java::JavaLang::Exception, Java::MondrianParser::TokenMgrError => e
  if e.toString =~ NATIVE_ERROR_REGEXP
    raise Mondrian::OLAP::Error.new(e, options)
  else
    raise
  end
end

Instance Method Details

#profiling_planObject



30
31
32
33
34
# File 'lib/mondrian/olap/error.rb', line 30

def profiling_plan
  if profiling_handler && (plan = profiling_handler.plan)
    plan.gsub("\r\n", "\n")
  end
end

#profiling_timingObject



36
37
38
# File 'lib/mondrian/olap/error.rb', line 36

def profiling_timing
  profiling_handler.timing if profiling_handler
end

#profiling_timing_stringObject



40
41
42
43
44
# File 'lib/mondrian/olap/error.rb', line 40

def profiling_timing_string
  if profiling_timing && (timing_string = profiling_timing.toString)
    timing_string.gsub("\r\n", "\n").sub(Mondrian::OLAP::Result::QUERY_TIMING_CUMULATIVE_REGEXP, '')
  end
end