class RallyAPI::RallyObject

RallyObject is a helper class that wraps the JSON.parsed hash

Attributes

rally_object[R]
type[R]
warnings[R]

Public Class Methods

new(rally_rest, json_hash, warnings = {}) click to toggle source
# File lib/rally_api/rally_object.rb, line 16
def initialize(rally_rest, json_hash, warnings = {})
  # handle that we might not get a _ref or a _type
 @type = "unknown"
 if json_hash["_type"] && !json_hash["_type"].empty?
   @type = json_hash["_type"]
 elsif json_hash["_ref"] && !json_hash["_ref"].empty?
   @type = json_hash["_ref"].split("/")[-2]
 end
  @rally_object = json_hash
  @rally_rest   = rally_rest
  @warnings     = warnings[:warnings]
end

Public Instance Methods

<=>(object) click to toggle source
# File lib/rally_api/rally_object.rb, line 102
def <=>(object)
  self.ref <=> object.ref
end
==(object) click to toggle source
# File lib/rally_api/rally_object.rb, line 92
def ==(object)
  object.equal?(self) ||
      (object.instance_of?(self.class) &&
          object.ref == ref)
end
[](field_name) click to toggle source
# File lib/rally_api/rally_object.rb, line 43
def [](field_name)
  get_val(field_name.to_s)
end
[]=(field_name, value) click to toggle source
# File lib/rally_api/rally_object.rb, line 47
def []=(field_name, value)
  return if field_name.nil?
  rally_object[field_name.to_s] = value
end
camel_case_word(sym) click to toggle source
# File lib/rally_api/rally_object.rb, line 66
def camel_case_word(sym)
  RallyAPI::RallyRestJson.camel_case_word(sym)
end
delete() click to toggle source
# File lib/rally_api/rally_object.rb, line 138
def delete()
  @rally_rest.delete(rally_object["_ref"])
end
elements() click to toggle source
# File lib/rally_api/rally_object.rb, line 70
def elements
  @rally_object.inject({}) do |elements, (key, value)|
    if key.to_s.start_with?("c_")
      key = key.to_s[2..-1]
    end
    elements[underscore(key).to_sym] = value
    elements
  end
end
eql?(object) click to toggle source
# File lib/rally_api/rally_object.rb, line 98
def eql?(object)
  self == (object)
end
getref() click to toggle source
# File lib/rally_api/rally_object.rb, line 58
def getref
  ref
end
hash() click to toggle source
# File lib/rally_api/rally_object.rb, line 106
def hash
  self.ref.hash
end
name() click to toggle source
# File lib/rally_api/rally_object.rb, line 110
def name
  get_val('Name') || get_val('_refObjectName')
end
oid() click to toggle source
# File lib/rally_api/rally_object.rb, line 80
def oid
  object_i_d
end
password() click to toggle source
# File lib/rally_api/rally_object.rb, line 88
def password
  @rally_rest.rally_password
end
rank_above(relative_rally_object) click to toggle source
# File lib/rally_api/rally_object.rb, line 118
def rank_above(relative_rally_object)
  @rally_object = @rally_rest.rank_above(rally_object["_ref"],relative_rally_object["_ref"]).rally_object
  self
end
rank_below(relative_rally_object) click to toggle source
# File lib/rally_api/rally_object.rb, line 123
def rank_below(relative_rally_object)
  @rally_object = @rally_rest.rank_below(rally_object["_ref"],relative_rally_object["_ref"]).rally_object
  self
end
rank_to_bottom() click to toggle source
# File lib/rally_api/rally_object.rb, line 128
def rank_to_bottom
  @rally_object = @rally_rest.rank_to(rally_object["_ref"], "BOTTOM").rally_object
  self
end
rank_to_top() click to toggle source
# File lib/rally_api/rally_object.rb, line 133
def rank_to_top
  @rally_object = @rally_rest.rank_to(rally_object["_ref"], "TOP").rally_object
  self
end
read(params = {}) click to toggle source
# File lib/rally_api/rally_object.rb, line 52
def read(params = {})
  @rally_object = @rally_rest.reread(rally_object, params)
  self
end
Also aliased as: refresh
ref() click to toggle source
# File lib/rally_api/rally_object.rb, line 62
def ref
  rally_object["_ref"]
end
refresh(params = {})
Alias for: read
to_json(*args) click to toggle source
# File lib/rally_api/rally_object.rb, line 39
def to_json(*args)
  rally_object.to_json
end
to_q() click to toggle source
# File lib/rally_api/rally_object.rb, line 114
def to_q
  @rally_object["_ref"]
end
to_s(*args) click to toggle source
# File lib/rally_api/rally_object.rb, line 35
def to_s(*args)
  get_val('Name') || get_val('_refObjectName')
end
update(fields, params = {}) click to toggle source
# File lib/rally_api/rally_object.rb, line 29
def update(fields, params = {})
  oid = @rally_object["ObjectID"] || @rally_object["_ref"].split("/")[-1].split(".")[0]
  @rally_object = @rally_rest.update(@type.downcase.to_sym, oid, fields, params).rally_object
  self
end
username() click to toggle source
# File lib/rally_api/rally_object.rb, line 84
def username
  user_name || login_name
end

Private Instance Methods

get_val(field) click to toggle source
# File lib/rally_api/rally_object.rb, line 154
def get_val(field)
  return_val = @rally_object[field]
  return_val = @rally_object["c_#{field}"] if return_val.nil?

  if return_val.class == Hash
    if return_val.has_key?("_ref")
      return read_association return_val
    end
    return RallyObject.new(@rally_rest, return_val)
  end

  if return_val.class == Array
    make_object_array(field)
    return_val = @rally_object[field]
  end

  return_val
end
make_object_array(field) click to toggle source
# File lib/rally_api/rally_object.rb, line 188
def make_object_array(field)
  object_array = []
  @rally_object[field].each do |rally_obj|
    object_array.push(RallyObject.new(@rally_rest, rally_obj))
  end
  @rally_object[field] = RallyCollection.new(object_array)
end
method_missing(sym, *args) click to toggle source

An attempt to be rally_rest_api user friendly - you can get a field the old way with an underscored field name or the upcase name

# File lib/rally_api/rally_object.rb, line 146
def method_missing(sym, *args)
  ret_val = get_val(sym.to_s)
  if ret_val.nil? && @rally_rest.rally_rest_api_compat
    ret_val = get_val(camel_case_word(sym))
  end
  ret_val
end
read_association(object_or_collection) click to toggle source
# File lib/rally_api/rally_object.rb, line 173
def read_association(object_or_collection)
  return read_collection(object_or_collection) if object_or_collection.has_key? 'Count'
  return RallyObject.new(@rally_rest, @rally_rest.reread(object_or_collection)) if @rally_rest.rally_rest_api_compat
  RallyObject.new(@rally_rest, object_or_collection)
end
read_collection(collection) click to toggle source
# File lib/rally_api/rally_object.rb, line 179
def read_collection(collection)
  results = @rally_rest.read_collection(collection, {:pagesize => 200})["Results"]
  RallyCollection.new(results.collect { |object| RallyObject.new(@rally_rest, object) })
end
underscore(camel_cased_word) click to toggle source
# File lib/rally_api/rally_object.rb, line 184
def underscore(camel_cased_word)
  camel_cased_word.split(/(?=[A-Z])/).join('_').downcase
end