diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorChangeListener.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorChangeListener.java index a72bbbb6721..3eefc4c815d 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorChangeListener.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorChangeListener.java @@ -1,5 +1,7 @@ package com.sap.sailing.domain.base; +import java.net.URI; + import com.sap.sse.common.Color; public interface CompetitorChangeListener extends BoatChangeListener, NationalityChangeListener { @@ -8,4 +10,6 @@ public interface CompetitorChangeListener extends BoatChangeListener, Nationalit void nameChanged(String oldName, String newName); void emailChanged(String oldEmail, String newEmail); + + void flagImageChanged(URI oldFlagImageURI, URI newFlagImageURI); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CompetitorImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CompetitorImpl.java index 6fcdf0a67de..c6219199e53 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CompetitorImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CompetitorImpl.java @@ -145,6 +145,12 @@ public class CompetitorImpl implements DynamicCompetitor { @Override public void setFlagImage(URI flagImage) { + final URI oldFlagImage = this.flagImage; this.flagImage = flagImage; + if (!Util.equalsWithNull(oldFlagImage, flagImage)) { + for (CompetitorChangeListener listener : getListeners()) { + listener.flagImageChanged(oldFlagImage, flagImage); + } + } } } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorListenerTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorListenerTest.java index ca8acdfaa70..0c3a2217219 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorListenerTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CompetitorListenerTest.java @@ -7,6 +7,8 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; import org.junit.Before; import org.junit.Test; @@ -45,6 +47,12 @@ public class CompetitorListenerTest extends AbstractSerializationTest { private Color newColor; private DynamicCompetitor competitor; private DomainFactoryImpl baseDomainFactory; + private boolean emailChanged; + private String oldEmail; + private String newEmail; + private boolean flagImageChanged; + private URI oldFlagImageURL; + private URI newFlagImageURL; @Before public void setUp() { @@ -63,6 +71,12 @@ public class CompetitorListenerTest extends AbstractSerializationTest { colorChanged = false; oldColor = null; newColor = null; + emailChanged = false; + oldEmail = null; + newEmail = null; + flagImageChanged = false; + oldFlagImageURL = null; + newFlagImageURL = null; listener = new CompetitorChangeListener() { private static final long serialVersionUID = 4581029778988240209L; @@ -97,7 +111,16 @@ public class CompetitorListenerTest extends AbstractSerializationTest { @Override public void emailChanged(String oldEmail, String newEmail) { - //TODO + emailChanged = true; + CompetitorListenerTest.this.oldEmail = oldEmail; + CompetitorListenerTest.this.newEmail = newEmail; + } + + @Override + public void flagImageChanged(URI oldFlagImageURL, URI newFlagImageURL) { + flagImageChanged = true; + CompetitorListenerTest.this.oldFlagImageURL = oldFlagImageURL; + CompetitorListenerTest.this.newFlagImageURL = newFlagImageURL; } }; competitor.addCompetitorChangeListener(listener); @@ -126,6 +149,22 @@ public class CompetitorListenerTest extends AbstractSerializationTest { assertFalse(nationalityChanged); } + @Test + public void testFlagChange() throws URISyntaxException { + competitor.setFlagImage(new URI("http://www.something.de/pic.png")); + assertTrue(flagImageChanged); + assertNull(oldFlagImageURL); + assertEquals(new URI("http://www.something.de/pic.png"), newFlagImageURL); + } + + @Test + public void testEmailChange() throws URISyntaxException { + competitor.setEmail("hasso.plattner@sap.com"); + assertTrue(emailChanged); + assertNull(oldEmail); + assertEquals("hasso.plattner@sap.com", newEmail); + } + @Test public void testSimpleCompetitorListenerPatternForSailId() { final String myOldSailId = competitor.getBoat().getSailID(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java index 6dfe6c5521a..79397acf234 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/LeaderboardCacheManager.java @@ -1,5 +1,6 @@ package com.sap.sailing.domain.leaderboard; +import java.net.URI; import java.util.Collections; import java.util.HashSet; import java.util.Map; @@ -121,7 +122,11 @@ public class LeaderboardCacheManager { public void emailChanged(String oldEmail, String newEmail) { //ignore (email not shown in leaderboard) } - + + @Override + public void flagImageChanged(URI oldFlagImageURL, URI newFlagImageURL) { + removeFromCache(leaderboard); + } } private class CacheInvalidationUponScoreCorrectionListener implements ScoreCorrectionListener {