From 857921b192b59f3f1cd7fed7173fc59c17039f98 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 14:29:39 +0200 Subject: [PATCH 01/11] more stubs for Kieler Woche result list parsing --- .../sap/sailing/kiworesultimport/Boat.java | 4 ++ .../sap/sailing/kiworesultimport/Crew.java | 7 +++ .../sap/sailing/kiworesultimport/Races.java | 2 + .../sailing/kiworesultimport/ResultList.java | 2 + .../sap/sailing/kiworesultimport/Skipper.java | 5 ++- .../sailing/kiworesultimport/Verteilung.java | 2 +- .../kiworesultimport/impl/BoatImpl.java | 45 +++++++++++++++++++ .../kiworesultimport/impl/CrewImpl.java | 27 +++++++++++ .../kiworesultimport/impl/CrewmemberImpl.java | 13 ++++++ .../kiworesultimport/impl/NamedImpl.java | 18 ++++++++ .../kiworesultimport/impl/RaceImpl.java | 11 +++++ .../kiworesultimport/impl/ResultListImpl.java | 22 ++++----- .../kiworesultimport/impl/SkipperImpl.java | 22 +++++++++ .../kiworesultimport/impl/VerteilungImpl.java | 20 +++++++++ .../server/impl/RacingEventServiceImpl.java | 1 + 15 files changed, 189 insertions(+), 12 deletions(-) create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Crew.java create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewmemberImpl.java create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/NamedImpl.java create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/SkipperImpl.java create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Boat.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Boat.java index 87f7124a500..77a0003c532 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Boat.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Boat.java @@ -6,4 +6,8 @@ public interface Boat extends Named { Integer getPosition(); String getPreis(); + + Crew getCrew(); + + Races getRaces(); } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Crew.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Crew.java new file mode 100755 index 00000000000..e0640988459 --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Crew.java @@ -0,0 +1,7 @@ +package com.sap.sailing.kiworesultimport; + +public interface Crew { + Skipper getSkipper(); + + Iterable getCrewmembers(); +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Races.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Races.java index 5e5406274b6..e185c6b2ce1 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Races.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Races.java @@ -2,4 +2,6 @@ package com.sap.sailing.kiworesultimport; public interface Races { Double getTotalPoints(); + + Iterable getRaces(); } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java index 66c7f848005..110fbe6094e 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java @@ -14,4 +14,6 @@ public interface ResultList { String getTime(); String getDate(); + + Verteilung getVerteilung(); } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Skipper.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Skipper.java index a29fa9448db..dacad728f56 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Skipper.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Skipper.java @@ -1,7 +1,10 @@ package com.sap.sailing.kiworesultimport; +import java.net.MalformedURLException; import java.net.URL; +import org.w3c.dom.DOMException; + public interface Skipper extends Named { - URL getIsaf(); + URL getIsaf() throws MalformedURLException, DOMException; } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java index 110b5e48fc2..9c3d4e6d3a0 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java @@ -1,5 +1,5 @@ package com.sap.sailing.kiworesultimport; public interface Verteilung { - + Iterable getBoats(); } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java new file mode 100755 index 00000000000..77a7b768539 --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java @@ -0,0 +1,45 @@ +package com.sap.sailing.kiworesultimport.impl; + +import org.w3c.dom.Node; + +import com.sap.sailing.kiworesultimport.Boat; +import com.sap.sailing.kiworesultimport.Crew; +import com.sap.sailing.kiworesultimport.Races; + +public class BoatImpl extends NamedImpl implements Boat { + + public BoatImpl(Node node) { + super(node); + } + + @Override + public String getSailingNumber() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Integer getPosition() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getPreis() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Crew getCrew() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Races getRaces() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java new file mode 100755 index 00000000000..b2981501d94 --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java @@ -0,0 +1,27 @@ +package com.sap.sailing.kiworesultimport.impl; + +import org.w3c.dom.Node; + +import com.sap.sailing.kiworesultimport.Crew; +import com.sap.sailing.kiworesultimport.Crewmember; +import com.sap.sailing.kiworesultimport.Skipper; + +public class CrewImpl extends AbstractNodeWrapper implements Crew { + + public CrewImpl(Node node) { + super(node); + } + + @Override + public Skipper getSkipper() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Iterable getCrewmembers() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewmemberImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewmemberImpl.java new file mode 100755 index 00000000000..4624b46414f --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewmemberImpl.java @@ -0,0 +1,13 @@ +package com.sap.sailing.kiworesultimport.impl; + +import org.w3c.dom.Node; + +import com.sap.sailing.kiworesultimport.Crewmember; + +public class CrewmemberImpl extends NamedImpl implements Crewmember { + + public CrewmemberImpl(Node node) { + super(node); + } + +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/NamedImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/NamedImpl.java new file mode 100755 index 00000000000..bbc3a4b94b8 --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/NamedImpl.java @@ -0,0 +1,18 @@ +package com.sap.sailing.kiworesultimport.impl; + +import org.w3c.dom.Node; + +import com.sap.sailing.kiworesultimport.Named; + +public class NamedImpl extends AbstractNodeWrapper implements Named { + + public NamedImpl(Node node) { + super(node); + } + + @Override + public String getName() { + return getNode().getAttributes().getNamedItem("name").getNodeValue(); + } + +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java new file mode 100755 index 00000000000..be4607064ce --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java @@ -0,0 +1,11 @@ +package com.sap.sailing.kiworesultimport.impl; + +import org.w3c.dom.Node; + +public class RaceImpl extends AbstractNodeWrapper { + + public RaceImpl(Node node) { + super(node); + } + +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java index 2be0c13fa38..6ef9a260b80 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java @@ -1,8 +1,10 @@ package com.sap.sailing.kiworesultimport.impl; +import org.w3c.dom.Element; import org.w3c.dom.Node; import com.sap.sailing.kiworesultimport.ResultList; +import com.sap.sailing.kiworesultimport.Verteilung; public class ResultListImpl extends AbstractNodeWrapper implements ResultList { public ResultListImpl(Node node) { @@ -21,31 +23,31 @@ public class ResultListImpl extends AbstractNodeWrapper implements ResultList { @Override public String getStatus() { - // TODO Auto-generated method stub - return null; + return getNode().getAttributes().getNamedItem("status").getNodeValue(); } @Override public String getBoatClass() { - // TODO Auto-generated method stub - return null; + return getNode().getAttributes().getNamedItem("class").getNodeValue(); } @Override public String getEvent() { - // TODO Auto-generated method stub - return null; + return getNode().getAttributes().getNamedItem("event").getNodeValue(); } @Override public String getTime() { - // TODO Auto-generated method stub - return null; + return getNode().getAttributes().getNamedItem("time").getNodeValue(); } @Override public String getDate() { - // TODO Auto-generated method stub - return null; + return getNode().getAttributes().getNamedItem("date").getNodeValue(); + } + + @Override + public Verteilung getVerteilung() { + return new VerteilungImpl(((Element) getNode()).getElementsByTagName("verteilung").item(0)); } } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/SkipperImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/SkipperImpl.java new file mode 100755 index 00000000000..adb95d1a0d0 --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/SkipperImpl.java @@ -0,0 +1,22 @@ +package com.sap.sailing.kiworesultimport.impl; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.w3c.dom.DOMException; +import org.w3c.dom.Node; + +import com.sap.sailing.kiworesultimport.Skipper; + +public class SkipperImpl extends NamedImpl implements Skipper { + + public SkipperImpl(Node node) { + super(node); + } + + @Override + public URL getIsaf() throws MalformedURLException, DOMException { + return new URL(getNode().getAttributes().getNamedItem("isaf").getNodeValue()); + } + +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java new file mode 100755 index 00000000000..97dd09b2d7d --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java @@ -0,0 +1,20 @@ +package com.sap.sailing.kiworesultimport.impl; + +import org.w3c.dom.Node; + +import com.sap.sailing.kiworesultimport.Boat; +import com.sap.sailing.kiworesultimport.Verteilung; + +public class VerteilungImpl extends AbstractNodeWrapper implements Verteilung { + + public VerteilungImpl(Node node) { + super(node); + } + + @Override + public Iterable getBoats() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 2a687d48867..a33109e1c17 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -223,6 +223,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen private void loadStoredRegattas() { for (Regatta regatta : domainObjectFactory.loadAllRegattas(this)) { + logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName"); regattasByName.put(regatta.getName(), regatta); } } From fc1d91f8a6d6dcaeff50c22298fc6098fe9164b7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 14:50:57 +0200 Subject: [PATCH 02/11] added more logging --- .../sailing/server/impl/RacingEventServiceImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index a33109e1c17..2d8b313f38c 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -518,7 +518,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen Regatta result = regattasByName.get(regatta.getName()); if (result == null) { result = regatta; - logger.info("Created regatta "+result.getName()+" ("+hashCode()+")"); + logger.info("Created regatta "+result.getName()+" ("+hashCode()+") on "+this); cacheAndReplicateDefaultRegatta(result); } return result; @@ -529,7 +529,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen Iterable series, boolean persistent) { Regatta regatta = new RegattaImpl(baseEventName, com.sap.sailing.domain.base.DomainFactory.INSTANCE.getOrCreateBoatClass(boatClassName), series, persistent); - logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ")"); + logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on "+this); cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta); if (persistent) { updateStoredRegatta(regatta); @@ -664,7 +664,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen */ private void cacheAndReplicateSpecificRegattaWithoutRaceColumns(Regatta regatta) { if (!regattasByName.containsKey(regatta.getName())) { - logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName"); + logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName of "+this); regattasByName.put(regatta.getName(), regatta); regatta.addRegattaListener(this); replicate(new AddSpecificRegatta(regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta @@ -696,7 +696,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen */ private void cacheAndReplicateDefaultRegatta(Regatta regatta) { if (!regattasByName.containsKey(regatta.getName())) { - logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName"); + logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName of "+this); regattasByName.put(regatta.getName(), regatta); regatta.addRegattaListener(this); replicate(new AddDefaultRegatta(regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta.getBoatClass().getName())); @@ -887,7 +887,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen stopTracking(regatta); if (regatta != null) { if (regatta.getName() != null) { - logger.info("Removing regatta "+regatta.getName()+" ("+regatta.hashCode()+") from RacingEventServiceImpl"); + logger.info("Removing regatta "+regatta.getName()+" ("+regatta.hashCode()+") from "+this); regattasByName.remove(regatta.getName()); regattaTrackingCache.remove(regatta); regatta.removeRegattaListener(this); @@ -1023,7 +1023,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen // remove the race from the regatta if the regatta is not persistently stored regatta.removeRace(race); if (!regatta.isPersistent() && Util.isEmpty(regatta.getAllRaces())) { - logger.info("Removing regatta "+regatta.getName()+" from service "+this); + logger.info("Removing regatta "+regatta.getName()+" ("+regatta.hashCode()+") from service "+this); regattasByName.remove(regatta.getName()); regatta.removeRegattaListener(this); } @@ -1347,6 +1347,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen @SuppressWarnings("unchecked") // the type-parameters in the casts of the de-serialized collection objects can't be checked @Override public synchronized void initiallyFillFrom(ObjectInputStream ois) throws IOException, ClassNotFoundException { + logger.info("Performing initial replication load on "+this); ClassLoader oldContextClassloader = Thread.currentThread().getContextClassLoader(); try { // Use this object's class's class loader as the context class loader which will then be used for From 4a2633f7de48f9610c0e5313d60bcbd37ac97d3c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 15:02:55 +0200 Subject: [PATCH 03/11] KiWo result test with loading "Verteilung" object green --- .../META-INF/MANIFEST.MF | 3 +- .../kiworesultimport/test/ParserTest.java | 9 +++++ .../sap/sailing/kiworesultimport/Race.java | 2 +- .../kiworesultimport/impl/BoatImpl.java | 19 +++++------ .../kiworesultimport/impl/RaceImpl.java | 14 +++++++- .../kiworesultimport/impl/RacesImpl.java | 34 +++++++++++++++++++ .../kiworesultimport/impl/ResultListImpl.java | 2 +- .../kiworesultimport/impl/VerteilungImpl.java | 13 +++++-- 8 files changed, 80 insertions(+), 16 deletions(-) create mode 100755 java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java diff --git a/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF index 9582d515f7d..d3ec5ef6809 100755 --- a/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF @@ -6,4 +6,5 @@ Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Require-Bundle: org.junit4;bundle-version="4.8.2", - com.sap.sailing.kiworesultimport + com.sap.sailing.kiworesultimport, + com.sap.sailing.domain.common diff --git a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java index 184346dd686..b12e68ed5bb 100755 --- a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java +++ b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java @@ -1,6 +1,7 @@ package com.sap.sailing.kiworesultimport.test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.io.File; @@ -17,9 +18,12 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; +import com.sap.sailing.domain.common.impl.Util; +import com.sap.sailing.kiworesultimport.Boat; import com.sap.sailing.kiworesultimport.ResultList; import com.sap.sailing.kiworesultimport.ResultListParser; import com.sap.sailing.kiworesultimport.ResultListParserFactory; +import com.sap.sailing.kiworesultimport.Verteilung; public class ParserTest { private static final String RESOURCES = "resources/"; @@ -52,5 +56,10 @@ public class ParserTest { assertNotNull(resultList); assertEquals("D:\\Programme\\KWSailing\\eventlogos\\KielerWoche_Ergebnislistenkopf_2011.jpg", resultList.getImagePfad()); assertEquals(new String(new byte[] { (byte) 160 /* non-breaking space */}), resultList.getLegende()); + final Verteilung verteilung = resultList.getVerteilung(); + assertNotNull(verteilung); + Iterable boats = verteilung.getBoats(); + assertFalse(Util.isEmpty(boats)); + assertEquals(48, Util.size(boats)); } } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Race.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Race.java index 7c48813242e..5acb4dc64a1 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Race.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Race.java @@ -3,5 +3,5 @@ package com.sap.sailing.kiworesultimport; public interface Race { Double getPoints(); - Double getNumber(); + Integer getNumber(); } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java index 77a7b768539..a9d40135fdf 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/BoatImpl.java @@ -1,6 +1,8 @@ package com.sap.sailing.kiworesultimport.impl; +import org.w3c.dom.Element; import org.w3c.dom.Node; +import org.w3c.dom.NodeList; import com.sap.sailing.kiworesultimport.Boat; import com.sap.sailing.kiworesultimport.Crew; @@ -14,32 +16,29 @@ public class BoatImpl extends NamedImpl implements Boat { @Override public String getSailingNumber() { - // TODO Auto-generated method stub - return null; + return getNode().getAttributes().getNamedItem("sailingnumber").getNodeValue(); } @Override public Integer getPosition() { - // TODO Auto-generated method stub - return null; + return Integer.valueOf(getNode().getAttributes().getNamedItem("position").getNodeValue()); } @Override public String getPreis() { - // TODO Auto-generated method stub - return null; + return getNode().getAttributes().getNamedItem("preis").getNodeValue(); } @Override public Crew getCrew() { - // TODO Auto-generated method stub - return null; + final NodeList crew = ((Element) getNode()).getElementsByTagName("Crew"); + return new CrewImpl(crew.item(0)); } @Override public Races getRaces() { - // TODO Auto-generated method stub - return null; + final NodeList races = ((Element) getNode()).getElementsByTagName("Races"); + return new RacesImpl(races.item(0)); } } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java index be4607064ce..7f7671bfa27 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java @@ -2,10 +2,22 @@ package com.sap.sailing.kiworesultimport.impl; import org.w3c.dom.Node; -public class RaceImpl extends AbstractNodeWrapper { +import com.sap.sailing.kiworesultimport.Race; + +public class RaceImpl extends AbstractNodeWrapper implements Race { public RaceImpl(Node node) { super(node); } + @Override + public Double getPoints() { + return Double.valueOf(getNode().getAttributes().getNamedItem("points").getNodeValue()); + } + + @Override + public Integer getNumber() { + return Integer.valueOf(getNode().getAttributes().getNamedItem("number").getNodeValue()); + } + } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java new file mode 100755 index 00000000000..9f7e6b02c44 --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java @@ -0,0 +1,34 @@ +package com.sap.sailing.kiworesultimport.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import com.sap.sailing.kiworesultimport.Race; +import com.sap.sailing.kiworesultimport.Races; + +public class RacesImpl extends AbstractNodeWrapper implements Races { + + public RacesImpl(Node node) { + super(node); + } + + @Override + public Double getTotalPoints() { + return Double.valueOf(getNode().getAttributes().getNamedItem("totalpoints").getNodeValue()); + } + + @Override + public Iterable getRaces() { + List result = new ArrayList(); + final NodeList races = ((Element) getNode()).getElementsByTagName("Race"); + for (int i=0; i getBoats() { - // TODO Auto-generated method stub - return null; + List result = new ArrayList(); + final NodeList boats = ((Element) getNode()).getElementsByTagName("Boat"); + for (int i=0; i Date: Fri, 8 Jun 2012 15:04:01 +0200 Subject: [PATCH 04/11] added regatta selection when we want to start a race tracking --- .../adminconsole/AdminConsoleEntryPoint.java | 10 +-- .../EventStructureManagementPanel.java | 51 +++++++-------- .../SeriesWithFleetsCreateDialog.java | 2 +- .../TracTracEventManagementPanel.java | 13 +++- .../TrackedRacesListComposite.java | 63 ++++++++++++++++--- 5 files changed, 91 insertions(+), 48 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java index b09b0888d12..3080310bd1b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java @@ -35,9 +35,12 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt tabPanel.setAnimationEnabled(true); rootPanel.add(tabPanel); //, 10, 10); tabPanel.setSize("95%", "95%"); - - tabPanel.add(new EventStructureManagementPanel(sailingService, this, stringMessages), stringMessages.regattas()); + regattaDisplayers = new HashSet(); + + EventStructureManagementPanel eventStructureManagementPanel = new EventStructureManagementPanel(sailingService, this, stringMessages, this); + tabPanel.add(eventStructureManagementPanel, stringMessages.regattas()); + regattaDisplayers.add(eventStructureManagementPanel); TracTracEventManagementPanel tractracEventManagementPanel = new TracTracEventManagementPanel(sailingService, this, this, stringMessages); regattaDisplayers.add(tractracEventManagementPanel); tractracEventManagementPanel.setSize("90%", "90%"); @@ -101,9 +104,8 @@ public class AdminConsoleEntryPoint extends AbstractEntryPoint implements Regatt @Override public void onFailure(Throwable caught) { - reportError("Remote Procedure Call listEvents() - Failure"); + reportError("Remote Procedure Call getRegattas() - Failure"); } }); } - } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventStructureManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventStructureManagementPanel.java index a998efdf62c..59b14f4d574 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventStructureManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/EventStructureManagementPanel.java @@ -34,6 +34,8 @@ import com.sap.sailing.domain.common.Color; import com.sap.sailing.domain.common.impl.Util.Pair; import com.sap.sailing.domain.common.impl.Util.Triple; import com.sap.sailing.gwt.ui.client.ErrorReporter; +import com.sap.sailing.gwt.ui.client.RegattaDisplayer; +import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.EventDTO; @@ -48,7 +50,7 @@ import com.sap.sailing.gwt.ui.shared.SeriesDTO; * @author Frank Mittag (C5163974) * */ -public class EventStructureManagementPanel extends SimplePanel { +public class EventStructureManagementPanel extends SimplePanel implements RegattaDisplayer { private final SailingServiceAsync sailingService; private final ErrorReporter errorReporter; private final StringMessages stringMessages; @@ -63,15 +65,17 @@ public class EventStructureManagementPanel extends SimplePanel { private CellTable regattaTable; private SingleSelectionModel regattaSelectionModel; private ListDataProvider regattaProvider; + private final RegattaRefresher regattaRefresher; private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class); private boolean supportEvents = false; public EventStructureManagementPanel(SailingServiceAsync sailingService, ErrorReporter errorReporter, - StringMessages stringMessages) { + StringMessages stringMessages, RegattaRefresher regattaRefresher) { this.sailingService = sailingService; this.stringMessages = stringMessages; this.errorReporter = errorReporter; + this.regattaRefresher = regattaRefresher; events = new ArrayList(); selectedEvent = null; @@ -115,8 +119,6 @@ public class EventStructureManagementPanel extends SimplePanel { } else { createEventDetailsPanel(); mainPanel.add(eventDetailsCaptionPanel); - - fillRegattas(); } } @@ -135,6 +137,15 @@ public class EventStructureManagementPanel extends SimplePanel { } private void createRegattaDetails(Panel parentPanel) { + Button addRegattaBtn = new Button("Add regatta"); + parentPanel.add(addRegattaBtn); + addRegattaBtn.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + openCreateRegattaDialog(); + } + }); + // regatta table TextColumn regattaNameColumn = new TextColumn() { @Override @@ -223,15 +234,6 @@ public class EventStructureManagementPanel extends SimplePanel { regattaProvider = new ListDataProvider(); regattaProvider.addDataDisplay(regattaTable); parentPanel.add(regattaTable); - - Button addRegattaBtn = new Button("Add regatta"); - parentPanel.add(addRegattaBtn); - addRegattaBtn.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - openCreateRegattaDialog(); - } - }); } private void onEventSelectionChanged() { @@ -306,22 +308,6 @@ public class EventStructureManagementPanel extends SimplePanel { } } - private void fillRegattas() { - // load the regattas for this event - sailingService.getRegattas(new AsyncCallback>() { - @Override - public void onFailure(Throwable t) { - errorReporter.reportError("Error trying to read regattas of event " + selectedEvent.name + ": " + t.getMessage()); - } - - @Override - public void onSuccess(List regattas) { - regattaProvider.getList().clear(); - regattaProvider.getList().addAll(regattas); - } - }); - } - private void createNewEvent(final EventDTO newEvent) { sailingService.createEvent(newEvent.name, newEvent.venue.name, new AsyncCallback() { @Override @@ -358,7 +344,7 @@ public class EventStructureManagementPanel extends SimplePanel { @Override public void onSuccess(RegattaDTO regatta) { - regattaProvider.getList().add(regatta); + regattaRefresher.fillRegattas(); } }); } @@ -393,4 +379,9 @@ public class EventStructureManagementPanel extends SimplePanel { }); } + @Override + public void fillRegattas(List regattas) { + regattaProvider.getList().clear(); + regattaProvider.getList().addAll(regattas); + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java index 5947079617a..aa4ac4de6d2 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java @@ -264,7 +264,7 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog { fleetsGrid.setCellSpacing(4); fleetsGrid.setHTML(0, 0, stringConstants.name()); - fleetsGrid.setHTML(0, 1, stringConstants.no()); + fleetsGrid.setHTML(0, 1, stringConstants.rank()); fleetsGrid.setHTML(0, 2, stringConstants.color()); for(int i = 0; i < fleetCount; i++) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java index 0cb40dd46df..fcf24db061c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java @@ -34,10 +34,12 @@ import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.view.client.ListDataProvider; import com.google.gwt.view.client.MultiSelectionModel; +import com.sap.sailing.domain.common.RegattaIdentifier; +import com.sap.sailing.domain.common.RegattaName; import com.sap.sailing.domain.common.impl.Util.Pair; import com.sap.sailing.gwt.ui.client.ErrorReporter; -import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.RaceSelectionModel; +import com.sap.sailing.gwt.ui.client.RegattaRefresher; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.shared.RegattaDTO; @@ -453,10 +455,15 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { private void trackSelectedRaces(boolean trackWind, boolean correctWindByDeclination) { String liveURI = liveURIBox.getValue(); String storedURI = storedURIBox.getValue(); + RegattaDTO selectedRegatta = trackedRacesListComposite.getSelectedRegatta(); + RegattaIdentifier regattaIdentifier = null; + if(selectedRegatta != null) { + regattaIdentifier = new RegattaName(selectedRegatta.name); + } for (final TracTracRaceRecordDTO rr : raceList.getList()) { if (raceTable.getSelectionModel().isSelected(rr)) { - sailingService.trackWithTracTrac(/* regattaToAddTo */ null, // TODO allow user to optionally select a pre-defined regatta - rr, liveURI, storedURI, trackWind, correctWindByDeclination, new AsyncCallback() { + sailingService.trackWithTracTrac(regattaIdentifier, rr, liveURI, storedURI, trackWind, + correctWindByDeclination, new AsyncCallback() { @Override public void onFailure(Throwable caught) { errorReporter.reportError("Error trying to register race " + rr.name + " for tracking: " diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java index 8b53b2eac94..59458d5d0ff 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java @@ -33,6 +33,7 @@ import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; @@ -82,6 +83,10 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< private Iterable allRaces; + private Iterable allRegattas; + + private ListBox regattaListBox; + private final VerticalPanel panel; private DateTimeFormatRenderer dateFormatter = new DateTimeFormatRenderer( @@ -124,9 +129,6 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< public TrackedRacesListComposite(final SailingServiceAsync sailingService, final ErrorReporter errorReporter, final RegattaRefresher regattaRefresher, RaceSelectionProvider raceSelectionProvider, StringMessages stringMessages, boolean hasMultiSelection) { - if (regattaRefresher == null) { - throw new IllegalArgumentException("regattaRefresher must not be null"); - } this.sailingService = sailingService; this.errorReporter = errorReporter; this.regattaRefresher = regattaRefresher; @@ -141,13 +143,26 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< settings.setDelayToLiveInSeconds(DEFAULT_LIVE_DELAY_IN_MILLISECONDS / 1000l); panel = new VerticalPanel(); setWidget(panel); + + // the regatta selection for a tracked race + HorizontalPanel regattaPanel = new HorizontalPanel(); + panel.add(regattaPanel); + Label lblRegattas = new Label("Regatta used for the tracked race:"); + lblRegattas.setWordWrap(false); + regattaPanel.setCellVerticalAlignment(lblRegattas, HasVerticalAlignment.ALIGN_MIDDLE); + regattaPanel.setSpacing(5); + regattaPanel.add(lblRegattas); + regattaListBox = new ListBox(); + regattaPanel.add(regattaListBox); + regattaPanel.setCellVerticalAlignment(regattaListBox, HasVerticalAlignment.ALIGN_MIDDLE); + HorizontalPanel filterPanel = new HorizontalPanel(); panel.add(filterPanel); - Label lblFilterEvents = new Label(stringMessages.filterRacesByName() + ":"); - lblFilterEvents.setWordWrap(false); + Label lblFilterRaces = new Label(stringMessages.filterRacesByName() + ":"); + lblFilterRaces.setWordWrap(false); filterPanel.setSpacing(5); - filterPanel.add(lblFilterEvents); - filterPanel.setCellVerticalAlignment(lblFilterEvents, HasVerticalAlignment.ALIGN_MIDDLE); + filterPanel.add(lblFilterRaces); + filterPanel.setCellVerticalAlignment(lblFilterRaces, HasVerticalAlignment.ALIGN_MIDDLE); filterRacesTextbox = new TextBox(); filterRacesTextbox.addKeyUpHandler(new KeyUpHandler() { @Override @@ -438,8 +453,11 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< } @Override - public void fillRegattas(List events) { - if (events.isEmpty()) { + public void fillRegattas(List regattas) { + RegattaDTO oldRegattaSelection = getSelectedRegatta(); + regattaListBox.clear(); + if (regattas.isEmpty()) { + regattaListBox.addItem("No regatta"); raceTable.setVisible(false); btnUntrack.setVisible(false); btnRemoveRace.setVisible(false); @@ -453,10 +471,19 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< btnRemoveRace.setEnabled(false); noTrackedRacesLabel.setVisible(false); btnSetDelayToLive.setVisible(true); + regattaListBox.addItem("No regatta"); + for (RegattaDTO regatta : regattas) { + regattaListBox.addItem(regatta.name); + if(oldRegattaSelection != null && oldRegattaSelection.name.equals(regatta.name)) { + regattaListBox.setSelectedIndex(regattaListBox.getItemCount()-1); + } + } } List newAllRaces = new ArrayList(); + List newAllRegattas = new ArrayList(); List newAllRaceIdentifiers = new ArrayList(); - for (RegattaDTO regatta : events) { + for (RegattaDTO regatta : regattas) { + newAllRegattas.add(regatta); for (RaceDTO race : regatta.races) { if (race != null) { newAllRaces.add(race); @@ -465,6 +492,7 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< } } allRaces = newAllRaces; + allRegattas = newAllRegattas; fillRaceListFromAvailableRacesApplyingFilter(); raceSelectionProvider.setAllRaces(newAllRaceIdentifiers); // have this object be notified; triggers onRaceSelectionChange } @@ -516,6 +544,21 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< }); } + public RegattaDTO getSelectedRegatta() { + RegattaDTO result = null; + int selIndex = regattaListBox.getSelectedIndex(); + if(selIndex > 0) { // the zero index represents the 'no selection' text + String itemText = regattaListBox.getItemText(selIndex); + for(RegattaDTO regattaDTO: allRegattas) { + if(regattaDTO.name.equals(itemText)) { + result = regattaDTO; + break; + } + } + } + return result; + } + private void fillRaceListFromAvailableRacesApplyingFilter() { String text = filterRacesTextbox.getText(); List wordsToFilter = Arrays.asList(text.split(" ")); From b0ab6a36e47cec8a00fc566060c865994932082b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 15:05:10 +0200 Subject: [PATCH 05/11] dropping REGATTA collection too for test case initialization --- .../mongodb/test/TestStoringAndLoadingEventsAndRegattas.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java index 0f09401fd7d..ecc6ea5adeb 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java @@ -91,6 +91,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest public void testLoadStoreSimpleRegattaLeaderboard() { // explicitly drop; it seems that the overall dropDatabase isn't always effective yet when this test is run getMongoService().getDB().getCollection(CollectionNames.LEADERBOARDS.name()).drop(); + getMongoService().getDB().getCollection(CollectionNames.REGATTAS.name()).drop(); RacingEventService res = new RacingEventServiceImpl(getMongoService()); final int numberOfQualifyingRaces = 5; final int numberOfFinalRaces = 7; @@ -118,6 +119,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest public void testLoadStoreRegattaLeaderboardWithScoreCorrections() { // explicitly drop; it seems that the overall dropDatabase isn't always effective yet when this test is run getMongoService().getDB().getCollection(CollectionNames.LEADERBOARDS.name()).drop(); + getMongoService().getDB().getCollection(CollectionNames.REGATTAS.name()).drop(); Competitor hasso = AbstractLeaderboardTest.createCompetitor("Dr. Hasso Plattner"); BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("29erXX", /* typicallyStartsUpwind */ true); final DynamicTrackedRegatta[] trackedRegatta = new DynamicTrackedRegatta[1]; From 8940c4b27e10b0dfe721418f43af8a1a2c70f417 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 15:12:11 +0200 Subject: [PATCH 06/11] first draft of Kieler Woche official result importer which parses all fields / tags found in the examples --- .../sailing/kiworesultimport/impl/CrewImpl.java | 16 ++++++++++++---- .../mongodb/test/AbstractMongoDBTest.java | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java index b2981501d94..88a7739d9c8 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/CrewImpl.java @@ -1,6 +1,11 @@ package com.sap.sailing.kiworesultimport.impl; +import java.util.ArrayList; +import java.util.List; + +import org.w3c.dom.Element; import org.w3c.dom.Node; +import org.w3c.dom.NodeList; import com.sap.sailing.kiworesultimport.Crew; import com.sap.sailing.kiworesultimport.Crewmember; @@ -14,14 +19,17 @@ public class CrewImpl extends AbstractNodeWrapper implements Crew { @Override public Skipper getSkipper() { - // TODO Auto-generated method stub - return null; + return new SkipperImpl(((Element) getNode()).getElementsByTagName("Skipper").item(0)); } @Override public Iterable getCrewmembers() { - // TODO Auto-generated method stub - return null; + List result = new ArrayList(); + final NodeList crewmembers = ((Element) getNode()).getElementsByTagName("Crewmember"); + for (int i=0; i Date: Fri, 8 Jun 2012 15:18:46 +0200 Subject: [PATCH 07/11] dropping DB after obtaining it; removed drop() calls for individual collections in test cases --- .../sailing/kiworesultimport/test/ParserTest.java | 12 ++++++++++++ .../com/sap/sailing/kiworesultimport/Verteilung.java | 7 +++++++ .../kiworesultimport/impl/VerteilungImpl.java | 10 ++++++++++ .../test/TestStoringAndLoadingEventsAndRegattas.java | 7 ------- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java index b12e68ed5bb..15e0c07650a 100755 --- a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java +++ b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java @@ -9,6 +9,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.net.URL; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -20,9 +21,11 @@ import org.xml.sax.SAXException; import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.kiworesultimport.Boat; +import com.sap.sailing.kiworesultimport.Crewmember; import com.sap.sailing.kiworesultimport.ResultList; import com.sap.sailing.kiworesultimport.ResultListParser; import com.sap.sailing.kiworesultimport.ResultListParserFactory; +import com.sap.sailing.kiworesultimport.Skipper; import com.sap.sailing.kiworesultimport.Verteilung; public class ParserTest { @@ -61,5 +64,14 @@ public class ParserTest { Iterable boats = verteilung.getBoats(); assertFalse(Util.isEmpty(boats)); assertEquals(48, Util.size(boats)); + Boat DEN9 = verteilung.getBoatBySailID("DEN 9"); + assertNotNull(DEN9); + Skipper DEN9Skipper = DEN9.getCrew().getSkipper(); + assertEquals("Norregaard, Allan (1981) Kolding", DEN9Skipper.getName()); + assertEquals(new URL("http://www.sailing.org/biog.php?id=DENAN1"), DEN9Skipper.getIsaf()); + Iterable DEN9Crewmembers = DEN9.getCrew().getCrewmembers(); + assertEquals(1, Util.size(DEN9Crewmembers)); + Crewmember DEN9Crewmember = DEN9Crewmembers.iterator().next(); + assertEquals("Lang, Peter (1989) Kolding Sejlklub", DEN9Crewmember.getName()); } } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java index 9c3d4e6d3a0..b6f7d1d36ab 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java @@ -2,4 +2,11 @@ package com.sap.sailing.kiworesultimport; public interface Verteilung { Iterable getBoats(); + + /** + * Matches sailID with {@link Boat#getSailingNumber()} + * + * @return null if no such {@link Boat} is found in {@link #getBoats}, or the boat found otherwise. + */ + Boat getBoatBySailID(String sailID); } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java index f0491f76df3..266c081c31c 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/VerteilungImpl.java @@ -26,4 +26,14 @@ public class VerteilungImpl extends AbstractNodeWrapper implements Verteilung { return result; } + @Override + public Boat getBoatBySailID(String sailID) { + for (Boat boat : getBoats()) { + if (sailID.equals(boat.getSailingNumber())) { + return boat; + } + } + return null; + } + } diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java index ecc6ea5adeb..4b59ce5a85c 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java @@ -45,7 +45,6 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboard; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; -import com.sap.sailing.domain.persistence.impl.CollectionNames; import com.sap.sailing.domain.test.AbstractLeaderboardTest; import com.sap.sailing.domain.test.MockedTrackedRaceWithFixedRank; import com.sap.sailing.domain.tracking.DynamicTrackedRegatta; @@ -89,9 +88,6 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest @Test public void testLoadStoreSimpleRegattaLeaderboard() { - // explicitly drop; it seems that the overall dropDatabase isn't always effective yet when this test is run - getMongoService().getDB().getCollection(CollectionNames.LEADERBOARDS.name()).drop(); - getMongoService().getDB().getCollection(CollectionNames.REGATTAS.name()).drop(); RacingEventService res = new RacingEventServiceImpl(getMongoService()); final int numberOfQualifyingRaces = 5; final int numberOfFinalRaces = 7; @@ -117,9 +113,6 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest @Test public void testLoadStoreRegattaLeaderboardWithScoreCorrections() { - // explicitly drop; it seems that the overall dropDatabase isn't always effective yet when this test is run - getMongoService().getDB().getCollection(CollectionNames.LEADERBOARDS.name()).drop(); - getMongoService().getDB().getCollection(CollectionNames.REGATTAS.name()).drop(); Competitor hasso = AbstractLeaderboardTest.createCompetitor("Dr. Hasso Plattner"); BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("29erXX", /* typicallyStartsUpwind */ true); final DynamicTrackedRegatta[] trackedRegatta = new DynamicTrackedRegatta[1]; From 6cc7c39db653808b090c1624913a9d3145e15146 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 15:24:34 +0200 Subject: [PATCH 08/11] successful test of most raw parsed Kieler Woche result list attributes --- .../sailing/kiworesultimport/test/ParserTest.java | 14 ++++++++++++++ .../sailing/kiworesultimport/impl/RaceImpl.java | 2 +- .../sailing/kiworesultimport/impl/RacesImpl.java | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java index 15e0c07650a..dd5c31385c3 100755 --- a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java +++ b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java @@ -10,6 +10,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.util.Iterator; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -22,6 +23,8 @@ import org.xml.sax.SAXException; import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.kiworesultimport.Boat; import com.sap.sailing.kiworesultimport.Crewmember; +import com.sap.sailing.kiworesultimport.Race; +import com.sap.sailing.kiworesultimport.Races; import com.sap.sailing.kiworesultimport.ResultList; import com.sap.sailing.kiworesultimport.ResultListParser; import com.sap.sailing.kiworesultimport.ResultListParserFactory; @@ -66,6 +69,7 @@ public class ParserTest { assertEquals(48, Util.size(boats)); Boat DEN9 = verteilung.getBoatBySailID("DEN 9"); assertNotNull(DEN9); + assertEquals(7, (int) DEN9.getPosition()); Skipper DEN9Skipper = DEN9.getCrew().getSkipper(); assertEquals("Norregaard, Allan (1981) Kolding", DEN9Skipper.getName()); assertEquals(new URL("http://www.sailing.org/biog.php?id=DENAN1"), DEN9Skipper.getIsaf()); @@ -73,5 +77,15 @@ public class ParserTest { assertEquals(1, Util.size(DEN9Crewmembers)); Crewmember DEN9Crewmember = DEN9Crewmembers.iterator().next(); assertEquals("Lang, Peter (1989) Kolding Sejlklub", DEN9Crewmember.getName()); + Races DEN9Races = DEN9.getRaces(); + assertNotNull(DEN9Races); + assertEquals(2, Util.size(DEN9Races.getRaces())); + Iterator i = DEN9Races.getRaces().iterator(); + Race r1 = i.next(); + assertEquals(9.00, r1.getPoints(), 0.0000000001); + assertEquals(1, (int) r1.getNumber()); + Race r2 = i.next(); + assertEquals(1.00, r2.getPoints(), 0.0000000001); + assertEquals(2, (int) r2.getNumber()); } } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java index 7f7671bfa27..203a09da9e9 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RaceImpl.java @@ -12,7 +12,7 @@ public class RaceImpl extends AbstractNodeWrapper implements Race { @Override public Double getPoints() { - return Double.valueOf(getNode().getAttributes().getNamedItem("points").getNodeValue()); + return Double.valueOf(getNode().getAttributes().getNamedItem("points").getNodeValue().replace(',', '.')); } @Override diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java index 9f7e6b02c44..5af3e283b04 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/RacesImpl.java @@ -18,7 +18,7 @@ public class RacesImpl extends AbstractNodeWrapper implements Races { @Override public Double getTotalPoints() { - return Double.valueOf(getNode().getAttributes().getNamedItem("totalpoints").getNodeValue()); + return Double.valueOf(getNode().getAttributes().getNamedItem("totalpoints").getNodeValue().replace(',', '.')); } @Override From 56a69bb949f4e763ed46382254b754cfe910331f Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 15:33:15 +0200 Subject: [PATCH 09/11] added parsing of date/time to Kieler Woche result list --- .../META-INF/MANIFEST.MF | 3 ++- .../kiworesultimport/test/ParserTest.java | 3 +++ .../META-INF/MANIFEST.MF | 4 ++- .../sailing/kiworesultimport/ResultList.java | 4 +++ .../kiworesultimport/impl/ResultListImpl.java | 25 +++++++++++++++++++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF index d3ec5ef6809..ac795d96e20 100755 --- a/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.kiworesultimport.test/META-INF/MANIFEST.MF @@ -7,4 +7,5 @@ Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Require-Bundle: org.junit4;bundle-version="4.8.2", com.sap.sailing.kiworesultimport, - com.sap.sailing.domain.common + com.sap.sailing.domain.common, + com.sap.sailing.domain diff --git a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java index dd5c31385c3..ed2fd3cc502 100755 --- a/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java +++ b/java/com.sap.sailing.kiworesultimport.test/src/com/sap/sailing/kiworesultimport/test/ParserTest.java @@ -10,6 +10,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.util.GregorianCalendar; import java.util.Iterator; import javax.xml.parsers.DocumentBuilderFactory; @@ -20,6 +21,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; +import com.sap.sailing.domain.base.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.Util; import com.sap.sailing.kiworesultimport.Boat; import com.sap.sailing.kiworesultimport.Crewmember; @@ -87,5 +89,6 @@ public class ParserTest { Race r2 = i.next(); assertEquals(1.00, r2.getPoints(), 0.0000000001); assertEquals(2, (int) r2.getNumber()); + assertEquals(new MillisecondsTimePoint(new GregorianCalendar(2011, 05, 18, 16, 26).getTime()), resultList.getTimePoint()); } } diff --git a/java/com.sap.sailing.kiworesultimport/META-INF/MANIFEST.MF b/java/com.sap.sailing.kiworesultimport/META-INF/MANIFEST.MF index 897112d18d7..7a188858306 100755 --- a/java/com.sap.sailing.kiworesultimport/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.kiworesultimport/META-INF/MANIFEST.MF @@ -5,5 +5,7 @@ Bundle-SymbolicName: com.sap.sailing.kiworesultimport Bundle-Version: 1.0.0.qualifier Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.7 -Require-Bundle: com.sap.sailing.server +Require-Bundle: com.sap.sailing.server, + com.sap.sailing.domain.common, + com.sap.sailing.domain Export-Package: com.sap.sailing.kiworesultimport diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java index 110fbe6094e..956bc1ea8e5 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ResultList.java @@ -1,5 +1,7 @@ package com.sap.sailing.kiworesultimport; +import com.sap.sailing.domain.common.TimePoint; + public interface ResultList { String getLegende(); @@ -15,5 +17,7 @@ public interface ResultList { String getDate(); + TimePoint getTimePoint(); + Verteilung getVerteilung(); } diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java index ab168d3342c..8fa37682eea 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ResultListImpl.java @@ -1,12 +1,24 @@ package com.sap.sailing.kiworesultimport.impl; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.logging.Logger; + import org.w3c.dom.Element; import org.w3c.dom.Node; +import com.sap.sailing.domain.base.impl.MillisecondsTimePoint; +import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.kiworesultimport.ResultList; import com.sap.sailing.kiworesultimport.Verteilung; public class ResultListImpl extends AbstractNodeWrapper implements ResultList { + private static final Logger logger = Logger.getLogger(ResultListImpl.class.getName()); + + private static final SimpleDateFormat df = new SimpleDateFormat("dd. MMM yyyy hh:mm", Locale.GERMAN); + public ResultListImpl(Node node) { super(node); } @@ -50,4 +62,17 @@ public class ResultListImpl extends AbstractNodeWrapper implements ResultList { public Verteilung getVerteilung() { return new VerteilungImpl(((Element) getNode()).getElementsByTagName("Verteilung").item(0)); } + + @Override + public TimePoint getTimePoint() { + TimePoint result = null; + String dateTime = getDate()+" "+getTime(); + try { + Date d = df.parse(dateTime); + result = new MillisecondsTimePoint(d); + } catch (ParseException e) { + logger.info("Failed to parse result list date/time "+dateTime); + } + return result; + } } From d7086190df20a4308d607dd7875c3ff03f8797ee Mon Sep 17 00:00:00 2001 From: fmittag Date: Fri, 8 Jun 2012 15:35:42 +0200 Subject: [PATCH 10/11] moved the regatta selection to the tractrac management panel --- .../TracTracEventManagementPanel.java | 53 +++++++++++++++++-- .../TrackedRacesListComposite.java | 43 --------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java index fcf24db061c..8d89bd601a6 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TracTracEventManagementPanel.java @@ -75,7 +75,9 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { private final ListBox previousConfigurationsComboBox; private final Grid grid; private final List availableTracTracRaces; - + private Iterable allRegattas; + private final ListBox regattaListBox; + public TracTracEventManagementPanel(final SailingServiceAsync sailingService, ErrorReporter errorReporter, RegattaRefresher regattaRefresher, StringMessages stringConstants) { super(sailingService, regattaRefresher, errorReporter, new RaceSelectionModel(), stringConstants); @@ -273,6 +275,18 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { trackedRacesCaptionPanel.setStyleName("bold"); // text box for filtering the cell table + // the regatta selection for a tracked race + HorizontalPanel regattaPanel = new HorizontalPanel(); + racesPanel.add(regattaPanel); + Label lblRegattas = new Label("Regatta used for the tracked race:"); + lblRegattas.setWordWrap(false); + regattaPanel.setCellVerticalAlignment(lblRegattas, HasVerticalAlignment.ALIGN_MIDDLE); + regattaPanel.setSpacing(5); + regattaPanel.add(lblRegattas); + regattaListBox = new ListBox(); + regattaPanel.add(regattaListBox); + regattaPanel.setCellVerticalAlignment(regattaListBox, HasVerticalAlignment.ALIGN_MIDDLE); + HorizontalPanel filterPanel = new HorizontalPanel(); filterPanel.setSpacing(5); racesPanel.add(filterPanel); @@ -455,7 +469,7 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { private void trackSelectedRaces(boolean trackWind, boolean correctWindByDeclination) { String liveURI = liveURIBox.getValue(); String storedURI = storedURIBox.getValue(); - RegattaDTO selectedRegatta = trackedRacesListComposite.getSelectedRegatta(); + RegattaDTO selectedRegatta = getSelectedRegatta(); RegattaIdentifier regattaIdentifier = null; if(selectedRegatta != null) { regattaIdentifier = new RegattaName(selectedRegatta.name); @@ -494,10 +508,39 @@ public class TracTracEventManagementPanel extends AbstractEventManagementPanel { } @Override - public void fillRegattas(List result) { - trackedRacesListComposite.fillRegattas(result); + public void fillRegattas(List regattas) { + trackedRacesListComposite.fillRegattas(regattas); + + RegattaDTO oldRegattaSelection = getSelectedRegatta(); + regattaListBox.clear(); + regattaListBox.addItem("No regatta"); + if (!regattas.isEmpty()) { + regattaListBox.addItem("No regatta"); + for (RegattaDTO regatta : regattas) { + regattaListBox.addItem(regatta.name); + if(oldRegattaSelection != null && oldRegattaSelection.name.equals(regatta.name)) { + regattaListBox.setSelectedIndex(regattaListBox.getItemCount()-1); + } + } + } + allRegattas = new ArrayList(regattas); } - + + public RegattaDTO getSelectedRegatta() { + RegattaDTO result = null; + int selIndex = regattaListBox.getSelectedIndex(); + if(selIndex > 0) { // the zero index represents the 'no selection' text + String itemText = regattaListBox.getItemText(selIndex); + for(RegattaDTO regattaDTO: allRegattas) { + if(regattaDTO.name.equals(itemText)) { + result = regattaDTO; + break; + } + } + } + return result; + } + private void fillRaceListFromAvailableRacesApplyingFilter(String text) { List wordsToFilter = Arrays.asList(text.split(" ")); raceList.getList().clear(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java index 59458d5d0ff..abdcaf8cc5c 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/TrackedRacesListComposite.java @@ -33,7 +33,6 @@ import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.ListBox; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.VerticalPanel; @@ -82,10 +81,6 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< private ListDataProvider raceList; private Iterable allRaces; - - private Iterable allRegattas; - - private ListBox regattaListBox; private final VerticalPanel panel; @@ -144,18 +139,6 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< panel = new VerticalPanel(); setWidget(panel); - // the regatta selection for a tracked race - HorizontalPanel regattaPanel = new HorizontalPanel(); - panel.add(regattaPanel); - Label lblRegattas = new Label("Regatta used for the tracked race:"); - lblRegattas.setWordWrap(false); - regattaPanel.setCellVerticalAlignment(lblRegattas, HasVerticalAlignment.ALIGN_MIDDLE); - regattaPanel.setSpacing(5); - regattaPanel.add(lblRegattas); - regattaListBox = new ListBox(); - regattaPanel.add(regattaListBox); - regattaPanel.setCellVerticalAlignment(regattaListBox, HasVerticalAlignment.ALIGN_MIDDLE); - HorizontalPanel filterPanel = new HorizontalPanel(); panel.add(filterPanel); Label lblFilterRaces = new Label(stringMessages.filterRacesByName() + ":"); @@ -454,10 +437,7 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< @Override public void fillRegattas(List regattas) { - RegattaDTO oldRegattaSelection = getSelectedRegatta(); - regattaListBox.clear(); if (regattas.isEmpty()) { - regattaListBox.addItem("No regatta"); raceTable.setVisible(false); btnUntrack.setVisible(false); btnRemoveRace.setVisible(false); @@ -471,13 +451,6 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< btnRemoveRace.setEnabled(false); noTrackedRacesLabel.setVisible(false); btnSetDelayToLive.setVisible(true); - regattaListBox.addItem("No regatta"); - for (RegattaDTO regatta : regattas) { - regattaListBox.addItem(regatta.name); - if(oldRegattaSelection != null && oldRegattaSelection.name.equals(regatta.name)) { - regattaListBox.setSelectedIndex(regattaListBox.getItemCount()-1); - } - } } List newAllRaces = new ArrayList(); List newAllRegattas = new ArrayList(); @@ -492,7 +465,6 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< } } allRaces = newAllRaces; - allRegattas = newAllRegattas; fillRaceListFromAvailableRacesApplyingFilter(); raceSelectionProvider.setAllRaces(newAllRaceIdentifiers); // have this object be notified; triggers onRaceSelectionChange } @@ -544,21 +516,6 @@ public class TrackedRacesListComposite extends SimplePanel implements Component< }); } - public RegattaDTO getSelectedRegatta() { - RegattaDTO result = null; - int selIndex = regattaListBox.getSelectedIndex(); - if(selIndex > 0) { // the zero index represents the 'no selection' text - String itemText = regattaListBox.getItemText(selIndex); - for(RegattaDTO regattaDTO: allRegattas) { - if(regattaDTO.name.equals(itemText)) { - result = regattaDTO; - break; - } - } - } - return result; - } - private void fillRaceListFromAvailableRacesApplyingFilter() { String text = filterRacesTextbox.getText(); List wordsToFilter = Arrays.asList(text.split(" ")); From 9cff6a1e23b4d38d55cafabfcacb6e0462b1612c Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 15:35:46 +0200 Subject: [PATCH 11/11] changed dropping routine such that not DB.dropDatabase() is used (doesn't work reliably) but drop() on collection --- .../sap/sailing/mongodb/test/AbstractMongoDBTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java index b8f14753d28..a91faa902d3 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java @@ -7,6 +7,7 @@ import java.net.UnknownHostException; import org.junit.Before; import com.mongodb.DB; +import com.mongodb.DBCollection; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.sap.sailing.mongodb.MongoDBConfiguration; @@ -37,10 +38,17 @@ public abstract class AbstractMongoDBTest { mongo = newMongo(); assertNotNull(mongo); db = mongo.getDB(getDBConfiguration().getDatabaseName()); - db.dropDatabase(); + dropAllCollections(db); assertNotNull(db); } + private void dropAllCollections(DB theDB) { + for (String collectionName : theDB.getCollectionNames()) { + DBCollection c = theDB.getCollection(collectionName); + c.drop(); + } + } + protected MongoDBService getMongoService() { return service; }