Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Spring MVC - Duvidas sobre Controller

Boa tarde, Pessoal.

Tenho um controller que gerencia uma pagina com uma lista e preciso aplicar filtros a essa lista (segue o código da classe), ela possui dois atributos de classe, duas lista, minha duvida é a seguinte, quando a aplicação estiver funcionando e por exemplo tiver 10 usuários ao mesmo tempo o controller é o mesmo para todos certo ? tipo se um dos usuários aplicar um filtro a essa lista vai afetar os demais ? e possível criar uma variável que apenas os usuário especifico possa usar dentro do controller, algo que o spring possa gerenciar ?

@Controller
@RequestMapping("/Equipamento")
public class EquipamentoController {

    @Autowired
    private EquipamentoRepository equipamentoRepository;
    @Autowired
    private ClienteRepository clienteRepository;
    @Autowired
    private ImagemRepository imagemRepository;
    @Autowired
    private ServicoRepository servicoRepository;

    //Listas que serão filtradas    
    private List<Equipamento> listaDeEquipamentos;
    private List<Cliente> clientes; 

    @RequestMapping(method = RequestMethod.GET, value = "/Lista")
    public String listaDeEquipamentos(Pesquisar pesquisar, Validade validade, Model model) {
        listaDeEquipamentos = equipamentoRepository.findAllWithServices();
        clientes = clienteRepository.findAll();
        listaDeEquipamentos.sort(Comparator.comparing(Equipamento::getId).thenComparing(Equipamento::getId).reversed());
        for (int i = 0; i < listaDeEquipamentos.size(); i++) {
            for (Servico servico : listaDeEquipamentos.get(i).getServicos()) {
                if (!servico.getForadeuso()) {
                    listaDeEquipamentos.get(i).setValidade(DiferencaEntreDataToList.validade(servico.getValidade()));
                }
            }
        }        
        model.addAttribute("listaDeEquipamentos", listaDeEquipamentos);
        model.addAttribute("clientes", clientes);
        return "lista_de_equipamentos";
    }

    @RequestMapping(method = RequestMethod.GET, value = "/Lista/Default")
    public String listaDefault(Pesquisar pesquisar, Validade validade, Model model) {
        model.addAttribute("listaDeEquipamentos", listaDeEquipamentos);
        model.addAttribute("clientes", clientes);
        return "lista_de_equipamentos";
    }

    @RequestMapping(method = RequestMethod.GET, value = "/Lista/Proprietario/{id}")
    public String listaPorProprietario(@PathVariable Long id, Pesquisar pesquisar, Validade validade, Model model) {
        ArrayList<Equipamento> listaFiltrada;
        listaFiltrada = (ArrayList<Equipamento>) listaDeEquipamentos.stream().collect(Collectors.toList());
        listaFiltrada = (ArrayList<Equipamento>) listaFiltrada.stream()
                .filter(e -> e.getCliente().getId() == id).collect(Collectors.toList());
        model.addAttribute("listaDeEquipamentos", listaFiltrada);
        model.addAttribute("clientes", clientes);
        return "lista_de_equipamentos";
    }

    @RequestMapping(method = RequestMethod.POST, value = "/Lista/Validade")
    public String listaPorValidade(@Valid Validade validade, Pesquisar pesquisar, BindingResult result, Model model) {
        ArrayList<Equipamento> listaFiltrada;
        List<Servico> servicos = servicoRepository.findServicosPorValidade(validade.getDataInicial(), validade.getDataFinal());
        listaFiltrada = new ArrayList<Equipamento>();
        for(Servico servico : servicos) {
            if(!servico.getForadeuso()) {
                listaFiltrada.add(servico.getEquipamento());
            }
        }
        model.addAttribute("listaDeEquipamentos", listaFiltrada);
        model.addAttribute("clientes", clientes);
        return "lista_de_equipamentos";
    }

    @RequestMapping(method = RequestMethod.POST, value = "/Lista/Pesquisar")
    public String pesquisar(Pesquisar pesquisar, Validade validade, Model model) {
        ArrayList<Equipamento> listaFiltrada;
        listaFiltrada = new ArrayList<>();
        try {
            listaFiltrada = (ArrayList<Equipamento>) listaFiltrada.stream()
                    .filter(e -> e.getId() == Long.parseLong(pesquisar.getDescricao())).collect(Collectors.toList());
        } catch (Exception e2) {
            // Não faz nada casso a pesquisa não apresente resultado
        }    
        listaFiltrada.addAll((ArrayList<Equipamento>) listaDeEquipamentos.stream()
                .filter(e -> e.getNome().contains(pesquisar.getDescricao())).collect(Collectors.toList()));

        listaFiltrada.addAll((ArrayList<Equipamento>) listaDeEquipamentos.stream()
                .filter(e -> e.getIdentificacao().contains(pesquisar.getDescricao())).collect(Collectors.toList()));

        listaFiltrada.addAll((ArrayList<Equipamento>) listaDeEquipamentos.stream()
                .filter(e -> e.getProjeto().contains(pesquisar.getDescricao())).collect(Collectors.toList()));    
        model.addAttribute("listaDeEquipamentos", listaFiltrada);
        return "lista_de_equipamentos";
    }
}
1 resposta
solução!

Resolvido...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software