mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
map boat class names consistently to BoatClassMasterdata to find the correct BoatClassVectorGraphics
This commit is contained in:
1 parent
1737d42f00
commit
4eee3e7aad
6 files changed
+48
-70
No files matched your search
+20
-27
@@ -3,6 +3,7 @@ package com.sap.sailing.gwt.ui.client.shared.racemap;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.BoatClassVectorGraphics;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.Extreme40VectorGraphics;
|
||||
import com.sap.sailing.gwt.ui.shared.racemap.LaserVectorGraphics;
|
||||
@@ -14,42 +15,34 @@ import com.sap.sailing.gwt.ui.shared.racemap._49erVectorGraphics;
|
||||
* @author Frank Mittag (C5163874)
|
||||
*/
|
||||
public class BoatClassVectorGraphicsResolver {
|
||||
private static Map<String, BoatClassVectorGraphics> boatVectorGraphicsMap;
|
||||
private static Map<String, BoatClassVectorGraphics> compatibleBoatVectorGraphicsMap;
|
||||
private static Map<BoatClassMasterdata, BoatClassVectorGraphics> compatibleBoatVectorGraphicsMap;
|
||||
private static BoatClassVectorGraphics defaultBoatVectorGraphics;
|
||||
|
||||
static {
|
||||
boatVectorGraphicsMap = new HashMap<String, BoatClassVectorGraphics>();
|
||||
compatibleBoatVectorGraphicsMap = new HashMap<String, BoatClassVectorGraphics>();
|
||||
compatibleBoatVectorGraphicsMap = new HashMap<>();
|
||||
|
||||
BoatClassVectorGraphics laser = new LaserVectorGraphics("470", "470er");
|
||||
BoatClassVectorGraphics _49er = new _49erVectorGraphics("49erFX", "49FX", "29er");
|
||||
BoatClassVectorGraphics extreme40 = new Extreme40VectorGraphics("Extreme", "D35");
|
||||
BoatClassVectorGraphics smallMultihull = new SmallMultihullVectorGraphics("Nacra 17", "Formula 16", "Formula 18",
|
||||
"Hobie Wild Cat", "Hobie Tiger", "A-Catamaran", "Tornado");
|
||||
|
||||
defaultBoatVectorGraphics = laser;
|
||||
boatVectorGraphicsMap.put(laser.getMainBoatClassName(), laser);
|
||||
boatVectorGraphicsMap.put(_49er.getMainBoatClassName(), _49er);
|
||||
boatVectorGraphicsMap.put(extreme40.getMainBoatClassName(), extreme40);
|
||||
boatVectorGraphicsMap.put(smallMultihull.getMainBoatClassName(), smallMultihull);
|
||||
BoatClassVectorGraphics laser = new LaserVectorGraphics(BoatClassMasterdata.LASER_INT, BoatClassMasterdata.LASER_RADIAL);
|
||||
BoatClassVectorGraphics _49er = new _49erVectorGraphics(BoatClassMasterdata._49ER, BoatClassMasterdata._49ERFX, BoatClassMasterdata._29ER);
|
||||
BoatClassVectorGraphics extreme40 = new Extreme40VectorGraphics(BoatClassMasterdata.EXTREME_40, BoatClassMasterdata.D_35);
|
||||
BoatClassVectorGraphics smallMultihull = new SmallMultihullVectorGraphics(BoatClassMasterdata.NACRA_17,
|
||||
BoatClassMasterdata.F_16, BoatClassMasterdata.F_18, BoatClassMasterdata.HOBIE_WILD_CAT,
|
||||
BoatClassMasterdata.HOBIE_TIGER, BoatClassMasterdata.A_CAT, BoatClassMasterdata.TORNADO);
|
||||
|
||||
defaultBoatVectorGraphics = laser; // TODO see bug 2571; this should be a slup-rigged icon working for 470, 505, J/70 etc.
|
||||
for (BoatClassVectorGraphics g : new BoatClassVectorGraphics[] { laser, _49er, extreme40, smallMultihull }) {
|
||||
for (BoatClassMasterdata b : g.getCompatibleBoatClasses()) {
|
||||
compatibleBoatVectorGraphicsMap.put(b, g);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static BoatClassVectorGraphics resolveBoatClassVectorGraphics(String boatClassName) {
|
||||
BoatClassVectorGraphics result = defaultBoatVectorGraphics;
|
||||
if (boatVectorGraphicsMap.containsKey(boatClassName)) {
|
||||
result = boatVectorGraphicsMap.get(boatClassName);
|
||||
} else if (compatibleBoatVectorGraphicsMap.containsKey(boatClassName)) {
|
||||
BoatClassMasterdata resolvedBoatClass = BoatClassMasterdata.resolveBoatClass(boatClassName);
|
||||
final BoatClassVectorGraphics result;
|
||||
if (resolvedBoatClass != null && compatibleBoatVectorGraphicsMap.containsKey(boatClassName)) {
|
||||
result = compatibleBoatVectorGraphicsMap.get(boatClassName);
|
||||
} else {
|
||||
// now try to find compatible boat class images
|
||||
for (BoatClassVectorGraphics boatClassImageData : boatVectorGraphicsMap.values()) {
|
||||
if (boatClassImageData.isBoatClassNameCompatible(boatClassName)) {
|
||||
result = boatClassImageData;
|
||||
compatibleBoatVectorGraphicsMap.put(boatClassName, boatClassImageData);
|
||||
break;
|
||||
}
|
||||
}
|
||||
result = defaultBoatVectorGraphics;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
+16
-35
@@ -1,9 +1,11 @@
|
||||
package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.canvas.dom.client.Context2d;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
import com.sap.sailing.domain.common.Color;
|
||||
import com.sap.sailing.domain.common.LegType;
|
||||
import com.sap.sailing.domain.common.Tack;
|
||||
@@ -33,20 +35,22 @@ public abstract class BoatClassVectorGraphics {
|
||||
private final double hullLengthInPx;
|
||||
private final double beamInPx;
|
||||
|
||||
private final String mainBoatClassName;
|
||||
private final List<String> compatibleBoatClassNames;
|
||||
private final Set<BoatClassMasterdata> compatibleBoatClasses;
|
||||
|
||||
BoatClassVectorGraphics(String mainBoatClassName, double boatOverallLengthInPx, double boatBeamInPx, double boatHullLengthInPx,
|
||||
String...compatibleBoatClassNames) {
|
||||
this.mainBoatClassName = mainBoatClassName;
|
||||
BoatClassVectorGraphics(double boatOverallLengthInPx, double boatBeamInPx, double boatHullLengthInPx,
|
||||
BoatClassMasterdata... compatibleBoatClasses) {
|
||||
this.overallLengthInPx = boatOverallLengthInPx;
|
||||
this.beamInPx = boatBeamInPx;
|
||||
this.hullLengthInPx = boatHullLengthInPx;
|
||||
this.compatibleBoatClassNames = new ArrayList<String>();
|
||||
for (String compatibleBoatClass : compatibleBoatClassNames) {
|
||||
this.compatibleBoatClassNames.add(compatibleBoatClass);
|
||||
this.compatibleBoatClasses = new HashSet<>();
|
||||
for (BoatClassMasterdata compatibleBoatClass : compatibleBoatClasses) {
|
||||
this.compatibleBoatClasses.add(compatibleBoatClass);
|
||||
}
|
||||
}
|
||||
|
||||
public Set<BoatClassMasterdata> getCompatibleBoatClasses() {
|
||||
return Collections.unmodifiableSet(compatibleBoatClasses);
|
||||
}
|
||||
|
||||
protected abstract void drawBoat(Context2d ctx, boolean isSelected, String color);
|
||||
|
||||
@@ -128,31 +132,8 @@ public abstract class BoatClassVectorGraphics {
|
||||
return beamInPx;
|
||||
}
|
||||
|
||||
public boolean isBoatClassNameCompatible(String boatClass) {
|
||||
boolean result = false;
|
||||
// remove all white space characters
|
||||
String boatClassToCheck = boatClass.replaceAll("\\s","");
|
||||
// remove all '-' characters
|
||||
boatClassToCheck = boatClass.replaceAll("-","");
|
||||
if (mainBoatClassName.equalsIgnoreCase(boatClassToCheck)) {
|
||||
result = true;
|
||||
} else {
|
||||
for (String compatibleName : compatibleBoatClassNames) {
|
||||
if (compatibleName.equalsIgnoreCase(boatClassToCheck)) {
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public String getMainBoatClassName() {
|
||||
return mainBoatClassName;
|
||||
}
|
||||
|
||||
public List<String> getCompatibleBoatClassNames() {
|
||||
return compatibleBoatClassNames;
|
||||
public boolean isBoatClassNameCompatible(String boatClassName) {
|
||||
return compatibleBoatClasses.contains(BoatClassMasterdata.resolveBoatClass(boatClassName));
|
||||
}
|
||||
|
||||
public double getMinHullLengthInPx() {
|
||||
|
||||
+3
-2
@@ -2,11 +2,12 @@ package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import com.google.gwt.canvas.dom.client.Context2d;
|
||||
import com.google.gwt.canvas.dom.client.Context2d.LineJoin;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
|
||||
public class Extreme40VectorGraphics extends BoatClassVectorGraphics {
|
||||
|
||||
public Extreme40VectorGraphics(String... compatibleBoatClassNames) {
|
||||
super("EXTREME40", 1600, 760, 1220, compatibleBoatClassNames);
|
||||
public Extreme40VectorGraphics(BoatClassMasterdata... compatibleBoatClasses) {
|
||||
super(1600, 760, 1220, compatibleBoatClasses);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -1,11 +1,12 @@
|
||||
package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import com.google.gwt.canvas.dom.client.Context2d;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
|
||||
public class LaserVectorGraphics extends BoatClassVectorGraphics {
|
||||
|
||||
public LaserVectorGraphics(String... compatibleBoatClassNames) {
|
||||
super("LASER", 423, 137, 423, compatibleBoatClassNames);
|
||||
public LaserVectorGraphics(BoatClassMasterdata... compatibleBoatClasses) {
|
||||
super(423, 137, 423, compatibleBoatClasses);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -2,11 +2,12 @@ package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import com.google.gwt.canvas.dom.client.Context2d;
|
||||
import com.google.gwt.canvas.dom.client.Context2d.LineJoin;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
|
||||
public class SmallMultihullVectorGraphics extends BoatClassVectorGraphics {
|
||||
|
||||
public SmallMultihullVectorGraphics(String... compatibleBoatClassNames) {
|
||||
super("Multihull", 710, 260, 525, compatibleBoatClassNames);
|
||||
public SmallMultihullVectorGraphics(BoatClassMasterdata... compatibleBoatClasses) {
|
||||
super(710, 260, 525, compatibleBoatClasses);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -2,11 +2,12 @@ package com.sap.sailing.gwt.ui.shared.racemap;
|
||||
|
||||
import com.google.gwt.canvas.dom.client.Context2d;
|
||||
import com.google.gwt.canvas.dom.client.Context2d.LineJoin;
|
||||
import com.sap.sailing.domain.common.BoatClassMasterdata;
|
||||
|
||||
public class _49erVectorGraphics extends BoatClassVectorGraphics {
|
||||
|
||||
public _49erVectorGraphics(String... compatibleBoatClassNames) {
|
||||
super("49ER", 499, 290, 499, compatibleBoatClassNames);
|
||||
public _49erVectorGraphics(BoatClassMasterdata... compatibleBoatClasses) {
|
||||
super(499, 290, 499, compatibleBoatClasses);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in new issue
Block a user