12.07.2015 Views

Arquivo completo com todo o volume dos Anais - Departamento de ...

Arquivo completo com todo o volume dos Anais - Departamento de ...

Arquivo completo com todo o volume dos Anais - Departamento de ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Quadro 3: Aspecto <strong>de</strong> autenticaçãoAAutenticacao = AspectImplementationAutenticaInsert : Pointcut = (* *.SQLInsert(*));AutenticaUpdate : Pointcut = (* *.SQLUpdate(*));AutenticaDelete : Pointcut = (* *.SQLDelete(*));Advice AutenticaInsert: Before;beginWith DMTaskMan.qryAutentica dobeginClose;Sql.Clear;Sql.Add(’Select count(*) from DIREITO_USUARIO’);Sql.Add(’Where IDUSUARIO = :IDUSUARIO and OPERACAO = :OPERACAO’);Sql.Add(’ and TABELA = :TABELA’);ParamByName(’IDUSUARIO’).AsInteger := giCodUsuario;ParamByName(’OPERACAO’).AsInteger := 1; //1=Insert, 2=Update, 3=DeleteParamByName(’TABELA’).AsInteger := Self.NomeTabela;ExecSQL;ifFields[0].AsInteger = 0 thenRaise Exception.Create('Você não tem permissão para essa ativida<strong>de</strong>. '+ Chr(13) + 'Entre em contato <strong>com</strong> o seu superior.');end;EndAdvice;Advice AutenticaUpdate: Before;beginWith DMTaskMan.qryAutentica dobegin...ParamByName('OPERACAO').AsInteger := 2;...end;EndAdvice;Advice AutenticaDelete: Before;beginWith DMTaskMan.qryAutentica dobegin...ParamByName('OPERACAO').AsInteger := 3;...end;EndAdvice;//1=Insert, 2=Update, 3=Delete//1=Insert, 2=Update, 3=DeleteEnd.Em seguida o <strong>de</strong>senvolvedor po<strong>de</strong> indicar à ferramenta as listas <strong>de</strong> units que nãoserão afetadas pelos aspectos do projeto. A cada lista adicionada, suas units sãoinseridas no campo Units não afetadas por aspectos. Durante o processo<strong>de</strong> weaving, cadaunit referenciada em algum fonte lido será analisada, a menos <strong>de</strong> queseu nome conste nesta lista <strong>de</strong> restrição.Tendo informado esses parâmetros, o projeto AOPDelphi está pronto para ser<strong>com</strong>pilado. Ao executar o <strong>com</strong>ando Weaving, é feita a consistência no projeto Delphi eem seguida são <strong>com</strong>pila<strong>dos</strong> os programas <strong>de</strong> aspectos. É feita a cópia do projeto Delphioriginal e inicia-se a junção <strong>dos</strong> programas <strong>de</strong> aspectos e do programa <strong>de</strong> <strong>com</strong>ponentes.Os fontes gera<strong>dos</strong> são <strong>com</strong>pila<strong>dos</strong> e ocorrendo sucesso a aplicação será executada.Havendo erros <strong>de</strong> <strong>com</strong>pilação no projeto Delphi após o weaving, a ferramenta apresentaos tais erros e sua origem.Os quadros 4 e 5 mostram um mé<strong>todo</strong> SQLDelete <strong>de</strong> uma classe afetada peloaspecto, antes e <strong>de</strong>pois do processo <strong>de</strong> weaving, respectivamente.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!