diff --git a/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF index e3175debe2b..f2f85b425ff 100755 --- a/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.persistence/META-INF/MANIFEST.MF @@ -10,4 +10,4 @@ Require-Bundle: com.sap.sailing.mongodb, com.mongodb.driver;bundle-version="2.6.2", com.sap.sailing.domain.common Export-Package: com.sap.sailing.domain.persistence, - com.sap.sailing.domain.persistence.impl;x-friends:="com.sap.sailing.mongodb.test" + com.sap.sailing.domain.persistence.impl;x-friends:="com.sap.sailing.mongodb.test,com.sap.sailing.domain.swisstimingadapter.test" diff --git a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF index 26df0791eee..4ccd35324e1 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF @@ -13,7 +13,8 @@ Require-Bundle: com.sap.sailing.domain.swisstimingadapter.persistence, com.sap.sailing.mongodb, com.googlecode.java-diff-utils;bundle-version="1.3.0", com.sap.sailing.server, - com.sap.sailing.domain.common + com.sap.sailing.domain.common, + com.sap.sailing.domain.persistence Bundle-ClassPath: resources/, . Import-Package: com.sap.sailing.server, diff --git a/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/EndToEndListeningStoreAndFowardTest.java b/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/EndToEndListeningStoreAndFowardTest.java index f25cdece50f..fd09bf2bc3a 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/EndToEndListeningStoreAndFowardTest.java +++ b/java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/EndToEndListeningStoreAndFowardTest.java @@ -69,6 +69,7 @@ public class EndToEndListeningStoreAndFowardTest { logger.info("EndToEndListeningStoreAndFowardTest.setUp"); MongoDBService mongoDBService = MongoDBService.INSTANCE; db = mongoDBService.getDB(); + db.getCollection(com.sap.sailing.domain.persistence.impl.CollectionNames.REGATTAS.name()).drop(); swissTimingAdapterPersistence = SwissTimingAdapterPersistence.INSTANCE; swissTimingAdapterPersistence.dropAllMessageData(); swissTimingAdapterPersistence.dropAllRaceMasterData(); @@ -83,7 +84,7 @@ public class EndToEndListeningStoreAndFowardTest { lastMessageCountCollection.update(new BasicDBObject(), new BasicDBObject().append(FieldNames.LAST_MESSAGE_COUNT.name(), 0l), /* upsert */true, /* multi */false); - racingEventService = new RacingEventServiceImpl(); + racingEventService = new RacingEventServiceImpl(mongoDBService); raceHandles = new ArrayList(); } @@ -105,9 +106,9 @@ public class EndToEndListeningStoreAndFowardTest { setUpUsingScript(racesToTrack, scriptName); Set allTrackedRaces = new HashSet(); - Iterable allEvents = racingEventService.getAllRegattas(); - for (Regatta event : allEvents) { - DynamicTrackedRegatta trackedRegatta = racingEventService.getTrackedRegatta(event); + Iterable allRegattas = racingEventService.getAllRegattas(); + for (Regatta regatta : allRegattas) { + DynamicTrackedRegatta trackedRegatta = racingEventService.getTrackedRegatta(regatta); Iterable trackedRaces = trackedRegatta.getTrackedRaces(); for (TrackedRace trackedRace : trackedRaces) { allTrackedRaces.add(trackedRace); @@ -134,9 +135,9 @@ public class EndToEndListeningStoreAndFowardTest { setUpUsingScript(racesToTrack, scriptName1, scriptName2); Set allTrackedRaces = new HashSet(); - Iterable allEvents = racingEventService.getAllRegattas(); - for (Regatta event : allEvents) { - DynamicTrackedRegatta trackedRegatta = racingEventService.getTrackedRegatta(event); + Iterable allRegattas = racingEventService.getAllRegattas(); + for (Regatta regatta : allRegattas) { + DynamicTrackedRegatta trackedRegatta = racingEventService.getTrackedRegatta(regatta); Iterable trackedRaces = trackedRegatta.getTrackedRaces(); for (TrackedRace trackedRace : trackedRaces) { allTrackedRaces.add(trackedRace); 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 986c050acd8..b118d69fcbd 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 @@ -23,16 +23,16 @@ import org.w3c.dom.Node; import org.xml.sax.SAXException; import com.sap.sailing.domain.base.impl.MillisecondsTimePoint; +import com.sap.sailing.domain.common.MaxPointsReason; 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.ParserFactory; 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.ParserFactory; import com.sap.sailing.kiworesultimport.Skipper; -import com.sap.sailing.kiworesultimport.Verteilung; public class ParserTest { private static final String RESOURCES = "resources/"; @@ -63,7 +63,7 @@ public class ParserTest { ResultListParser parser = ParserFactory.INSTANCE.createResultListParser(); ResultList resultList = parser.parse(getSampleInputStream()); assertNotNull(resultList); - assertNull(resultList.getVerteilung().getBoatBySailID("SWE 1196").getCrew().getSkipper().getIsaf()); + assertNull(resultList.getBoatBySailID("SWE 1196").getCrew().getSkipper().getIsaf()); } @Test @@ -71,7 +71,9 @@ public class ParserTest { ResultListParser parser = ParserFactory.INSTANCE.createResultListParser(); ResultList resultList = parser.parse(getSampleInputStream()); assertNotNull(resultList); - assertNull(resultList.getVerteilung().getBoatBySailID("SWE 1196").getRaces().getRaces().iterator().next().getStatus()); + assertNull(resultList.getBoatBySailID("SWE 1196").getRaces().getRaces().iterator().next().getStatus()); + assertEquals(MaxPointsReason.NONE, resultList.getBoatBySailID("SWE 1196").getRaces().getRaces() + .iterator().next().getMaxPointsReason()); } @Test @@ -79,7 +81,9 @@ public class ParserTest { ResultListParser parser = ParserFactory.INSTANCE.createResultListParser(); ResultList resultList = parser.parse(getSampleInputStream()); assertNotNull(resultList); - assertEquals("DNC", resultList.getVerteilung().getBoatBySailID("GER 1199").getRaces().getRaces().iterator().next().getStatus()); + assertEquals("DNC", resultList.getBoatBySailID("GER 1199").getRaces().getRaces().iterator().next().getStatus()); + assertEquals(MaxPointsReason.DNC, resultList.getBoatBySailID("GER 1199").getRaces().getRaces() + .iterator().next().getMaxPointsReason()); } @Test @@ -89,12 +93,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(); + Iterable boats = resultList.getBoats(); assertFalse(Util.isEmpty(boats)); assertEquals(48, Util.size(boats)); - Boat DEN9 = verteilung.getBoatBySailID("DEN 9"); + Boat DEN9 = resultList.getBoatBySailID("DEN 9"); assertNotNull(DEN9); assertEquals(7, (int) DEN9.getPosition()); Skipper DEN9Skipper = DEN9.getCrew().getSkipper(); diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ParserFactory.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ParserFactory.java index 5d4101d6d98..7ab55729597 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ParserFactory.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ParserFactory.java @@ -8,4 +8,6 @@ public interface ParserFactory { ResultListParser createResultListParser(); StartberichtParser createStartberichtParser(); + + ZipFileParser createZipFileParser(); } 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 956bc1ea8e5..2cc306ceff9 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 @@ -17,7 +17,17 @@ public interface ResultList { String getDate(); + /** + * Point in time when this result list was published + */ TimePoint getTimePoint(); - Verteilung getVerteilung(); + 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/Start.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Start.java index da586f0d74a..e9fa23cc4c1 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Start.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Start.java @@ -5,11 +5,11 @@ import java.text.ParseException; import com.sap.sailing.domain.common.TimePoint; public interface Start { - String getBootsklasse(); + String getBoatClass(); - Integer getWettfahrt(); + Integer getRaceNumber(); - String getStartgruppe(); + String getFleetName(); String getKurs(); 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 deleted file mode 100755 index b6f7d1d36ab..00000000000 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/Verteilung.java +++ /dev/null @@ -1,12 +0,0 @@ -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/ZipFile.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ZipFile.java new file mode 100755 index 00000000000..27da93f9e0d --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ZipFile.java @@ -0,0 +1,7 @@ +package com.sap.sailing.kiworesultimport; + +public interface ZipFile { + Iterable getStartberichte(); + + Iterable getResultLists(); +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ZipFileParser.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ZipFileParser.java new file mode 100755 index 00000000000..95410e98162 --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/ZipFileParser.java @@ -0,0 +1,7 @@ +package com.sap.sailing.kiworesultimport; + +import java.io.InputStream; + +public interface ZipFileParser { + ZipFile parse(InputStream inputStream); +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ParserFactoryImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ParserFactoryImpl.java index 11584e57897..10c385cbf22 100755 --- a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ParserFactoryImpl.java +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ParserFactoryImpl.java @@ -3,6 +3,7 @@ package com.sap.sailing.kiworesultimport.impl; import com.sap.sailing.kiworesultimport.ParserFactory; import com.sap.sailing.kiworesultimport.ResultListParser; import com.sap.sailing.kiworesultimport.StartberichtParser; +import com.sap.sailing.kiworesultimport.ZipFileParser; public class ParserFactoryImpl implements ParserFactory { @@ -15,4 +16,9 @@ public class ParserFactoryImpl implements ParserFactory { public StartberichtParser createStartberichtParser() { return new StartberichtParserImpl(); } + + @Override + public ZipFileParser createZipFileParser() { + return new ZipFileParserImpl(); + } } 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 8fa37682eea..a71e0c6b3c4 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 @@ -2,17 +2,20 @@ package com.sap.sailing.kiworesultimport.impl; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Locale; import java.util.logging.Logger; import org.w3c.dom.Element; import org.w3c.dom.Node; +import org.w3c.dom.NodeList; import com.sap.sailing.domain.base.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.TimePoint; +import com.sap.sailing.kiworesultimport.Boat; 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()); @@ -58,11 +61,6 @@ public class ResultListImpl extends AbstractNodeWrapper implements ResultList { return getNode().getAttributes().getNamedItem("date").getNodeValue(); } - @Override - public Verteilung getVerteilung() { - return new VerteilungImpl(((Element) getNode()).getElementsByTagName("Verteilung").item(0)); - } - @Override public TimePoint getTimePoint() { TimePoint result = null; @@ -75,4 +73,24 @@ public class ResultListImpl extends AbstractNodeWrapper implements ResultList { } return result; } + + @Override + public Iterable getBoats() { + List result = new ArrayList(); + final NodeList boats = ((Element) ((Element) getNode()).getElementsByTagName("Verteilung").item(0)).getElementsByTagName("Boat"); + for (int i=0; i getBoats() { - List result = new ArrayList(); - final NodeList boats = ((Element) getNode()).getElementsByTagName("Boat"); - for (int i=0; i startberichte; + private final Map, Start> startsByBoatclassAndWettfahrtAndFleet; + private final List resultLists; + private final Map>> fleetsPerBoatClassAndRace; + + public ZipFileImpl(Iterable startberichte, Iterable resultLists) { + this.fleetsPerBoatClassAndRace = new HashMap>>(); + this.startberichte = new ArrayList(); + this.startsByBoatclassAndWettfahrtAndFleet = new HashMap, Start>(); + this.resultLists = new ArrayList(); + for (Startbericht startbericht : startberichte) { + for (Start start : startbericht.getStarts()) { + startsByBoatclassAndWettfahrtAndFleet.put( + new Triple(start.getBoatClass(), start.getRaceNumber(), start + .getFleetName()), start); + Map> fleetsForBoatClass = fleetsPerBoatClassAndRace.get(start.getBoatClass()); + if (fleetsForBoatClass == null) { + fleetsForBoatClass = new HashMap>(); + fleetsPerBoatClassAndRace.put(start.getBoatClass(), fleetsForBoatClass); + } + Set fleetsForTheBoatClassAndRace = fleetsForBoatClass.get(start.getRaceNumber()); + if (fleetsForTheBoatClassAndRace == null) { + fleetsForTheBoatClassAndRace = new HashSet(); + fleetsForBoatClass.put(start.getRaceNumber(), fleetsForTheBoatClassAndRace); + } + fleetsForTheBoatClassAndRace.add(start.getFleetName()); + } + } + } + + @Override + public Iterable getStartberichte() { + return startberichte; + } + + @Override + public Iterable getResultLists() { + return resultLists; + } + +} diff --git a/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ZipFileParserImpl.java b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ZipFileParserImpl.java new file mode 100755 index 00000000000..feb4da0b6eb --- /dev/null +++ b/java/com.sap.sailing.kiworesultimport/src/com/sap/sailing/kiworesultimport/impl/ZipFileParserImpl.java @@ -0,0 +1,16 @@ +package com.sap.sailing.kiworesultimport.impl; + +import java.io.InputStream; + +import com.sap.sailing.kiworesultimport.ZipFile; +import com.sap.sailing.kiworesultimport.ZipFileParser; + +public class ZipFileParserImpl implements ZipFileParser { + + @Override + public ZipFile parse(InputStream inputStream) { + // TODO Auto-generated method stub + return null; + } + +}