2121import net .sharksystem .asap .android .ASAPChunkReceivedBroadcastIntent ;
2222import net .sharksystem .asap .android .ASAPServiceCreationIntent ;
2323import net .sharksystem .asap .android .Util ;
24+ import net .sharksystem .asap .apps .ASAPEnvironmentChangesListener ;
25+ import net .sharksystem .asap .apps .ASAPMessageReceivedListener ;
26+ import net .sharksystem .asap .apps .ASAPSimplePeer ;
27+ import net .sharksystem .asap .listenermanager .ASAPEnvironmentChangesListenerManager ;
2428import net .sharksystem .asap .util .Helper ;
2529
2630import java .io .IOException ;
3034import java .util .HashSet ;
3135import java .util .List ;
3236import java .util .Map ;
37+ import java .util .Set ;
3338
3439import static android .support .v4 .content .PermissionChecker .PERMISSION_DENIED ;
3540import static android .support .v4 .content .PermissionChecker .PERMISSION_GRANTED ;
3641import static net .sharksystem .asap .ASAPEngineFS .DEFAULT_ROOT_FOLDER_NAME ;
3742
38- public class ASAPApplication extends BroadcastReceiver {
43+ // TODO inherit from ASAPBasicAbstractPeer
44+ public class ASAPApplication extends BroadcastReceiver implements ASAPSimplePeer {
3945 private static final int MY_ASK_FOR_PERMISSIONS_REQUEST = 100 ;
4046 private static ASAPApplication singleton ;
4147 private Collection <CharSequence > supportedFormats ;
@@ -54,7 +60,7 @@ public class ASAPApplication extends BroadcastReceiver {
5460 private List <String > grantedPermissions = new ArrayList <>();
5561 private List <String > deniedPermissions = new ArrayList <>();
5662 private int activityASAPActivities = 0 ;
57- private List <CharSequence > onlinePeerList = new ArrayList <>();
63+ private Set <CharSequence > onlinePeerList = new HashSet <>();
5864
5965 /**
6066 * Setup application using default setting
@@ -463,7 +469,12 @@ public void chunkReceived(String format, String sender, String uri, String folde
463469 }
464470
465471 for (ASAPMessageReceivedListener messageListener : messageListeners ) {
466- messageListener .asapMessagesReceived (asapMessages );
472+ try {
473+ messageListener .asapMessagesReceived (asapMessages );
474+ } catch (IOException e ) {
475+ Log .e (this .getLogStart (), "calling messageReceivedListener: "
476+ + e .getLocalizedMessage ());
477+ }
467478 }
468479 }
469480 }
@@ -499,6 +510,7 @@ public final void removeASAPUriContentChangedListener(
499510 * @param format
500511 * @param listener
501512 */
513+ @ Override
502514 public final void addASAPMessageReceivedListener (CharSequence format ,
503515 ASAPMessageReceivedListener listener ) {
504516 Log .d (this .getLogStart (), "going to add asap message receiver for " + format );
@@ -513,6 +525,7 @@ public final void addASAPMessageReceivedListener(CharSequence format,
513525 messageListeners .add (listener );
514526 }
515527
528+ @ Override
516529 public final void removeASAPMessageReceivedListener (CharSequence format ,
517530 ASAPMessageReceivedListener listener ) {
518531 Collection <ASAPMessageReceivedListener > messageListeners =
@@ -525,11 +538,11 @@ public final void removeASAPMessageReceivedListener(CharSequence format,
525538 }
526539 }
527540
528- public List <CharSequence > getOnlinePeerList () {
541+ public Set <CharSequence > getOnlinePeerList () {
529542 return this .onlinePeerList ;
530543 }
531544
532- public void setOnlinePeersList (List <CharSequence > peerList ) {
545+ public void setOnlinePeersList (Set <CharSequence > peerList ) {
533546 StringBuilder sb = new StringBuilder ();
534547 sb .append (this .getLogStart ());
535548 sb .append ("#online peers: " );
@@ -549,6 +562,9 @@ public void setOnlinePeersList(List<CharSequence> peerList) {
549562 }
550563
551564 this .onlinePeerList = peerList ;
565+
566+ // notify listeners
567+ this .environmentChangesListenerManager .notifyListeners (this .onlinePeerList );
552568 }
553569
554570 public void setupDrawerLayout (Activity activity ) {
@@ -560,4 +576,45 @@ private String getLogStart() {
560576// return "ASAPApplication(" + objectID + ")";
561577 return "ASAPApplication" ;
562578 }
579+
580+ ///////////////////////////////////////////////////////////////////////////////////////////////
581+ // ASAPSimplePeer //
582+ ///////////////////////////////////////////////////////////////////////////////////////////////
583+
584+ @ Override
585+ public CharSequence getPeerName () {
586+ return this .asapOwner ;
587+ }
588+
589+
590+ ///////////////////////////////////////////////////////////////////////////////////////////////
591+ // ASAPEnvironmentChangesListener //
592+ ///////////////////////////////////////////////////////////////////////////////////////////////
593+
594+ private ASAPEnvironmentChangesListenerManager environmentChangesListenerManager =
595+ new ASAPEnvironmentChangesListenerManager ();
596+
597+ @ Override
598+ public void addASAPEnvironmentChangesListener (ASAPEnvironmentChangesListener listener ) {
599+ this .environmentChangesListenerManager .addASAPEnvironmentChangesListener (listener );
600+ }
601+
602+ @ Override
603+ public void removeASAPEnvironmentChangesListener (ASAPEnvironmentChangesListener listener ) {
604+ this .environmentChangesListenerManager .removeASAPEnvironmentChangesListener (listener );
605+ }
606+
607+ @ Override
608+ public void sendASAPMessage (CharSequence format , CharSequence uri , byte [] message )
609+ throws ASAPException {
610+
611+ Activity activity = this .getActivity ();
612+ if (activity == null ) throw new ASAPException ("no active activity" );
613+
614+ if (! (activity instanceof ASAPActivity ))
615+ throw new ASAPException ("current activity not derived from ASAPActivity" );
616+
617+ ASAPActivity asapActivity = (ASAPActivity )activity ;
618+ asapActivity .sendASAPMessage (format , uri , message , true );
619+ }
563620}
0 commit comments