aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/protocol/Gps103ProtocolEncoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/protocol/Gps103ProtocolEncoder.java')
-rw-r--r--src/org/traccar/protocol/Gps103ProtocolEncoder.java41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/org/traccar/protocol/Gps103ProtocolEncoder.java b/src/org/traccar/protocol/Gps103ProtocolEncoder.java
index d7cddd1ba..27fea8237 100644
--- a/src/org/traccar/protocol/Gps103ProtocolEncoder.java
+++ b/src/org/traccar/protocol/Gps103ProtocolEncoder.java
@@ -21,42 +21,43 @@ import org.traccar.model.Command;
public class Gps103ProtocolEncoder extends BaseProtocolEncoder {
- /*@Override
- protected void initCommandsTemplates(Map<CommandType, CommandTemplate> templates) {
- templates.put(CommandType.FIX_POSITIONING, new StringCommandTemplate("**,imei:[%s],C,[%s]", Command.UNIQUE_ID, FixPositioningCommand.FREQUENCY)
- .addConverter(Duration.class, new CommandValueConversion<Duration>() {
- @Override
- public String convert(Duration value) {
- return String.format("%02d%s", value.getValue(), value.getUnit().getCommandFormat());
- }
- }));
- }*/
-
- private String formatCommand(String format, Command command) {
+ private String formatCommand(Command command, String format, String... keys) {
- String result = format;
+ String result = String.format(format, (Object[]) keys);
- result = result.replaceAll("\\{uniqueId}", getUniqueId(command.getDeviceId()));
+ result = result.replaceAll("\\{" + Command.KEY_UNIQUE_ID + "}", getUniqueId(command.getDeviceId()));
for (Map.Entry<String, Object> entry : command.getOther().entrySet()) {
- result = result.replaceAll("\\{" + entry.getKey() + "}", entry.getValue().toString());
+ String value;
+ if (entry.getKey().equals(Command.KEY_FREQUENCY)) {
+ long frequency = (Long) entry.getValue();
+ if (frequency / 60 / 60 > 0) {
+ value = String.format("%02dh", frequency / 60 / 60);
+ } else if (frequency / 60 > 0) {
+ value = String.format("%02dm", frequency / 60);
+ } else {
+ value = String.format("%02ds", frequency);
+ }
+ } else {
+ value = entry.getValue().toString();
+ }
+ result = result.replaceAll("\\{" + entry.getKey() + "}", value);
}
return result;
}
-
@Override
protected Object encodeCommand(Command command) {
switch (command.getType()) {
case Command.TYPE_POSITION_STOP:
- return formatCommand("**,imei:{uniqueId},A", command);
+ return formatCommand(command, "**,imei:{%s},A", Command.KEY_UNIQUE_ID);
case Command.TYPE_POSITION_FIX:
- return formatCommand("**,imei:{uniqueId},C,{time}", command); // TODO
+ return formatCommand(command, "**,imei:{%s},C,{%s}", Command.KEY_UNIQUE_ID, Command.KEY_FREQUENCY);
case Command.TYPE_ENGINE_STOP:
- return formatCommand("**,imei:{uniqueId},K", command);
+ return formatCommand(command, "**,imei:{%s},K", Command.KEY_UNIQUE_ID);
case Command.TYPE_ENGINE_RESUME:
- return formatCommand("**,imei:{uniqueId},J", command);
+ return formatCommand(command, "**,imei:{%s},J", Command.KEY_UNIQUE_ID);
}
return null;