processarNomeBufferPilha.plsql 3.41 KB
/*
    **********************************************************************************
    *                                                                                *
    * @package URBEM CNM - Soluções em Gestão Pública                                *
    * @copyright (c) 2013 Confederação Nacional de Municípos                         *
    * @author Confederação Nacional de Municípios                                    *
    *                                                                                *
    * O URBEM CNM é um software livre; você pode redistribuí-lo e/ou modificá-lo sob *
    * os  termos  da Licença Pública Geral GNU conforme  publicada  pela Fundação do *
    * Software Livre (FSF - Free Software Foundation); na versão 2 da Licença.       *
    *                                                                                *
    * Este  programa  é  distribuído  na  expectativa  de  que  seja  útil,   porém, *
    * SEM NENHUMA GARANTIA; nem mesmo a garantia implícita  de  COMERCIABILIDADE  OU *
    * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral do GNU *
    * para mais detalhes.                                                            *
    *                                                                                *
    * Você deve ter recebido uma cópia da Licença Pública Geral do GNU "LICENCA.txt" *
    * com  este  programa; se não, escreva para  a  Free  Software Foundation  Inc., *
    * no endereço 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.       *
    *                                                                                *
    **********************************************************************************
*/
/*
 * Titulo do arquivo : processarNomeBufferPilha
 * Data de Criação   : 01/04/2008


 * @author Analista      Dagiane Vieira
 * @author Desenvolvedor Diego Lemos de Souza
 
 * @package URBEM
 * @subpackage 

 $Id:$
 */
create or replace function processarNomeBufferPilha(varchar,varchar,varchar) returns varchar
as $$
declare
    stBufferPar alias for $1;
    stTipo      alias for $2;
    stOperacao  alias for $3;
    stSql       varchar;
    stBuffer    varchar;
    inContador  integer;
    stSeparador varchar:='#';
begin
    stBuffer := processarNomeBuffer(stBufferPar);
    --Código para montagem de um buffer especial em forma de pilha
    --Esse buffer deverá se comportar como uma pinha, para isso quando for passado o nome do buffer aqui
    --especificado deverá ser acrescido de um número que identificara sua posição na pilha    
    stSql := 'select count(1) from administracao.buffers_'||stTipo||' where buffer = '''||stBuffer||'''';
    inContador := selectIntoInteger(stSql);    
    stSql := 'select count(1) from administracao.buffers_'||stTipo||' where buffer ilike '''||stBuffer||stSeparador||'%''';
    inContador := inContador + selectIntoInteger(stSql);
    --Se o contador for maior de 0 significa que ja existe um buffer e o próximo valor deverá entrar na pinha 
    --com o nome do buffer acrescido de um número.
    if inContador >= 1 then
        if stOperacao = 'add' then
            stBuffer := stBuffer||stSeparador||inContador;
        else            
            if inContador > 1 then
                stBuffer := stBuffer||stSeparador||(inContador-1);
            end if;
        end if;            
    end if;
    return stBuffer;
end;
$$ language 'plpgsql';