aboutsummaryrefslogtreecommitdiff
path: root/src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java')
-rw-r--r--src/net/sourceforge/opentracking/protocol/xexun/XexunProtocolDecoder.java44
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;
}