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


Reply via email to