From 93d2e0f379fd4c81714995d570a96082d38230bf Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Fri, 28 Oct 2011 06:31:19 +0000 Subject: [PATCH] * added missing source files (belongs to last commit) --- .../sourceforge/filebot/cli/StrictMetric.java | 33 +++++++++++++++++++ .../filebot/similarity/SubstringMetric.java | 29 ++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 source/net/sourceforge/filebot/cli/StrictMetric.java create mode 100644 source/net/sourceforge/filebot/similarity/SubstringMetric.java diff --git a/source/net/sourceforge/filebot/cli/StrictMetric.java b/source/net/sourceforge/filebot/cli/StrictMetric.java new file mode 100644 index 00000000..64e12fba --- /dev/null +++ b/source/net/sourceforge/filebot/cli/StrictMetric.java @@ -0,0 +1,33 @@ + +package net.sourceforge.filebot.cli; + + +import static java.lang.Math.*; + +import net.sourceforge.filebot.similarity.SimilarityMetric; +import net.sourceforge.filebot.ui.rename.MatchSimilarityMetric; + + +enum StrictMetric implements SimilarityMetric { + + EpisodeIdentifier(MatchSimilarityMetric.EpisodeIdentifier, 1), // only allow 0 or 1 + Title(MatchSimilarityMetric.Title, 2), // allow 0 or .5 or 1 + Name(MatchSimilarityMetric.Name, 2); // allow 0 or .5 or 1 + + // inner metric + private final SimilarityMetric metric; + private final float floorFactor; + + + private StrictMetric(SimilarityMetric metric, float floorFactor) { + this.metric = metric; + this.floorFactor = floorFactor; + } + + + @Override + public float getSimilarity(Object o1, Object o2) { + return (float) (floor(metric.getSimilarity(o1, o2) * floorFactor) / floorFactor); + } + +} diff --git a/source/net/sourceforge/filebot/similarity/SubstringMetric.java b/source/net/sourceforge/filebot/similarity/SubstringMetric.java new file mode 100644 index 00000000..461766af --- /dev/null +++ b/source/net/sourceforge/filebot/similarity/SubstringMetric.java @@ -0,0 +1,29 @@ + +package net.sourceforge.filebot.similarity; + + +public class SubstringMetric implements SimilarityMetric { + + @Override + public float getSimilarity(Object o1, Object o2) { + String s1 = normalize(o1); + String s2 = normalize(o2); + String pri = s1.length() > s2.length() ? s1 : s2; + String sub = s1.length() > s2.length() ? s2 : s1; + + return sub.length() > 0 && pri.contains(sub) ? 1 : 0; + } + + + protected String normalize(Object object) { + // use string representation + String name = object.toString(); + + // normalize separators + name = name.replaceAll("[\\p{Punct}\\p{Space}]+", " "); + + // normalize case and trim + return name.trim().toLowerCase(); + } + +}