lib/amee/item_value_definition.rb in amee-2.2.1 vs lib/amee/item_value_definition.rb in amee-2.3.0
- old
+ new
@@ -28,59 +28,67 @@
data[:name] = p['name']
data[:path] = p['path']
data[:unit] = p['unit']
data[:perunit] = p['perunit']
data[:valuetype] = p['valueDefinition']['valueType']
- data=ItemValueDefinition.parsetype(data,p['drillDown'],p['fromProfile'],p['fromData'])
-
+ data[:drill]=p['drillDown']
+ data[:from_profile]=p['fromProfile']
+ data[:from_data]=p['fromData']
+ data
end
def parse_xml(p)
data = {}
data[:itemdefuid] = @uid
data[:uid] = x '@uid',:doc => p
data[:name] = x 'Name',:doc => p || data[:uid]
data[:path] = x 'Path',:doc => p
data[:unit] = x 'Unit',:doc => p
data[:perunit] = x 'PerUnit',:doc => p
data[:valuetype] =x 'ValueDefinition/ValueType',:doc => p
- drill=(x('DrillDown',:doc => p)=='true')
- profile=(x('FromProfile',:doc => p)=='true')
- ldata=(x('FromData',:doc => p)=='true')
- data=ItemValueDefinition.parsetype(data,drill,profile,ldata)
-
+ data[:drill]=(x('DrillDown',:doc => p)=='true')
+ data[:from_profile]=(x('FromProfile',:doc => p)=='true')
+ data[:from_data]=(x('FromData',:doc => p)=='true')
+ data
end
end
class ItemValueDefinition < AMEE::Object
def initialize(data = {})
@itemdefuid=data[:itemdefuid]
@name = data[:name]
@uid = data[:uid]
@path = data[:path]
- @type = data[:type]
@unit = data[:unit]
@perunit = data[:perunit]
@valuetype = data[:valuetype]
@default = data[:default] == "" ? nil : data[:default]
@choices = data[:choices] || []
@versions = data[:versions] || []
+ @drill = data[:drill]
+ @from_data = @drill ? false : data[:from_data] # Drills are also data, but we don't want them to show as such for clarity
+ @from_profile = data[:from_profile]
super
end
- attr_reader :name,:uid,:path,:itemdefuid, :type, :valuetype, :unit, :perunit, :type, :default, :choices, :versions
+ attr_reader :name,:uid,:path,:itemdefuid, :type, :valuetype, :unit, :perunit, :default, :choices, :versions
+ # This function has bee deprecated in favour of the separate profile? data? and drill? functions
+ def type
+ raise AMEE::Deprecated
+ end
+
def profile?
- type=='profile'
+ @from_profile
end
def data?
- type=='data'
+ @from_data
end
def drill?
- type=='drill'
+ @drill
end
def self.list(connection)
ItemValueDefinitionList.new(connection)
end
@@ -113,23 +121,21 @@
data[:perunit] = p['perUnit']
data[:valuetype] = p['valueDefinition']['valueType']
data[:default] = p['value']
data[:choices] = p['choices'].split(',')
data[:versions] = p['apiVersions'].map{|v| v['apiVersion']}
- data=ItemValueDefinition.parsetype(data,p['drillDown'],p['fromProfile'],p['fromData'])
+ data[:drill]=p['drillDown']
+ data[:from_profile]=p['fromProfile']
+ data[:from_data]=p['fromData']
# Create object
ItemValueDefinition.new(data)
rescue
raise AMEE::BadData.new("Couldn't load ItemValueDefinition from JSON. Check that your URL is correct.\n#{json}")
end
- def self.parsetype(data,drill,profile,ldata)
- ( (profile && !(drill||ldata) ) || ldata) or raise 'inconsistent type'
- data[:type]='profile' if profile
- data[:type]='data' if ldata
- data[:type]='drill' if drill
- data
+ def self.xmlpathpreamble
+ "/Resources//ItemValueDefinition/"
end
def self.from_xml(xml, is_list = true)
prefix = is_list ? "/Resources/ItemValueDefinitionsResource/" : "/Resources/ItemValueDefinitionResource/"
# Parse data from response into hash
@@ -147,13 +153,12 @@
data[:perunit] = puxml ? puxml.text : nil
data[:valuetype] = REXML::XPath.first(doc, prefix + "ItemValueDefinition/ValueDefinition/ValueType").text
data[:default] = REXML::XPath.first(doc, prefix + "ItemValueDefinition/Value").text
data[:choices] = REXML::XPath.first(doc, prefix + "ItemValueDefinition/Choices").text.split(',') rescue nil
data[:versions] = REXML::XPath.each(doc, prefix + "ItemValueDefinition/APIVersions/APIVersion").map{|v| v.text}
- drill=(REXML::XPath.first(doc, prefix + "ItemValueDefinition/DrillDown").text=='true')
- profile=(REXML::XPath.first(doc, prefix + "ItemValueDefinition/FromProfile").text=='true')
- ldata=(REXML::XPath.first(doc, prefix + "ItemValueDefinition/FromData").text=='true')
- data=parsetype(data,drill,profile,ldata)
+ data[:drill]=(x('DrillDown',:doc => doc)=='true')
+ data[:from_profile]=(x('FromProfile',:doc => doc)=='true')
+ data[:from_data]=(x('FromData',:doc => doc)=='true')
# Create object
ItemValueDefinition.new(data)
rescue
raise AMEE::BadData.new("Couldn't load ItemValueDefinition from XML. Check that your URL is correct.\n#{xml}")
end