diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2015-06-29 10:48:34 +1200 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2015-06-29 10:48:34 +1200 |
commit | d1c4cd526845aad56c5b0a3e20454638bbc7fecc (patch) | |
tree | 565ee245ea0e98b88674b775147fbc6d3e1933cb /src/org/traccar/BaseProtocol.java | |
parent | 88b3f00f3855aa408c7859051efdcb5b37fe559f (diff) | |
download | trackermap-server-d1c4cd526845aad56c5b0a3e20454638bbc7fecc.tar.gz trackermap-server-d1c4cd526845aad56c5b0a3e20454638bbc7fecc.tar.bz2 trackermap-server-d1c4cd526845aad56c5b0a3e20454638bbc7fecc.zip |
Merge commands implmentation (fix #1271)
Diffstat (limited to 'src/org/traccar/BaseProtocol.java')
-rw-r--r-- | src/org/traccar/BaseProtocol.java | 40 |
1 files changed, 40 insertions, 0 deletions
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<CommandType, CommandTemplate> commandTemplates = new HashMap<CommandType, CommandTemplate>(); + + 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<CommandType, CommandTemplate> templates); + +} |