package sk.stuba.fiit.perconik.activity.data.core; import java.util.Map.Entry; import java.util.Set; import com.google.common.collect.HashMultimap; import com.google.common.collect.SetMultimap; import sk.stuba.fiit.perconik.activity.data.NameableData; import sk.stuba.fiit.perconik.core.Listener; import sk.stuba.fiit.perconik.core.Resource; import sk.stuba.fiit.perconik.core.services.listeners.ListenerService; public class ListenerServiceData extends NameableData { protected NameableData provider; protected NameableData manager; protected Set<Class<? extends Listener>> classes; protected SetMultimap<String, ListenerData> registrations; public ListenerServiceData() {} protected ListenerServiceData(final ListenerService service) { super(service); if (service == null) { return; } this.setProvider(NameableData.of(service.getListenerProvider())); this.setManager(NameableData.of(service.getListenerManager())); this.setClasses(service.getListenerProvider().classes()); SetMultimap<String, ListenerData> registrations = HashMultimap.create(); for (Entry<Resource<?>, Listener> entry: service.getListenerManager().registrations().entries()) { registrations.put(entry.getKey().getName(), ListenerData.of(entry.getValue())); } this.setRegistrations(registrations); } public static ListenerServiceData of(final ListenerService service) { return new ListenerServiceData(service); } public void setProvider(final NameableData provider) { this.provider = provider; } public void setManager(final NameableData manager) { this.manager = manager; } public void setClasses(final Set<Class<? extends Listener>> classes) { this.classes = classes; } public void setRegistrations(final SetMultimap<String, ListenerData> registrations) { this.registrations = registrations; } public NameableData getProvider() { return this.provider; } public NameableData getManager() { return this.manager; } public SetMultimap<String, ListenerData> getRegistrations() { return this.registrations; } public Set<Class<? extends Listener>> getClasses() { return this.classes; } }