Author: rezan
Date: Wed Jul 23 02:11:00 2014
New Revision: 1612746
URL: http://svn.apache.org/r1612746
Log:
classifyDevice() returns Device object
Added:
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/Device.java
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/parser/JsonParser.java
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java
Wed Jul 23 02:11:00 2014
@@ -24,6 +24,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.devicemap.data.Device;
import org.apache.devicemap.loader.LoaderOption;
import org.apache.devicemap.data.DeviceType;
@@ -38,14 +39,15 @@ public class DeviceMapClient {
private Map<String, DeviceType> devices;
private Map<String, List<DeviceType>> patterns;
- private Map<String, String> unknown;
+ private final Device unknown;
public DeviceMapClient() {
devices = null;
patterns = null;
- unknown = new HashMap<String, String>();
- unknown.put("id", Constants.UNKNOWN_ID);
- unknown = Collections.unmodifiableMap(unknown);
+ Map<String, String> uAttributes = new HashMap<String, String>();
+ uAttributes.put("id", Constants.UNKNOWN_ID);
+ uAttributes = Collections.unmodifiableMap(uAttributes);
+ unknown = new Device(Constants.UNKNOWN_ID, uAttributes);
}
public void initDeviceData(LoaderOption option) throws IOException {
@@ -102,7 +104,7 @@ public class DeviceMapClient {
String winnerStr = "";
if (text == null) {
- return getUnknownDevice();
+ return null;
}
Util.debugLog("classify: '" + text + "'");
@@ -160,12 +162,16 @@ public class DeviceMapClient {
Util.debugLog("Result: " + winner);
return winner.getAttributes();
} else {
- return getUnknownDevice();
+ return null;
}
}
-
- private Map<String, String> getUnknownDevice() {
- return unknown;
+
+ public Device classifyDevice(String text) {
+ Map<String, String> m = classify(text);
+ if(m == null) {
+ return unknown;
+ }
+ return new Device(m.get("id"), m);
}
public int getDeviceCount() {
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java
Wed Jul 23 02:11:00 2014
@@ -21,10 +21,10 @@ package org.apache.devicemap.cmd;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
-import java.util.Map;
import org.apache.devicemap.Constants;
import org.apache.devicemap.DeviceMapClient;
+import org.apache.devicemap.data.Device;
import org.apache.devicemap.loader.LoaderOption;
public class Main {
@@ -96,11 +96,11 @@ public class Main {
long startn = System.nanoTime();
- Map<String, String> m = client.classify(test);
+ Device device = client.classifyDevice(test);
long diffn = (System.nanoTime() - startn) / 1000;
- System.out.println("Test lookup: '" + m.get("id") + "' time: " + diffn
+ "usec");
+ System.out.println("Test lookup: '" + device.getId() + "' time: " +
diffn + "usec");
if (parameter == null) {
} else if ((new File(parameter)).exists()) {
@@ -117,14 +117,14 @@ public class Main {
startn = System.nanoTime();
- m = client.classify(line);
+ device = client.classifyDevice(line);
diffn = System.nanoTime() - startn;
total += diffn;
count++;
- System.out.println("Text lookup " + count + ": '" +
m.get("id") + "' time: " + (diffn / 1000) + "usec");
+ System.out.println("Text lookup " + count + ": '" +
device.getId() + "' time: " + (diffn / 1000) + "usec");
}
in.close();
@@ -141,20 +141,13 @@ public class Main {
startn = System.nanoTime();
- m = client.classify(parameter);
+ device = client.classifyDevice(parameter);
diffn = System.nanoTime() - startn;
- System.out.println("Text lookup: '" + m.get("id") + "' time: " +
(diffn / 1000) + "usec");
+ System.out.println("Text lookup: '" + device.getId() + "' time: "
+ (diffn / 1000) + "usec");
- System.out.print("DeviceMap attributes => ");
-
- for (String key : m.keySet()) {
- String value = m.get(key);
- System.out.print(key + ": '" + value + "' ");
- }
-
- System.out.println("");
+ System.out.println("DeviceMap JSON => " + device.toString());
}
}
}
Added:
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/Device.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/Device.java?rev=1612746&view=auto
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/Device.java
(added)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/Device.java
Wed Jul 23 02:11:00 2014
@@ -0,0 +1,58 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+package org.apache.devicemap.data;
+
+import java.util.Map;
+import org.apache.devicemap.loader.parser.JsonParser;
+
+public class Device {
+
+ private final String id;
+
+ private final Map<String, String> attributes;
+
+ public Device(String id, Map<String, String> attributes) {
+ this.id = id;
+ this.attributes = attributes;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append('{');
+ sb.append(JsonParser.outputKeyValue("id",id)).append(',');
+
sb.append(JsonParser.outputString("attributes")).append(':').append(JsonParser.outputMap(attributes));
+ sb.append('}');
+
+ return sb.toString();
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getAttribute(String key) {
+ return attributes.get(key);
+ }
+
+ public Map<String, String> getAttributes() {
+ return attributes;
+ }
+}
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/parser/JsonParser.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/parser/JsonParser.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/parser/JsonParser.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/parser/JsonParser.java
Wed Jul 23 02:11:00 2014
@@ -61,7 +61,7 @@ public class JsonParser {
} else {
sb.append(',');
}
- if(format) {
+ if (format) {
sb.append(outputString(value));
} else {
sb.append(value);
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java
Wed Jul 23 02:11:00 2014
@@ -19,7 +19,7 @@
package org.apache.devicemap;
import java.io.FileNotFoundException;
-import java.util.Map;
+import org.apache.devicemap.data.Device;
import org.junit.Assert;
import org.junit.Test;
@@ -35,9 +35,9 @@ public class DeviceMapClientFileTestOpti
String test = "Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380
Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile
Safari/524.15.0";
- Map<String, String> m = client.classify(test);
+ Device device = client.classifyDevice(test);
- Assert.assertEquals("test ua not htc aria", "HTC Aria", m.get("id"));
+ Assert.assertEquals("test ua not htc aria", "HTC Aria",
device.getId());
}
@Test
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java
Wed Jul 23 02:11:00 2014
@@ -19,7 +19,7 @@
package org.apache.devicemap;
import java.io.FileNotFoundException;
-import java.util.Map;
+import org.apache.devicemap.data.Device;
import org.junit.Assert;
import org.junit.Test;
@@ -35,9 +35,9 @@ public class DeviceMapClientJarTest {
String test = "Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380
Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile
Safari/524.15.0";
- Map<String, String> m = client.classify(test);
+ Device device = client.classifyDevice(test);
- Assert.assertEquals("test ua not htc aria", "HTC Aria", m.get("id"));
+ Assert.assertEquals("test ua not htc aria", "HTC Aria",
device.getId());
}
@Test
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java
Wed Jul 23 02:11:00 2014
@@ -22,7 +22,7 @@ import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Map;
+import org.apache.devicemap.data.Device;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -69,8 +69,8 @@ public class DeviceMapClientTest {
@Test
public void DeviceMapClientTest() throws Exception {
- Map<String, String> m = client.classify(testString);
+ Device device = client.classifyDevice(testString);
- Assert.assertEquals("classification failed for '" + testString + "'",
resultId, m.get("id"));
+ Assert.assertEquals("classification failed for '" + testString + "'",
resultId, device.getId());
}
}
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java
Wed Jul 23 02:11:00 2014
@@ -18,7 +18,7 @@
*/
package org.apache.devicemap;
-import java.util.Map;
+import org.apache.devicemap.data.Device;
import org.junit.Assert;
import org.junit.Test;
@@ -40,7 +40,7 @@ public class DeviceMapClientUnitTest {
DeviceMapClient uninit = new DeviceMapClient();
try {
- Map<String, String> m = uninit.classify("");
+ uninit.classifyDevice("");
Assert.fail("Uninitialized device index exception expected");
} catch (RuntimeException re) {
//pass
@@ -51,25 +51,25 @@ public class DeviceMapClientUnitTest {
@Test
public void DeviceMapClientUnknownTest() throws Exception {
- Map<String, String> m = client.classify("");
+ Device device = client.classifyDevice("");
- Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID,
m.get("id"));
+ Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID,
device.getId());
- m = client.classify(null);
+ device = client.classifyDevice(null);
- Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID,
m.get("id"));
+ Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID,
device.getId());
}
@Test
public void DeviceMapClientMutateTest() throws Exception {
String test = "Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380
Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile
Safari/524.15.0";
- Map<String, String> m = client.classify(test);
+ Device device = client.classifyDevice(test);
- Assert.assertEquals("test ua not htc aria", "HTC Aria", m.get("id"));
+ Assert.assertEquals("test ua not htc aria", "HTC Aria",
device.getId());
try {
- m.put("mutate", "true");
+ device.getAttributes().put("mutate", "true");
Assert.fail("UnsupportedOperationException expected when changing
result map");
} catch (UnsupportedOperationException uoe) {
//pass
@@ -80,12 +80,12 @@ public class DeviceMapClientUnitTest {
@Test
public void DeviceMapClientMutateUnknownTest() throws Exception {
- Map<String, String> m = client.classify("unknown");
+ Device device = client.classifyDevice("unknown");
- Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID,
m.get("id"));
+ Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID,
device.getId());
try {
- m.put("mutate", "true");
+ device.getAttributes().put("mutate", "true");
Assert.fail("UnsupportedOperationException expected when changing
result map");
} catch (UnsupportedOperationException uoe) {
//pass
Modified:
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java
URL:
http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java?rev=1612746&r1=1612745&r2=1612746&view=diff
==============================================================================
---
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java
(original)
+++
incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java
Wed Jul 23 02:11:00 2014
@@ -19,7 +19,7 @@
package org.apache.devicemap;
import java.io.FileNotFoundException;
-import java.util.Map;
+import org.apache.devicemap.data.Device;
import org.junit.Assert;
import org.junit.Test;
@@ -35,9 +35,9 @@ public class DeviceMapClientUrlTestOptio
String test = "Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380
Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile
Safari/524.15.0";
- Map<String, String> m = client.classify(test);
+ Device device = client.classifyDevice(test);
- Assert.assertEquals("test ua not htc aria", "HTC Aria", m.get("id"));
+ Assert.assertEquals("test ua not htc aria", "HTC Aria",
device.getId());
}
@Test
@@ -48,9 +48,9 @@ public class DeviceMapClientUrlTestOptio
String test = "Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380
Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile
Safari/524.15.0";
- Map<String, String> m = client.classify(test);
+ Device device = client.classifyDevice(test);
- Assert.assertEquals("test ua not htc aria", "HTC Aria", m.get("id"));
+ Assert.assertEquals("test ua not htc aria", "HTC Aria",
device.getId());
}
@Test