Skip to content

Commit 7daa0e8

Browse files
committed
added channel content changed listener
1 parent 59d6425 commit 7daa0e8

8 files changed

+143
-11
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package net.sharksystem.asap;
2+
3+
public interface ASAPChannelContentChangedListener {
4+
void asapChannelContentChanged(CharSequence format, CharSequence uri, int era);
5+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package net.sharksystem.asap;
2+
3+
public interface ASAPChannelContentChangedListenerManagement {
4+
/**
5+
* Add listener for changes in ASAP environment
6+
* @param listener listener which is to be added
7+
*/
8+
void addASAPChannelContentChangedListener(CharSequence format, ASAPChannelContentChangedListener listener);
9+
10+
/**
11+
* Remove changes listener
12+
* @param listener listener which is to be removed
13+
*/
14+
void removeASAPChannelContentChangedListener(CharSequence format, ASAPChannelContentChangedListener listener);
15+
16+
}

src/net/sharksystem/asap/ASAPListenerManagingPeer.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.sharksystem.asap;
22

3+
import net.sharksystem.asap.listenermanager.ASAPChannelContentChangedListenerManager;
34
import net.sharksystem.asap.listenermanager.ASAPEnvironmentChangesListenerManager;
45
import net.sharksystem.asap.listenermanager.ASAPMessageReceivedListenerManager;
56

@@ -19,6 +20,22 @@ public void removeASAPMessageReceivedListener(CharSequence format, ASAPMessageRe
1920
this.asapMessageReceivedListenerManager.removeASAPMessageReceivedListener(format, listener);
2021
}
2122

23+
////////////////////////////////////////////////////////////////////////////////////////////////////////
24+
// ASAPChannelContentChangedListener //
25+
////////////////////////////////////////////////////////////////////////////////////////////////////////
26+
protected ASAPChannelContentChangedListenerManager asapChannelContentChangedListenerManager =
27+
new ASAPChannelContentChangedListenerManager();
28+
29+
@Override
30+
public void addASAPChannelContentChangedListener(CharSequence format, ASAPChannelContentChangedListener listener) {
31+
this.asapChannelContentChangedListenerManager.addASAPChannelContentChangedListener(format, listener);
32+
}
33+
34+
@Override
35+
public void removeASAPChannelContentChangedListener(CharSequence format, ASAPChannelContentChangedListener listener) {
36+
this.asapChannelContentChangedListenerManager.removeASAPChannelContentChangedListener(format, listener);
37+
}
38+
2239
////////////////////////////////////////////////////////////////////////////////////////////////////////
2340
// ASAPEnvironmentChangesListener //
2441
////////////////////////////////////////////////////////////////////////////////////////////////////////

src/net/sharksystem/asap/ASAPMessageReceivedListenerManagement.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,10 @@ public interface ASAPMessageReceivedListenerManagement {
88
*/
99
void addASAPMessageReceivedListener(CharSequence format, ASAPMessageReceivedListener listener);
1010
void removeASAPMessageReceivedListener(CharSequence format, ASAPMessageReceivedListener listener);
11+
12+
/**
13+
* @ return number of listeners
14+
* @return
15+
*/
16+
int getNumberListener();
1117
}

src/net/sharksystem/asap/ASAPPeer.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package net.sharksystem.asap;
22

3-
import net.sharksystem.asap.protocol.ASAPConnection;
4-
53
import java.io.IOException;
6-
import java.io.InputStream;
7-
import java.io.OutputStream;
84

95
public interface ASAPPeer extends
106
ASAPMessageSender,
117
ASAPEnvironmentChangesListenerManagement,
12-
ASAPMessageReceivedListenerManagement
8+
ASAPMessageReceivedListenerManagement,
9+
ASAPChannelContentChangedListenerManagement
1310
{
1411
CharSequence UNKNOWN_USER = "anon";
1512
boolean ONLINE_EXCHANGE_DEFAULT = true;

src/net/sharksystem/asap/ASAPPeerFS.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,30 @@ public void chunkReceived(String format, String senderE2E, String uri, int era,
5656
this.log("chunk received listener set - call this one");
5757
this.chunkReceivedListener.chunkReceived(format, senderE2E, uri, era, asapHopList);
5858
} else {
59-
this.log("extract messages from chunk and notify listener");
60-
ASAPMessages receivedMessages =
61-
Helper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolder, era);
59+
this.log("notify listener");
60+
if(this.asapMessageReceivedListenerManager.getNumberListener() > 0) {
61+
this.log("extract messages from chunk and notify listener");
62+
ASAPMessages receivedMessages =
63+
Helper.getMessagesByChunkReceivedInfos(format, senderE2E, uri, this.rootFolder, era);
64+
65+
this.asapMessageReceivedListenerManager.notifyReceived(
66+
format, receivedMessages, true,
67+
senderE2E, asapHopList);
68+
}
6269

63-
this.asapMessageReceivedListenerManager.notifyReceived(
64-
format, receivedMessages, true,
65-
senderE2E, asapHopList);
70+
if(this.asapChannelContentChangedListenerManager.getNumberListener() > 0) {
71+
this.log("notify channel content changed listener");
72+
this.asapChannelContentChangedListenerManager.notifyChanged(format, uri, era, true);
73+
}
6674
}
6775
}
6876

