package com.vistatec.ocelot.services;
import com.google.common.eventbus.Subscribe;
import com.vistatec.ocelot.events.UserProfileSaveEvent;
import com.vistatec.ocelot.events.api.OcelotEventQueue;
import com.vistatec.ocelot.events.api.OcelotEventQueueListener;
import com.google.inject.Inject;
import com.vistatec.ocelot.config.ConfigService;
import com.vistatec.ocelot.config.ConfigTransferService;
/**
* Handle provenance related functionality.
*/
public class ProvenanceService implements OcelotEventQueueListener {
private final OcelotEventQueue eventQueue;
private final ConfigService cfgService;
@Inject
public ProvenanceService(OcelotEventQueue eventQueue, ConfigService cfgService) {
this.eventQueue = eventQueue;
this.cfgService = cfgService;
}
@Subscribe
public void saveUserProvenance(UserProfileSaveEvent profileSave) {
try {
cfgService.saveUserProvenance(profileSave.getProfile());
this.eventQueue.post(profileSave.new Success());
} catch (ConfigTransferService.TransferException ex) {
this.eventQueue.post(profileSave.new Failure(
"Failed to save user provenance. Check logs for details",
ex));
}
}
}