All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jpattern.gwt.client.bus.BusService Maven / Gradle / Ivy

There is a newer version: 2.45.7
Show newest version
package com.jpattern.gwt.client.bus;

import java.util.ArrayList;
import java.util.List;

import com.jpattern.gwt.client.IApplicationProvider;
import com.jpattern.gwt.client.event.IEvent;
import com.jpattern.gwt.client.event.IEventResult;
import com.jpattern.gwt.client.logger.ILogger;

/**
 * 
 * @author Francesco Cina'
 *
 * Dec 5, 2011
 */
public class BusService extends ABusService {
	
	private final List statusObservers = new ArrayList();
	private final List eventBusObservers = new ArrayList();
	private final List navigationEventObservers = new ArrayList();
	
	private final ILogger logger;

	public BusService(IApplicationProvider provider) {
		this.logger = provider.getLoggerService().getLogger(getClass());
	}
		
	@Override
	public void addGlobalEventObserver(IGlobalEventObserver statusObserver) {
		statusObservers.add(statusObserver);
	}

	@Override
	public void removeGlobalEventObserver(IGlobalEventObserver statusObserver) {
		statusObservers.remove(statusObserver);
	}
	
	@Override
	public void addEventObserver(IEventObserver eventBusObserver) {
		eventBusObservers.add(eventBusObserver);
	}

	@Override
	public void removeEventObserver(IEventObserver eventBusObserver) {
		eventBusObservers.remove(eventBusObserver);
	}
	
	@Override
	public void addNavigationEventObserver(INavigationEventObserver navigationEventObserver) {
		navigationEventObservers.add(navigationEventObserver);
	}

	@Override
	public void removeNavigationEventObserver(INavigationEventObserver navigationEventObserver) {
		navigationEventObservers.remove(navigationEventObserver);		
	}

	@Override
	public void notifyGlobalEvent(String globalEvent) {
		if (globalEvent!=null) {
			logger.debug("notifyGlobalEvent", "GlobalEvent [" + globalEvent + "] launch notified to the bus");
			for (IGlobalEventObserver observer : statusObservers) {
				observer.onGlobalEvent(globalEvent);
			}			
		}
	}
	
	@Override
	@SuppressWarnings("unchecked")
	public  void notifyEventStart(IEvent event) {
		if (event!=null) {
			logger.debug("notifyEventStart", "Event class [" + event.getClass() + "] execution start notified to the bus");
			for (IEventObserver observer : eventBusObservers) {
				Class> eventClass = (Class>) event.getClass();
				observer.onEventStart(eventClass);
			}			
		}
	}

	@Override
	@SuppressWarnings("unchecked")
	public  void notifyEventEnd(IEvent event, IEventResult eventResult) {
		if (event!=null) {
			Class> eventClass = (Class>) event.getClass();
			logger.debug("notifyEventEnd", "Event class [" + eventClass + "] execution end notified to the bus. Execution success? " + eventResult.isValid());
			for (IEventObserver observer : eventBusObservers) {
				observer.onEventEnd(eventClass, eventResult);
			}
		}
	}

	@Override
	public void notifyNavigationEvent(String navigationEventName) {
		if (navigationEventName!=null) {
			logger.debug("notifyNavigationEvent", "NavigationEvent [" + navigationEventName + "] launch notified to the bus");
			for (INavigationEventObserver observer : navigationEventObservers) {
				observer.onNavigationEvent(navigationEventName);
			}			
		}
	}
	
	@Override
	public List getStatusObservers() {
		return statusObservers;
	}

	@Override
	public List getEventObservers() {
		return eventBusObservers;
	}

	@Override
	public List getNavigationEventObservers() {
		return navigationEventObservers;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy