From d1c4cd526845aad56c5b0a3e20454638bbc7fecc Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 29 Jun 2015 10:48:34 +1200 Subject: Merge commands implmentation (fix #1271) --- src/org/traccar/BaseProtocol.java | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/org/traccar/BaseProtocol.java (limited to 'src/org/traccar/BaseProtocol.java') diff --git a/src/org/traccar/BaseProtocol.java b/src/org/traccar/BaseProtocol.java new file mode 100644 index 000000000..f8bf7ef30 --- /dev/null +++ b/src/org/traccar/BaseProtocol.java @@ -0,0 +1,40 @@ +package org.traccar; + +import org.traccar.database.ActiveDevice; +import org.traccar.http.commands.CommandType; +import org.traccar.protocol.commands.CommandTemplate; +import org.traccar.http.commands.GpsCommand; + +import java.util.HashMap; +import java.util.Map; + +public abstract class BaseProtocol implements Protocol { + + private final String name; + private Map commandTemplates = new HashMap(); + + public BaseProtocol(String name) { + this.name = name; + this.loadCommandsTemplates(commandTemplates); + } + + public String getName() { + return name; + } + + @Override + public void sendCommand(ActiveDevice activeDevice, GpsCommand command) { + CommandTemplate commandMessage = commandTemplates.get(command.getType()); + + if (commandMessage == null) { + throw new RuntimeException("The command " + command + " is not yet supported in protocol " + this.getName()); + } + + Object response = commandMessage.applyTo(activeDevice, command); + + activeDevice.write(response); + } + + protected abstract void loadCommandsTemplates(Map templates); + +} -- cgit v1.2.3