Module: Mongo::JavaImpl::Utils
- Included in:
- Collection, Connection, Cursor, DB
- Defined in:
- lib/jmongo/mongo/utils.rb
Constant Summary collapse
- SortingHash =
Hash.new(0).merge!( "ascending" => 1, "asc" => 1, "1" => 1, "descending" => -1, "desc" => -1, "-1" => -1 )
Instance Method Summary collapse
- #from_dbobject(obj) ⇒ Object
- #prep_fields(fields) ⇒ Object
- #prep_sort(key_or_list = nil, direction = nil) ⇒ Object
- #raise_not_implemented ⇒ Object
- #sort_value(key, value) ⇒ Object
- #to_dbobject(obj) ⇒ Object
- #trap_raise(ex_class, msg = nil) ⇒ Object
Instance Method Details
#from_dbobject(obj) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/jmongo/mongo/utils.rb', line 63 def from_dbobject obj # for better upstream compatibility make the objects into ruby hash or array case obj when Java::ComMongodb::BasicDBObject, Java::ComMongodb::CommandResult h = obj.hashify Hash[h.keys.zip(h.values.map{|v| from_dbobject(v)})] when Java::ComMongodb::BasicDBList obj.arrayify.map{|v| from_dbobject(v)} when Java::JavaUtil::ArrayList obj.map{|v| from_dbobject(v)} when Java::JavaUtil::Date Time.at(obj.get_time/1000.0) when Java::OrgBsonTypes::Symbol obj.toString.to_sym else obj end end |
#prep_fields(fields) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/jmongo/mongo/utils.rb', line 25 def prep_fields(fields) case fields when String, Symbol {fields => 1} when Array fields << "_id" if fields.empty? Hash[fields.zip( [1]*fields.size )] when Hash fields end end |
#prep_sort(key_or_list = nil, direction = nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/jmongo/mongo/utils.rb', line 37 def prep_sort(key_or_list=nil, direction=nil) return if key_or_list.nil? if !direction.nil? order = [[key_or_list, direction]] elsif key_or_list.is_a?(String) || key_or_list.is_a?(Symbol) order = [[key_or_list.to_s, 1]] else order = [key_or_list] end hord = {} order.flatten.each_slice(2){|k,v| hord[k] = sort_value(k,v)} to_dbobject(hord) end |
#raise_not_implemented ⇒ Object
13 14 15 |
# File 'lib/jmongo/mongo/utils.rb', line 13 def raise_not_implemented raise NoMethodError, "This method hasn't been implemented yet." end |
#sort_value(key, value) ⇒ Object
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/jmongo/mongo/utils.rb', line 83 def sort_value(key, value) val = value.to_s.downcase return val if val == '2d' direction = SortingHash[val] return direction if direction != 0 raise InvalidSortValueError.new( "for key: #{key}, #{value} was supplied as a sort direction when acceptable values are: " + "Mongo::ASCENDING, 'ascending', 'asc', :ascending, :asc, 1, Mongo::DESCENDING, " + "'descending', 'desc', :descending, :desc, -1.") end |
#to_dbobject(obj) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/jmongo/mongo/utils.rb', line 51 def to_dbobject obj if obj.respond_to?('to_bson') obj.to_bson elsif obj.respond_to?(:merge) hash_to_dbobject(obj) elsif obj.respond_to?(:compact) array_to_dblist(obj) else obj end end |
#trap_raise(ex_class, msg = nil) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/jmongo/mongo/utils.rb', line 17 def trap_raise(ex_class, msg=nil) begin yield rescue => ex raise ex_class, msg ? "#{msg} - #{ex.message}" : ex. end end |