77+
/// TODO this method makes absolutely no sense in that class.
78+
@Override
79+
public int getNumberListener() {
80+
return this.asapMessageReceivedListenerManager.getNumberListener();
81+
}
82+
6983
// TODO move behaviour control into this package
7084

7185
@Override
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package net.sharksystem.asap.listenermanager;
2+
3+
import net.sharksystem.asap.*;
4+
5+
import java.util.HashMap;
6+
7+
public class ASAPChannelContentChangedListenerManager implements ASAPChannelContentChangedListenerManagement {
8+
private HashMap<CharSequence, GenericListenerImplementation<ASAPChannelContentChangedListener>> listenerMap =
9+
new HashMap();
10+
11+
@Override
12+
public void addASAPChannelContentChangedListener(CharSequence format, ASAPChannelContentChangedListener listener) {
13+
GenericListenerImplementation<ASAPChannelContentChangedListener> listenerList = this.listenerMap.get(format);
14+
if(listenerList == null) {
15+
listenerList = new GenericListenerImplementation<ASAPChannelContentChangedListener>();
16+
this.listenerMap.put(format, listenerList);
17+
}
18+
19+
listenerList.addListener(listener);
20+
}
21+
22+
@Override
23+
public void removeASAPChannelContentChangedListener(CharSequence format, ASAPChannelContentChangedListener listener) {
24+
GenericListenerImplementation<ASAPChannelContentChangedListener> listenerList = this.listenerMap.get(format);
25+
if(listenerList != null) {
26+
listenerList.removeListener(listener);
27+
}
28+
}
29+
30+
public int getNumberListener() {
31+
if(this.listenerMap == null) return 0;
32+
return this.listenerMap.size();
33+
}
34+
35+
public void removeAllListeners() {
36+
// reset
37+
this.listenerMap = new HashMap();
38+
}
39+
40+
public void notifyChanged(CharSequence format, CharSequence uri, int era) {
41+
42+
this.notifyChanged(format, uri, era, false);
43+
}
44+
45+
public void notifyChanged(CharSequence format, CharSequence uri, int era, boolean useThreads) {
46+
47+
GenericListenerImplementation<ASAPChannelContentChangedListener> listenerList = this.listenerMap.get(format);
48+
if(listenerList != null) {
49+
ASAPChannelContentChangedListenerManager.ASAPChannelContentChangedNotifier notifier
50+
= new ASAPChannelContentChangedListenerManager.ASAPChannelContentChangedNotifier(format, uri, era);
51+
52+
listenerList.notifyAll(notifier, useThreads);
53+
}
54+
}
55+
56+
public class ASAPChannelContentChangedNotifier implements GenericNotifier<ASAPChannelContentChangedListener> {
57+
private CharSequence format;
58+
private CharSequence uri;
59+
private int era;
60+
61+
ASAPChannelContentChangedNotifier(CharSequence format, CharSequence uri, int era) {
62+
this.format = format;
63+
this.uri = uri;
64+
this.era = era;
65+
}
66+
67+
public void doNotify(ASAPChannelContentChangedListener listener) {
68+
listener.asapChannelContentChanged(this.format, this.uri, this.era);
69+
}
70+
}
71+
}

src/net/sharksystem/asap/listenermanager/ASAPMessageReceivedListenerManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ public void removeASAPMessageReceivedListener(CharSequence format, ASAPMessageRe
2929
}
3030
}
3131

32+
@Override
33+
public int getNumberListener() {
34+
if(this.listenerMap == null) return 0;
35+
return this.listenerMap.size();
36+
}
37+
3238
public void removeAllListeners() {
3339
// reset
3440
this.listenerMap = new HashMap();

0 commit comments

Comments
 (0)