--
-- workflow__add_trans_attribute_map/4
--
create or replace function workflow__add_trans_attribute_map(
  character varying,
  character varying,
  integer,
  integer
) returns int4 as $$

declare
  p_workflow_key		alias for $1;
  p_transition_key		alias for $2; 
  p_attribute_id		alias for $3;
  p_sort_order			alias for $4;
  v_num_rows			integer;
  v_sort_order			integer;
begin
        select count(*)
          into v_num_rows
          from wf_transition_attribute_map
         where workflow_key = p_workflow_key
	   and transition_key = p_transition_key
	   and attribute_id = p_attribute_id;

        if v_num_rows > 0 then
            return;
        end if;
        if p_sort_order is null then
            select coalesce(max(sort_order)+1, 1)
              into v_sort_order
              from wf_transition_attribute_map
             where workflow_key = p_workflow_key
               and transition_key = p_transition_key;
        else
            v_sort_order := p_sort_order;
        end if;
        insert into wf_transition_attribute_map (
            workflow_key,
            transition_key,
            attribute_id,
            sort_order
        ) values (
            p_workflow_key,
	    p_transition_key,
            p_attribute_id,
            v_sort_order
       );

  return 0;

end;$$ language plpgsql;


--
-- workflow__add_trans_attribute_map/4
--
create or replace function workflow__add_trans_attribute_map(
  character varying,
  character varying,
  character varying,
  integer
) returns int4 as $$

declare
  p_workflow_key		alias for $1;
  p_transition_key		alias for $2;
  p_attribute_name		alias for $3;
  p_sort_order			alias for $4;
  v_attribute_id		integer;
begin
        select attribute_id
          into v_attribute_id
          from acs_attributes
         where object_type = p_workflow_key
           and attribute_name = p_attribute_name;

        perform workflow__add_trans_attribute_map (
		  p_workflow_key,
		  p_transition_key,
		  v_attribute_id,
		  p_sort_order
        );

	return 0;

end;$$ language plpgsql;