historicoGPS.setMarcaTemporal(entrada.getMarcaTemporal());
final Recurso recurso = RecursoConsultas.getbyDispositivo(entrada.getOrigen());
if (recurso == null) {
throw new MessageProcessingException("No encuentro el recurso "
+ entrada.getOrigen());
}
if (recurso.getHabilitado()) {
historicoGPS.setTipoRecurso(recurso.getTipo());
if (recurso.getFlotas() == null) {
throw new MessageProcessingException("El recurso "
+ recurso + " no tiene asignada ninguna flota.");
}
historicoGPS.setSubflota(recurso.getFlotas().getNombre());
historicoGPS.setRecurso(recurso.getIdentificador());
Double y = new Double(campos[2].substring(0, campos[2].indexOf(',')));
Double x = new Double(campos[3].substring(0, campos[3].indexOf(',')));
// Las posiciones 0.0 se descartan.
// Deshabilitado por instrucciones de MCGarcia.
// if (x.equals(0.0d) || y.equals(0.0d)) {
// if (log.isTraceEnabled()) {
// log.trace("Posicón 0.0N,0.0W recibida de " + recurso.getDispositivo() + "recibida y descartada.");
// }
// return;
// }
if (campos[2].endsWith("S")) {
y = -y;
}
if (campos[3].endsWith("W")) {
x = -x;
}
final GeometryFactory factory = new GeometryFactory();
final com.vividsolutions.jts.geom.Geometry geom = factory.createPoint(new Coordinate(x, y));
geom.setSRID(4326);
//
// final String sourceSRID = "EPSG:4326";
// final String targetSRID = "EPSG:3395";
//
// Geometry geom = transform(geom, sourceSRID, targetSRID);
historicoGPS.setGeom(geom);
historicoGPS.setPosX(geom.getCentroid().getX());
historicoGPS.setPosY(geom.getCentroid().getY());
HistoricoGPSAdmin.saveOrUpdate(historicoGPS);
recurso.setHistoricoGps(historicoGPS);
RecursoAdmin.saveOrUpdate(recurso);
if (log.isDebugEnabled()) {
log.debug("Guardada posicion" + historicoGPS);
}
} else {
log.error("Hay un recurso deshabilitado enviando posiciones: "
+ recurso);
}
} catch (Throwable t) {
log.error(t, t);
throw new MessageProcessingException(
"Error al procesar un mensaje de posicion" + t, entrada);
} finally {
if (log.isDebugEnabled()) {
log.debug("Finalizado procesamiento de " + entrada);
}