package com.produban.openbus.console.web; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; 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.ResponseBody; import com.produban.openbus.console.domain.Estado; import com.produban.openbus.console.domain.MetricaOnLine; import com.produban.openbus.console.domain.QueryCep; import com.produban.openbus.console.domain.TableCep; import com.produban.openbus.console.repository.EstadoRepository; import com.produban.openbus.console.service.MetricaOnLineService; import com.produban.openbus.console.service.OrigenEstructuradoService; import com.produban.openbus.console.service.QueryCepService; import com.produban.openbus.console.service.TableCepService; @RequestMapping("/online/**") @Controller public class ServiceOnLineController { private static Logger LOG = Logger.getLogger(ServiceOnLineController.class); @Autowired private OrigenEstructuradoService origenEstructuradoService; @Autowired private MetricaOnLineService metricaOnLineService; @Autowired private QueryCepService queryCepService; @Autowired private TableCepService tableCepService; @Autowired private EstadoRepository estadoRepository; private final static String ESTADO_ONLINE_QUERY_BORRADA = "108"; private final static String ESTADO_ONLINE_TABLA_BORRADA = "308"; @RequestMapping(value = "/findAllOnlineMetrics", method = RequestMethod.GET) public @ResponseBody List<MetricaOnLine> findAllOnlineMetrics(Model model) { return metricaOnLineService.findAllMetricaOnLines(); } @RequestMapping(value = "/updateOnLineMetric", method = RequestMethod.PUT, consumes="application/json") public @ResponseBody MetricaOnLine updateOnLineMetric(@RequestBody final MetricaOnLine metricaOnLine) { LOG.info("UPDATE BBDD running...."); List<Estado> lstEstado = estadoRepository.findEstadoByCode(metricaOnLine.getEstado().getCode()); metricaOnLine.setEstado(lstEstado.get(0)); Set<QueryCep> sQueryCep = new HashSet<QueryCep>(); Set<TableCep> sTableCep = new HashSet<TableCep>(); for (TableCep tableCep : metricaOnLine.getHsTableCep()){ lstEstado = estadoRepository.findEstadoByCode(tableCep.getEstado().getCode()); tableCep.setEstado(lstEstado.get(0)); if (! tableCep.getEstado().getCode().equals(ESTADO_ONLINE_TABLA_BORRADA)){ sTableCep.add(tableCep); } } metricaOnLine.setHsTableCep(sTableCep); for (QueryCep queryCep : metricaOnLine.getHsQueryCep()){ lstEstado = estadoRepository.findEstadoByCode(queryCep.getEstado().getCode()); queryCep.setEstado(lstEstado.get(0)); if (! queryCep.getEstado().getCode().equals(ESTADO_ONLINE_QUERY_BORRADA)){ sQueryCep.add(queryCep); } } metricaOnLine.setHsQueryCep(sQueryCep); lstEstado = estadoRepository.findEstadoByCode(metricaOnLine.getStreamCep().getEstado().getCode()); metricaOnLine.getStreamCep().setEstado(lstEstado.get(0)); metricaOnLineService.updateMetricaOnLine(metricaOnLine); LOG.info("UPDATE BBDD done"); return metricaOnLine; } @RequestMapping(value = "/deleteOnLineMetric", method = RequestMethod.DELETE, consumes="application/json") public @ResponseBody MetricaOnLine deleteOnlineMetric(@RequestBody final MetricaOnLine metricaOnLine) { LOG.info("DELETE BBDD running...."); metricaOnLineService.deleteMetricaOnLine(metricaOnLine); LOG.info("DELETE BBDD done"); return null; } }