lib/openwfe/expressions/fe_save.rb in ruote-0.9.19 vs lib/openwfe/expressions/fe_save.rb in ruote-0.9.20

- old
+ new

@@ -1,52 +1,33 @@ -# #-- -# Copyright (c) 2007-2008, John Mettraux, OpenWFE.org -# All rights reserved. +# Copyright (c) 2007-2009, John Mettraux, jmettraux@gmail.com # -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: # -# . Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. # -# . Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. # -# . Neither the name of the "OpenWFE" nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. +# Made in Japan. #++ -# -# -# "made in Japan" -# -# John Mettraux at openwfe.org -# - require 'openwfe/workitem' require 'openwfe/expressions/merge' -# -# save and restore -# - module OpenWFE # # Saves a copy of the current workitem to a variable or saves the # attributes of the current workitem into a field (of that current @@ -69,27 +50,27 @@ names :save def apply (workitem) - field = lookup_string_attribute :to_field, workitem - variable = lookup_string_attribute :to_variable, workitem + field = lookup_string_attribute(:to_field, workitem) + variable = lookup_string_attribute(:to_variable, workitem) wi = workitem.dup if field - workitem.set_attribute field, wi.attributes + workitem.set_attribute(field, wi.attributes) elsif variable - set_variable variable, wi + set_variable(variable, wi) end # else, simply don't save - reply_to_parent workitem + reply_to_parent(workitem) end end # # "restore" is often used in conjunction with "save" @@ -184,22 +165,22 @@ value = workitem.attributes[FIELD_RESULT] source = if from_field - att = workitem.lookup_attribute from_field + att = workitem.lookup_attribute(from_field) lwarn { "apply() field '#{from_field}' is NOT a hash, " + "restored anyway" } unless att.kind_of?(Hash) att elsif from_variable - lookup_variable from_variable + lookup_variable(from_variable) elsif value value @@ -209,66 +190,66 @@ end if source workitem = if merge_lead - do_merge merge_lead, workitem, source + do_merge(merge_lead, workitem, source) else - do_overwrite workitem, source + do_overwrite(workitem, source) end end # else, don't restore anything - reply_to_parent workitem + reply_to_parent(workitem) end protected - # - # The default case, restored values simply overwrite current - # values. - # - def do_overwrite (workitem, source) + # + # The default case, restored values simply overwrite current + # values. + # + def do_overwrite (workitem, source) - return workitem unless source + return workitem unless source - attributes = if source.kind_of?(WorkItem) - OpenWFE::fulldup source.attributes - else - source - end + attributes = if source.kind_of?(WorkItem) + OpenWFE.fulldup(source.attributes) + else + source + end - to_field = lookup_string_attribute :to_field, workitem + to_field = lookup_string_attribute(:to_field, workitem) - if to_field - workitem.set_attribute to_field, attributes - else - workitem.attributes = attributes - end - - workitem + if to_field + workitem.set_attribute(to_field, attributes) + else + workitem.attributes = attributes end - # - # If the attribute 'merge-lead' (or 'merge_lead') is specified, - # the workitems get merged. - # - def do_merge (merge_lead, workitem, source) + workitem + end - if source.kind_of?(Hash) - wi = InFlowWorkItem.new - wi.attributes = source - source = wi - end + # + # If the attribute 'merge-lead' (or 'merge_lead') is specified, + # the workitems get merged. + # + def do_merge (merge_lead, workitem, source) - wiTarget, wiSource = if merge_lead == :current - [ source, workitem ] - else - [ workitem, source ] - end + if source.kind_of?(Hash) + wi = InFlowWorkItem.new + wi.attributes = source + source = wi + end - merge_workitems wiTarget, wiSource + wi_target, wi_source = if merge_lead == :current + [ source, workitem ] + else + [ workitem, source ] end + + merge_workitems(wi_target, wi_source) + end end end