diff options
Diffstat (limited to 'src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java')
-rw-r--r-- | src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java | 44 |
1 files changed, 8 insertions, 36 deletions
diff --git a/src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java b/src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java index 226c6ac0f..39161f45b 100644 --- a/src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java +++ b/src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java @@ -15,22 +15,16 @@ */ package net.sourceforge.opentracking.protocol.xexun; -import java.util.List; -import java.util.Map; -import java.util.HashMap; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.text.ParseException; import org.jboss.netty.channel.Channel; -import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.handler.codec.oneone.OneToOneDecoder; import org.jboss.netty.channel.ChannelPipelineCoverage; import net.sourceforge.opentracking.Position; -import net.sourceforge.opentracking.Device; import net.sourceforge.opentracking.DataManager; import java.sql.SQLException; @@ -41,41 +35,21 @@ import java.sql.SQLException; public class XexunProtocolDecoder extends OneToOneDecoder { /** - * Init device table + * Data manager */ - public XexunProtocolDecoder(DataManager dataManager) throws SQLException { - - // Create map - setDevices(new HashMap()); - - if (dataManager != null) { - List deviceList = dataManager.readDevice(); - - for (Object device: deviceList) { - getDevices().put(((Device) device).getImei(), device); - } - } - } + private DataManager dataManager; /** - * Devices + * Init device table */ - private Map devices; - - public Map getDevices() { - return devices; - } - - private void setDevices(Map newDevices) { - devices = newDevices; + public XexunProtocolDecoder(DataManager newDataManager) { + dataManager = newDataManager; } /** * Regular expressions pattern */ static private Pattern pattern = Pattern.compile( - "," + // Old: [\\d]+, - "\\+?[\\d]+," + // Trusted phone number "GPRMC," + "([\\d]{2})([\\d]{2})([\\d]{2}).([\\d]{3})," + // Time (HHMMSS.SSS) "([AV])," + // Validity @@ -87,19 +61,17 @@ public class XexunProtocolDecoder extends OneToOneDecoder { "([\\d]+.[\\d]{2})," + // Course "([\\d]{2})([\\d]{2})([\\d]{2})," + // Date (DDMMYY) ".*imei:" + - "([\\d]+)," + // IMEI - ".*"); + "([\\d]+),"); // IMEI /** * Decode message */ protected Object decode( ChannelHandlerContext ctx, Channel channel, Object msg) - throws ParseException { + throws Exception { // Parse message String sentence = (String) msg; - //System.out.println("parse: " + sentence); Matcher parser = pattern.matcher(sentence); if (!parser.matches()) { throw new ParseException(null, 0); @@ -145,7 +117,7 @@ public class XexunProtocolDecoder extends OneToOneDecoder { // Get device by IMEI String imei = parser.group(index++); - position.setDeviceId(((Device) getDevices().get(imei)).getId()); + position.setDeviceId(dataManager.getDeviceByImei(imei).getId()); return position; } |