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.resources.ResourceService;
public class ResourceServiceData extends NameableData {
protected NameableData provider;
protected NameableData manager;
protected Set<String> names;
protected SetMultimap<String, ResourceData> registrations;
public ResourceServiceData() {}
protected ResourceServiceData(final ResourceService service) {
super(service);
if (service == null) {
return;
}
this.setProvider(NameableData.of(service.getResourceProvider()));
this.setManager(NameableData.of(service.getResourceManager()));
this.setNames(service.getResourceProvider().names());
SetMultimap<String, ResourceData> registrations = HashMultimap.create();
for (Entry<Class<? extends Listener>, Resource<?>> entry: service.getResourceManager().registrations().entries()) {
registrations.put(entry.getKey().getName(), ResourceData.of(entry.getValue()));
}
this.setRegistrations(registrations);
}
public static ResourceServiceData of(final ResourceService service) {
return new ResourceServiceData(service);
}
public void setProvider(final NameableData provider) {
this.provider = provider;
}
public void setManager(final NameableData manager) {
this.manager = manager;
}
public void setNames(final Set<String> names) {
this.names = names;
}
public void setRegistrations(final SetMultimap<String, ResourceData> registrations) {
this.registrations = registrations;
}
public NameableData getProvider() {
return this.provider;
}
public NameableData getManager() {
return this.manager;
}
public SetMultimap<String, ResourceData> getRegistrations() {
return this.registrations;
}
public Set<String> getNames() {
return this.names;
}
}