quinta-feira, 10 de junho de 2021

Estrutura de diretórios Linux

      Nesse post trago apenas uma imagem que a Vannessa Moura postou no linkedin e mostra a estrutura de diretórios no Linux. Deixei aqui pra garantir ter sempre a mão quando precisar.




terça-feira, 1 de junho de 2021

Substituido Entidades em um projeto Java

Este post é um pouco diferente dos demais já que vou tratar mais de um passo-a-passo do que fazer ao invés de trazer código.

 

Não sei se você já passou pela necessidade de precisar trocar uma entidade por outra em todo o sistema, mas quando isso acontece o trabalho é enorme. 

 

Entidades são as classes javas que são mapeadas para o banco de dados. Normalmente, aplicando as boas práticas e padrões de projeto em um determinado sistema, temos uma entidade para uma tabela, claro que podemos ter VOs (ou DTOs como tbm são conhecidos), mas falo de uma classe que vai ser a responsável pelo objeto inserido no banco, atualizado, apagado, enfim, o bean persistente. Em um projeto que trabalhei, não sei porque fizeram isso (falta de um arquiteto ou diria mesmo de uma pessoa com boa noção de O.O.), essa regra básica não foi seguida, e tinhamos 3, 4 ou até 6 classes diferentes apontando para a mesma tabela, com basicamente as mesmas propriedades, mudava apenas uma ou outra, e que ainda tinham sua própria classe de negócio e seu próprio controller. Ou seja, duplicação (ou melhor, multiplacação) de código enorme, regras espalhadas, bagunça total.

Nesse cenário caótico, eu precisei juntar as várias cópias de duas entidades principais, uma que tinha 6 classes e outra que tinha 4, e deixar apenas uma de cada. Não foi feito a junção do controller nem das classes de negócio devido ao tamanho, complexidade e tempo, mas ter apenas um objeto trafegando entre elas facilitou bastante as coisas. E pra fazer isso nesse sistema que é grande, eu usei o seguinte passo a passo:

1.     Juntar todas as propriedades em uma unica entidade removendo as repetidas mas não apagar nesse momento as classes duplicadas.

 

2.     Para cada uma das classes que serão eliminadas faça o seguinte: use o Search do eclipse na opção File Search seguindo os padrões abaixo, ao retornar resultados, clique com botão direito na aba que abriu de mesmo nome da funcionalidade (Search) e escolha a opção substituir todos, e vá substituindo pela nova classe. 

 

1.     Marque a opção Case Sensitive pra todas as buscas

 

2.     Procure os imports e substitua pelo import da classe que vai ficar

 

3.     Procure o nome da classe com um parêntese no início – com ou sem espaço dependendo do padrão de codificação usado no projeto entre o nome e os parênteses. Ex: (Usuario  

 

4.     Procure o nome da classe com o parentese no final – com ou sem espaço dependendo do padrão de codificação usado no projeto entre o nome e os parênteses. Ex: Usuario( 

 

5.     Procure o nome da classe com entre parênteses – com ou sem espaço dependendo do padrão do projeto entre o nome e os parênteses. Ex: (Usuario)

 

6.    Procure o nome da classe entre os sinais de menor que ‘<’  e maior que ‘>’. Ex: <Usuario>

 

7.    Procure o nome da classe entre espaços. Ex: Usuario

 

8.    Procure o nome da classe seguido do .class. Ex: Usuario.class

 

Nesse ponto, podem haver alguns erros apontados na aba Problems do Eclipse, geralmente são alguns imports que são necessários corrigir na mão Pronto, agora apague a(s) classe(s) que não deseja mais.

Exemplo de UPDATE com SELECT em uma outra tabela

       Nesse post rápido eu trago o exemplo de um UPDATE com dados de um SELECT em outra tabela. Note que o where faz ligação entre a tabela do update e a tabela do FROM. Isso é importante para evitar que todas as linhas fiquem com dados repetidos.


update t_agendamento set id_paciente = paciente.id_paciente from t_agendamento agc inner join t_paciente paciente on agc.num_prontuario = paciente.num_prontuario where agc.id_agendamento = t_agendamento.id_agendamento