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";
}
}