looking up and registering BoatClass objects with name, display name and alternative names from BoatClassMasterdata

This commit is contained in:
Axel Uhl committed 2015-01-03 11:58:17 +01:00
1 parent e2cc3301cc
commit 3ae92c7afe
2 files changed
+12 -6

No files matched your search

@@ -103,8 +103,8 @@ public enum BoatClassMasterdata {
return null;
}
private static String unifyBoatClassName(String boatClassName) {
return boatClassName.toUpperCase().replaceAll("\\s+","");
public static String unifyBoatClassName(String boatClassName) {
return boatClassName == null ? null : boatClassName.toUpperCase().replaceAll("\\s+","");
}
public Distance getHullLength() {
@@ -270,18 +270,24 @@ public class SharedDomainFactoryImpl implements SharedDomainFactory {
@Override
public BoatClass getOrCreateBoatClass(String name, boolean typicallyStartsUpwind) {
final String unifiedBoatClassName = BoatClassMasterdata.unifyBoatClassName(name);
synchronized (boatClassCache) {
BoatClass result = boatClassCache.get(name);
if (result == null && name != null) {
BoatClass result = boatClassCache.get(unifiedBoatClassName);
if (result == null && unifiedBoatClassName != null) {
BoatClassMasterdata boatClassMasterdata = BoatClassMasterdata.resolveBoatClass(name);
if (boatClassMasterdata != null) {
result = new BoatClassImpl(name, boatClassMasterdata);
boatClassCache.put(name, result);
boatClassCache.put(unifiedBoatClassName, result);
boatClassCache.put(boatClassMasterdata.getDisplayName(), result);
for (String alternativeName : boatClassMasterdata.getAlternativeNames()) {
boatClassCache.put(alternativeName, result);
}
}
}
if (result == null) {
result = new BoatClassImpl(name, typicallyStartsUpwind);
boatClassCache.put(name, result);
result = new BoatClassImpl(unifiedBoatClassName, typicallyStartsUpwind);
boatClassCache.put(unifiedBoatClassName, result);
}
return result;
}