From 53486c0fe1bad6adb2324bd596e7528dcec82d26 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 2 Aug 2014 10:28:25 +0200 Subject: Improve extended formatter --- src/org/traccar/model/ExtendedInfoFormatter.java | 33 +++++++++++++++------- .../traccar/model/ExtendedInfoFormatterTest.java | 20 +++++++++++++ 2 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 test/org/traccar/model/ExtendedInfoFormatterTest.java diff --git a/src/org/traccar/model/ExtendedInfoFormatter.java b/src/org/traccar/model/ExtendedInfoFormatter.java index 99966569e..31aac7672 100644 --- a/src/org/traccar/model/ExtendedInfoFormatter.java +++ b/src/org/traccar/model/ExtendedInfoFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright 2013 Anton Tananaev (anton.tananaev@gmail.com) + * Copyright 2013 - 2014 Anton Tananaev (anton.tananaev@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,9 @@ */ package org.traccar.model; +import java.util.LinkedHashMap; +import java.util.Map; + /** * Format extended tracker status */ @@ -22,12 +25,11 @@ public class ExtendedInfoFormatter { private static final String rootNode = "info"; - private StringBuilder data; - + private final Map data; + public ExtendedInfoFormatter(String protocol) { - data = new StringBuilder(); - data.append("<").append(rootNode).append(">"); - data.append("").append(protocol).append(""); + data = new LinkedHashMap(); + data.put("protocol", protocol); } public void set(String key, Object value) { @@ -37,15 +39,26 @@ public class ExtendedInfoFormatter { return; } - data.append("<").append(key).append(">"); - data.append(value); - data.append(""); + data.put(key, value); } } @Override public String toString() { - return data.toString() + ""; + StringBuilder result = new StringBuilder(); + + result.append("<").append(rootNode).append(">"); + + for (Map.Entry entry : data.entrySet()) { + + result.append("<").append(entry.getKey()).append(">"); + result.append(entry.getValue()); + result.append(""); + } + + result.append(""); + + return result.toString(); } } diff --git a/test/org/traccar/model/ExtendedInfoFormatterTest.java b/test/org/traccar/model/ExtendedInfoFormatterTest.java new file mode 100644 index 000000000..31161e9e7 --- /dev/null +++ b/test/org/traccar/model/ExtendedInfoFormatterTest.java @@ -0,0 +1,20 @@ +package org.traccar.model; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class ExtendedInfoFormatterTest { + + @Test + public void testToString() throws Exception { + + ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter("test"); + extendedInfo.set("a", "1"); + extendedInfo.set("b", "2"); + extendedInfo.set("a", "3"); + + assertEquals(extendedInfo.toString(), "test32"); + + } + +} -- cgit v1.2.3