From 8d49ced822a1ae5c8b3f065178116e95a4f55c85 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 4 Dec 2012 21:24:41 +1300 Subject: Added Navis protocol (fix #99) --- src/org/traccar/TrackerEventHandler.java | 58 ++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 26 deletions(-) (limited to 'src/org/traccar/TrackerEventHandler.java') diff --git a/src/org/traccar/TrackerEventHandler.java b/src/org/traccar/TrackerEventHandler.java index 6483e52e7..11cf41fad 100644 --- a/src/org/traccar/TrackerEventHandler.java +++ b/src/org/traccar/TrackerEventHandler.java @@ -15,6 +15,7 @@ */ package org.traccar; +import java.util.List; import org.jboss.netty.channel.*; import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler; import org.jboss.netty.handler.timeout.IdleStateEvent; @@ -37,36 +38,41 @@ public class TrackerEventHandler extends IdleStateAwareChannelHandler { super(); dataManager = newDataManager; } + + private void processSinglePosition(Position position) { + if (position == null) { + Log.info("null message"); + } else { + Log.info( + "id: " + position.getId() + + ", deviceId: " + position.getDeviceId() + + ", valid: " + position.getValid() + + ", time: " + position.getTime() + + ", latitude: " + position.getLatitude() + + ", longitude: " + position.getLongitude() + + ", altitude: " + position.getAltitude() + + ", speed: " + position.getSpeed() + + ", course: " + position.getCourse() + + ", power: " + position.getPower()); + } + + // Write position to database + try { + dataManager.addPosition(position); + } catch (Exception error) { + Log.info("Exception during query execution"); + Log.warning(error.getMessage()); + } + } @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { - if (e.getMessage() instanceof Position) { - - Position position = (Position) e.getMessage(); - - if (position == null) { - Log.info("null message"); - } else { - Log.info( - "id: " + position.getId() + - ", deviceId: " + position.getDeviceId() + - ", valid: " + position.getValid() + - ", time: " + position.getTime() + - ", latitude: " + position.getLatitude() + - ", longitude: " + position.getLongitude() + - ", altitude: " + position.getAltitude() + - ", speed: " + position.getSpeed() + - ", course: " + position.getCourse() + - ", power: " + position.getPower()); - } - - // Write position to database - try { - dataManager.addPosition(position); - } catch (Exception error) { - Log.info("Exception during query execution"); - Log.warning(error.getMessage()); + processSinglePosition((Position) e.getMessage()); + } else if (e.getMessage() instanceof List) { + List positions = (List) e.getMessage(); + for (Position position : positions) { + processSinglePosition(position); } } } -- cgit v1.2.3