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 23:34:05 UTC
svn commit: r1496642 -
/incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/DeviceMapClient.java
Author: rezan
Date: Tue Jun 25 21:34:04 2013
New Revision: 1496642
URL: http://svn.apache.org/r1496642
Log:
duplicate patterns
Modified:
incubator/devicemap/trunk/devicemapjava/src/main/java/org/apache/devicemap/client/DeviceMapClient.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=1496642&r1=1496641&r2=1496642&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 21:34:04 2013
@@ -22,6 +22,7 @@ package org.apache.devicemap.client;
import org.apache.devicemap.client.data.Device;
import org.apache.devicemap.client.loaders.FileLoader;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -34,11 +35,11 @@ import org.apache.devicemap.client.data.
public class DeviceMapClient {
Map<String,Device> devices;
- Map<String,Device> patterns;
+ Map<String,List<Device>> patterns;
public DeviceMapClient() {
devices=new HashMap<String,Device>();
- patterns=new HashMap<String,Device>();
+ patterns=new HashMap<String,List<Device>>();
}
public void loadFromFolder(String folder) throws IOException {
@@ -50,15 +51,26 @@ public class DeviceMapClient {
private void createIndex() {
for(Device device:devices.values()) {
for(List<String> patternset:device.getPatterns().getPatterns()) {
- for(String pattern:patternset) {
- patterns.put(pattern, device);
+ for(int i=0;i<patternset.size();i++) {
+ String pattern=patternset.get(i);
+
+ //duplicate
+ if(patterns.get(pattern)!=null) {
+ if(i==(patternset.size()-1) && !patterns.get(pattern).contains(device)) {
+ patterns.get(pattern).add(device);
+ }
+ } else {
+ List<Device> single=new ArrayList<Device>();
+ single.add(device);
+ patterns.put(pattern, single);
+ }
}
}
}
}
public Map<String,String> classify(String text) {
- Map<String,Device> hits=new HashMap<String,Device>();
+ Map<String,List<Device>> hits=new HashMap<String,List<Device>>();
Device winner=null;
String winnerStr="";
@@ -75,36 +87,38 @@ public class DeviceMapClient {
for(int j=0;j<4 && (j+i)<parts.length;j++) {
pattern+=Util.normalize(parts[i+j]);
- Device device=patterns.get(pattern);
+ List<Device> dlist=patterns.get(pattern);
- if(device!=null) {
- hits.put(pattern, device);
+ if(dlist!=null) {
+ hits.put(pattern, dlist);
- Util.debugLog("Hit found: "+pattern+" => "+device.getId());
+ for(Device device:dlist) {
+ Util.debugLog("Hit found: "+pattern+" => "+device.getId()+" "+device.getPatterns());
+ }
}
}
}
for(String hit:hits.keySet()) {
- Device device=hits.get(hit);
+ for(Device device:hits.get(hit)) {
+ if(!device.getPatterns().isValid(hits.keySet())) {
+ continue;
+ }
- if(!device.getPatterns().isValid(hits.keySet())) {
- continue;
- }
-
- Util.debugLog("Hit candidate: "+hit+" => "+device.getId());
-
- if(winner!=null) {
- if("simple".equals(winner.getType()) && !"simple".equals(device.getType())) {
- winner=device;
- winnerStr=hit;
- } else if(hit.length()>winnerStr.length() && !"simple".equals(device.getType())) {
+ Util.debugLog("Hit candidate: "+hit+" => "+device.getId());
+
+ if(winner!=null) {
+ if("simple".equals(winner.getType()) && !"simple".equals(device.getType())) {
+ winner=device;
+ winnerStr=hit;
+ } else if(hit.length()>winnerStr.length() && !"simple".equals(device.getType())) {
+ winner=device;
+ winnerStr=hit;
+ }
+ } else {
winner=device;
winnerStr=hit;
}
- } else {
- winner=device;
- winnerStr=hit;
}
}