\r
public double compareDetails(BirthmarkSet h1, BirthmarkSet h2, BirthmarkEnvironment environment){\r
operationStart(OperationType.COMPARE_DETAIL_BIRTHMARKS);\r
-\r
- List<Double> list = new ArrayList<Double>();\r
- int count = 0;\r
- for(Iterator<String> i = h1.birthmarkTypes(); i.hasNext(); ){\r
- String type = i.next();\r
- Birthmark b1 = h1.getBirthmark(type);\r
- Birthmark b2 = h2.getBirthmark(type);\r
-\r
- double similarity = Double.NaN;\r
- if(b1 != null && b2 != null){\r
- BirthmarkSpi spi = environment.getService(type);\r
- BirthmarkComparator comparator = spi.getComparator();\r
-\r
- similarity = comparator.compare(b1, b2);\r
- count++;\r
- }\r
- list.add(similarity);\r
- }\r
-\r
- double similarity = 0d;\r
- for(Double d: list){\r
- if(d.doubleValue() != Double.NaN){\r
- similarity += d.doubleValue();\r
- }\r
- }\r
+ ComparisonPair pair = new ComparisonPair(h1, h2, environment);\r
+ double sim = pair.calculateSimilarity();\r
operationDone(OperationType.COMPARE_DETAIL_BIRTHMARKS);\r
- return similarity / count;\r
+\r
+ return sim;\r
}\r
\r
private BirthmarkExtractor[] createExtractors(String[] birthmarkTypes, BirthmarkEnvironment environment){\r