Class: Mondrian::OLAP::Schema::UserDefinedFunction::RubyUdfBase
- Inherits:
-
Object
- Object
- Mondrian::OLAP::Schema::UserDefinedFunction::RubyUdfBase
- Defined in:
- lib/mondrian/olap/schema_udf.rb
Constant Summary collapse
- VALID_SYNTAX_TYPES =
%w(Function Property Method)
- UDF_SCALAR_TYPES =
{ "Numeric" => Java::mondrian.olap.type.NumericType, "String" => Java::mondrian.olap.type.StringType, "Boolean" => Java::mondrian.olap.type.BooleanType, "DateTime" => Java::mondrian.olap.type.DateTimeType, "Decimal" => Java::mondrian.olap.type.DecimalType, "Scalar" => Java::mondrian.olap.type.ScalarType }
- UDF_OTHER_TYPES =
{ "Member" => Java::mondrian.olap.type.MemberType::Unknown, "Set" => Java::mondrian.olap.type.SetType.new(Java::mondrian.olap.type.MemberType::Unknown), "Hierarchy" => Java::mondrian.olap.type.HierarchyType.new(nil, nil), "Level" => Java::mondrian.olap.type.LevelType::Unknown }
Class Method Summary collapse
- .function_name ⇒ Object
- .function_name=(name) ⇒ Object
- .parameters(*types) ⇒ Object
- .returns(type = nil) ⇒ Object
- .syntax(type = nil) ⇒ Object
Instance Method Summary collapse
-
#call_with_evaluator(evaluator, *values) ⇒ Object
Override this metho if evaluator is needed.
- #execute(evaluator, arguments) ⇒ Object
- #getDescription ⇒ Object
- #getName ⇒ Object
- #getParameterTypes ⇒ Object
- #getReservedWords ⇒ Object
- #getReturnType(parameterTypes) ⇒ Object
- #getSyntax ⇒ Object
Class Method Details
.function_name ⇒ Object
138 |
# File 'lib/mondrian/olap/schema_udf.rb', line 138 def self.function_name; @function_name; end |
.function_name=(name) ⇒ Object
137 |
# File 'lib/mondrian/olap/schema_udf.rb', line 137 def self.function_name=(name); @function_name = name; end |
.parameters(*types) ⇒ Object
150 151 152 153 154 155 156 |
# File 'lib/mondrian/olap/schema_udf.rb', line 150 def self.parameters(*types) if types.empty? @parameters || [] else @parameters = types.map{|type| stringified_type(type)} end end |
.returns(type = nil) ⇒ Object
158 159 160 161 162 163 164 |
# File 'lib/mondrian/olap/schema_udf.rb', line 158 def self.returns(type = nil) if type @returns = stringified_type(type) else @returns || 'Scalar' end end |
.syntax(type = nil) ⇒ Object
167 168 169 170 171 172 173 174 175 |
# File 'lib/mondrian/olap/schema_udf.rb', line 167 def self.syntax(type = nil) if type type = stringify(type) raise ArgumentError, "invalid user defined function type #{type.inspect}" unless VALID_SYNTAX_TYPES.include? type @syntax = type else @syntax || 'Function' end end |
Instance Method Details
#call_with_evaluator(evaluator, *values) ⇒ Object
Override this metho if evaluator is needed
227 228 229 |
# File 'lib/mondrian/olap/schema_udf.rb', line 227 def call_with_evaluator(evaluator, *values) call(*values) end |
#execute(evaluator, arguments) ⇒ Object
215 216 217 218 219 220 221 222 |
# File 'lib/mondrian/olap/schema_udf.rb', line 215 def execute(evaluator, arguments) values = [] self.class.parameters.each_with_index do |p,i| value = UDF_SCALAR_TYPES[p] ? arguments[i].evaluateScalar(evaluator) : arguments[i].evaluate(evaluator) values << value end call_with_evaluator(evaluator, *values) end |
#getDescription ⇒ Object
145 146 147 |
# File 'lib/mondrian/olap/schema_udf.rb', line 145 def getDescription getName end |
#getName ⇒ Object
140 141 142 |
# File 'lib/mondrian/olap/schema_udf.rb', line 140 def getName self.class.function_name end |
#getParameterTypes ⇒ Object
197 198 199 |
# File 'lib/mondrian/olap/schema_udf.rb', line 197 def getParameterTypes @parameterTypes ||= self.class.parameters.map{|p| get_java_type(p)} end |
#getReservedWords ⇒ Object
209 210 211 |
# File 'lib/mondrian/olap/schema_udf.rb', line 209 def getReservedWords nil end |
#getReturnType(parameterTypes) ⇒ Object
204 205 206 |
# File 'lib/mondrian/olap/schema_udf.rb', line 204 def getReturnType(parameterTypes) @returnType ||= get_java_type self.class.returns end |
#getSyntax ⇒ Object
177 178 179 |
# File 'lib/mondrian/olap/schema_udf.rb', line 177 def getSyntax Java::mondrian.olap.Syntax.const_get self.class.syntax end |