package com.github.glomadrian.mvpcleanarchitecture.ui.reactive;
import com.github.glomadrian.mvpcleanarchitecture.domain.model.MarvelCharacter;
import java.util.ArrayList;
import java.util.List;
/**
* Observable to character selected, this observable call all observer subscribed when a
* character is selected
*
* @author glomadrian
*/
public class CharacterSelectedObservable implements Observable<CharacterSelectedObserver> {
List<CharacterSelectedObserver> characterSelectedObservers;
public CharacterSelectedObservable() {
characterSelectedObservers = new ArrayList<CharacterSelectedObserver>();
}
@Override
public void register(CharacterSelectedObserver observer) {
//To avoid duplicated register
if (!characterSelectedObservers.contains(observer)) {
characterSelectedObservers.add(observer);
}
}
@Override
public void unregister(CharacterSelectedObserver observer) {
characterSelectedObservers.remove(observer);
}
public void notifyObservers(MarvelCharacter marvelCharacter) {
for (CharacterSelectedObserver characterSelectedObserver : characterSelectedObservers) {
characterSelectedObserver.characterSelected(marvelCharacter);
}
}
}