You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devicemap.apache.org by re...@apache.org on 2013/06/25 18:28:25 UTC

svn commit: r1496530 - in /incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client: DeviceMapClient.java data/Device.java data/Pattern.java loaders/Loader.java

Author: rezan
Date: Tue Jun 25 16:28:24 2013
New Revision: 1496530

URL: http://svn.apache.org/r1496530
Log:
multiple patterns for a single device

Added:
    incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Pattern.java
Modified:
    incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/DeviceMapClient.java
    incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Device.java
    incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/loaders/Loader.java

Modified: incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/DeviceMapClient.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/DeviceMapClient.java?rev=1496530&r1=1496529&r2=1496530&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/DeviceMapClient.java (original)
+++ incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/DeviceMapClient.java Tue Jun 25 16:28:24 2013
@@ -25,6 +25,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.devicemap.client.data.Pattern;
 
 /**
  *
@@ -48,14 +49,10 @@ public class DeviceMapClient {
     
     private void createIndex() {
         for(Device device:devices.values()) {
-            List<String> dpatterns=device.getPatterns();
-            
-            if(dpatterns==null) {
-                continue;
-            }
-            
-            for(String pattern:dpatterns) {
-                patterns.put(pattern, device);
+            for(List<String> patternset:device.getPatterns().getPatterns()) {
+                for(String pattern:patternset) {
+                    patterns.put(pattern, device);
+                }
             }
         }
     }
@@ -69,7 +66,7 @@ public class DeviceMapClient {
             return null;
         }
         
-        Util.debugLog("classify: "+text+"'");
+        Util.debugLog("classify: '"+text+"'");
         
         String[] parts=text.split(" |-|_|/|\\\\");
         
@@ -82,20 +79,29 @@ public class DeviceMapClient {
                 
                 if(device!=null) {
                     hits.put(pattern, device);
+                    
+                    Util.debugLog("Hit found: "+pattern+" => "+device.getId());
                 }
             }
         }
         
-        hits:
         for(String hit:hits.keySet()) {
             Device device=hits.get(hit);
             
-            if("TwoStepDeviceBuilder".equals(device.getBuilder())) {
-                for(String pattern:device.getPatterns()) {
+            boolean found=false;
+            patterns:
+            for(List<String> patternset:device.getPatterns().getPatterns()) {
+                for(String pattern:patternset) {
                     if(!hits.containsKey(pattern)) {
-                        continue hits;
+                        continue patterns;
                     }
                 }
+                found=true;
+                break;
+            }
+
+            if(!found) {
+                continue;
             }
             
             Util.debugLog("Hit candidate: "+hit+" => "+device.getId());
@@ -115,6 +121,8 @@ public class DeviceMapClient {
         }
         
         if(winner!=null) {
+            Util.debugLog("Result: "+winner);
+            
             return winner.getAttributes();
         } else {
             return null;

Modified: incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Device.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Device.java?rev=1496530&r1=1496529&r2=1496530&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Device.java (original)
+++ incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Device.java Tue Jun 25 16:28:24 2013
@@ -34,15 +34,19 @@ public class Device {
     
     private String builder;
     
-    private List<String> patterns;
+    private Pattern pattern;
     
     private Map<String,String> attributes;
     
+    public Device() {
+        pattern=new Pattern();
+    }
+    
     public String toString() {
         return "id='"+id+"'," +
                "parentId='"+parentId+"',"+
                "builder='"+builder+"',"+
-               "patterns="+patterns+","+
+               "pattern="+pattern+","+
                "attribytes="+attributes+".";
     }
 
@@ -70,12 +74,8 @@ public class Device {
         this.builder = builder;
     }
 
-    public List<String> getPatterns() {
-        return patterns;
-    }
-
-    public void setPatterns(List<String> patterns) {
-        this.patterns = patterns;
+    public Pattern getPatterns() {
+        return pattern;
     }
 
     public Map<String,String> getAttributes() {

Added: incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Pattern.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Pattern.java?rev=1496530&view=auto
==============================================================================
--- incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Pattern.java (added)
+++ incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/data/Pattern.java Tue Jun 25 16:28:24 2013
@@ -0,0 +1,61 @@
+/*
+   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.client.data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Reza Naghibi
+ */
+public class Pattern {
+    
+    private List<List<String>> patterns;
+    
+    public Pattern() {
+        patterns=new ArrayList<List<String>>();
+    }
+    
+    public String toString() {
+        return patterns.toString();
+    }
+    
+    public void setAndPattern(List<String> patterns) {
+        this.patterns.add(patterns);
+    }
+    
+    public void setOrPattern(List<String> patterns) {
+        for(String pattern:patterns) {
+            setPattern(pattern);
+        }
+    }
+    
+    public void setPattern(String pattern) {
+        List<String> single=new ArrayList<String>();
+        single.add(pattern);
+        patterns.add(single);
+    }
+    
+    public List<List<String>> getPatterns() {
+        return patterns;
+    }
+
+}

Modified: incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/loaders/Loader.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/loaders/Loader.java?rev=1496530&r1=1496529&r2=1496530&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/loaders/Loader.java (original)
+++ incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/loaders/Loader.java Tue Jun 25 16:28:24 2013
@@ -101,7 +101,12 @@ public class Loader {
                     device=devices.get(XMLParser.getAttribute(tag,"id"));
                 } else if(tag.equals("</device>")) {
                     if(device!=null) {
-                        device.setPatterns(patterns);
+                        if(builder.equals("TwoStepDeviceBuilder")) {
+                            device.getPatterns().setAndPattern(patterns);
+                        } else {
+                            device.getPatterns().setOrPattern(patterns);
+                        }
+                        
                         device.setBuilder(builder);
                     } else {
                         Util.debugLog("ERROR: device not found: '"+id+"'");
@@ -110,7 +115,6 @@ public class Loader {
                     device=null;
                     id="";
                     patterns=new ArrayList<String>();
-                    
                 } else if(tag.equals("<value>")) {
                     String pattern=Util.normalize(parser.getTagValue());