como criar um filtro java com spring mongodb e Criteria

11/05/2016

0

Boa Tarde amigos!


Estou criando um filtro no java com spring e criteria esse filtro tem que pegar dados de uma lista! vou colocar o codigo abaixo da controler e do repository o retorno na controller esta vindo vazio com os valores da lista é como se ele nao estivesse entrando dentro da lista.

Essa é minha controller

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.esocialmatic.common.http.JsonResponse;
import com.esocialmatic.common.http.JsonResponse.Status;
import com.esocialmatic.esocial.entity.general.DashboardFiltro;
import com.esocialmatic.esocial.entity.general.Evento;
import com.esocialmatic.esocial.repository.DashboardFiltroRepository;
import com.esocialmatic.esocial.repository.DashboardImplRepository;
import com.esocialmatic.esocial.repository.EventoRepository;
import com.esocialmatic.profile.bean.ProfileBean;
import com.esocialmatic.profile.entity.Empresa;
import com.esocialmatic.profile.repository.EmpresaRepository;

@Controller
@RestController
@RequestMapping("/dashboardFiltro")
public class DashboardFiltroController {
	
	private static final Logger LOGGER = Logger.getLogger(DashboardFiltroController.class);
	
	@Autowired
	private ProfileBean profileBean;
	
	@Autowired
	private DashboardImplRepository dashboardImplRepository;

	@RequestMapping(value = "/filtro.action", method = RequestMethod.POST, headers = "Accept=*/*", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
	public @ResponseBody JsonResponse<List<Evento>> filtro(@RequestBody DashboardFiltro dashboardFiltro){
	
		LOGGER.info("FILTRO - START");	
			
		LOGGER.info("Dashboard :" + dashboardFiltro);
		
		final List<Evento> listStatusInt = dashboardImplRepository.getFiltro(dashboardFiltro);
		
		LOGGER.info("list status :" + listStatusInt);
		
		return  new JsonResponse<List<Evento>>(Status.OK , listStatusInt);
		

	}
	
}




Essa a Repository que a controller esta chamando


import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;
import com.esocialmatic.esocial.entity.general.DashboardFiltro;
import com.esocialmatic.esocial.entity.general.Evento;
import com.esocialmatic.esocial.entity.tipo.TipoEvento;
import com.esocialmatic.esocial.entity.tipo.TipoStatus;

@Repository
public class DashboardImplRepository {

	
	@Autowired
	private MongoTemplate profileMongoTemplate;
	
	public List<Evento> getFiltro(DashboardFiltro dashboardFiltro){
			
		Collection<Integer> listStatusInt = new ArrayList<>(); 
		
		
		Collection<TipoStatus> listTipoStatus = dashboardFiltro.getStatus();
		
		for (TipoStatus tipoStatus : listTipoStatus) {
			listStatusInt.add(tipoStatus.getNumVal());
			
		}
		
		System.out.println(listStatusInt);
		
		Collection<Integer> listEventoInt = new ArrayList<>();
		List<TipoEvento> listEventoStatus = dashboardFiltro.getEvento();
		for (TipoEvento tipoEvento : listEventoStatus) {
			listEventoInt.add(tipoEvento.getNumVal());
		}
		
		System.out.println(listEventoInt);
		
		 final Criteria criteria = Criteria.where("status").in(listStatusInt);
		
			return profileMongoTemplate.find(new Query(criteria), Evento.class);
	}
	
}



Esse é o erro que esta dando

2016-05-11 14:14:16 INFO DashboardFiltroController:54 - [List - DashboardFiltro] - START
2016-05-11 14:14:16 INFO DashboardFiltroController:59 - [List - DashboardFiltro] - STOP
2016-05-11 14:14:20 INFO DashboardFiltroController:54 - [List - DashboardFiltro] - START
2016-05-11 14:14:20 INFO DashboardFiltroController:59 - [List - DashboardFiltro] - STOP
1452540224318
88.353.241/0001-65
Resultado da Empresa: Empresa [id=572b82f45c0e6e16352418f8, nome=Walmart, email=walmart@hotmail.com, webSite=walmart.gov, tipoInscricao=CNPJ, numeroInscricao=88.353.241/0001-65, codigoContexto=1452540224318]
2016-05-11 14:15:07 INFO DashboardFiltroController:160 - FILTRO - START
2016-05-11 14:15:07 INFO DashboardFiltroController:162 - Dashboard :DashboardFiltro [id=null, nome=null, codigoContexto=null, dtInicio=2001-01-01, dtFim=2016-05-10, status=[VALIDADO, ERRO, AGUARDOENVIO, AGUARDORETORNOENVIO, ENVIOSUCESSO], evento=[S1000, S1005, S1010, S1020, S1030, S1040, S1050, S1060, S1070, S1080, S1200, S1202, S1210, S1220, S1250, S1260, S1270, S1280, S1298, S1299, S1300, S2100, S2190, S2200, S2205, S2206, S2210, S2220, S2230, S2240, S2241, S2250, S2298, S2299, S2300, S2305, S2399, S3000, S4000, S5001, S5002, S5011, S5012], listaEmpresas=[88.353.241/0001-65]]
[5, 13, 25, 38, 50]
[1000, 1005, 1010, 1020, 1030, 1040, 1050, 1060, 1070, 1080, 1200, 1202, 1210, 1220, 1250, 1260, 1270, 1280, 1298, 1299, 1300, 2100, 2190, 2200, 2205, 2206, 2210, 2220, 2230, 2240, 2241, 2250, 2298, 2299, 2300, 2305, 2399, 3000, 4000, 5001, 5002, 5011, 5012]
2016-05-11 14:15:07 INFO DashboardFiltroController:166 - list status :[ ]


A Liusta de status esta sendo retornada vazia!
Rodolfo Alves

Rodolfo Alves

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar