package com.brightgenerous.lucene.delegate;
@SuppressWarnings("deprecation")
class LuceneDelegaterSub implements LuceneDelegater {
@Override
public StringDistanceDelegater createLevensteinDistance() {
return new LevensteinDistanceSub();
}
@Override
public StringDistanceDelegater createJaroWinklerDistance() {
return new JaroWinklerDistanceSub();
}
private static class LevensteinDistanceSub implements StringDistanceDelegater {
private static final long serialVersionUID = -8086637282044096826L;
private transient volatile StringDistance deleg;
protected StringDistance getDeleg() {
if (deleg == null) {
synchronized (this) {
if (deleg == null) {
deleg = new LevensteinDistance();
}
}
}
return deleg;
}
@Override
public float getDistance(String target, String other) {
return getDeleg().getDistance(target, other);
}
}
private static class JaroWinklerDistanceSub implements StringDistanceDelegater {
private static final long serialVersionUID = 2106586105930921842L;
private transient volatile StringDistance deleg;
protected StringDistance getDeleg() {
if (deleg == null) {
synchronized (this) {
if (deleg == null) {
deleg = new JaroWinklerDistance();
}
}
}
return deleg;
}
@Override
public float getDistance(String target, String other) {
return getDeleg().getDistance(target, other);
}
}
}