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());