From 3a42a297ebef8d1ac03d2181aa9258e8245ea608 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Wed, 14 Aug 2013 02:54:25 +0300 Subject: [PATCH] Improved conflict handling of add/remove object configurations in presets --- presets.coffee | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/presets.coffee b/presets.coffee index 78e1c3e..7e9ac7d 100644 --- a/presets.coffee +++ b/presets.coffee @@ -55,7 +55,7 @@ calculatePresetsHash = (presets, objects) -> matchObject = (object, param) -> - return false if not object._keys? + return false if not object._keys? or object._keys.length == 0 for k in object._keys v = common.matchType(param[k]._value, object[k]) if param[k]._value != v @@ -91,7 +91,7 @@ exports.assertPresets = (deviceId, presetsHash, callback) -> if mongoQuery.test(device, p.precondition) devicePresets.push(p) - configurations = accumulateConfigurations(devicePresets) + configurations = accumulateConfigurations(devicePresets, objects) now = Date.now() taskList = [] expiry = config.PRESETS_CACHE_DURATION @@ -186,7 +186,14 @@ exports.assertPresets = (deviceId, presetsHash, callback) -> ) -accumulateConfigurations = (presets) -> +getObjectHash = (object) -> + return object._id if not object._keys? or object._keys.length == 0 + hash = '' + for k in object._keys + hash += "#{k}=#{object[k]}" + return hash + +accumulateConfigurations = (presets, objects) -> maxWeights = {} configurations = {} for p in presets @@ -195,7 +202,8 @@ accumulateConfigurations = (presets) -> when 'add_tag', 'delete_tag' "tag_#{c.tag}" when 'add_object', 'delete_object' - "object_#{c.object}_#{c.object}" + objectHash = getObjectHash(objects[c.object]) + "object_#{c.name}_#{objectHash}" when 'firmware' 'firmware' else