package com.vistatec.ocelot.services; import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.vistatec.ocelot.events.ItsDocStatsAddedProvEvent; import com.vistatec.ocelot.events.ItsDocStatsUpdateLqiEvent; import com.vistatec.ocelot.events.ItsDocStatsChangedEvent; import com.vistatec.ocelot.events.ItsDocStatsClearEvent; import com.vistatec.ocelot.events.ItsDocStatsRecalculateEvent; import com.vistatec.ocelot.events.ItsDocStatsRemovedLqiEvent; import com.vistatec.ocelot.events.api.OcelotEventQueue; import com.vistatec.ocelot.events.api.OcelotEventQueueListener; import com.vistatec.ocelot.its.model.LanguageQualityIssue; import com.vistatec.ocelot.its.model.Provenance; import com.vistatec.ocelot.its.model.TerminologyMetaData; import com.vistatec.ocelot.its.model.TextAnalysisMetaData; import com.vistatec.ocelot.its.stats.model.ITSDocStats; import com.vistatec.ocelot.its.stats.model.ITSStats; import com.vistatec.ocelot.its.stats.model.LanguageQualityIssueStats; import com.vistatec.ocelot.segment.model.OcelotSegment; public class ITSDocStatsService implements OcelotEventQueueListener { private final ITSDocStats itsDocStats; private final OcelotEventQueue eventQueue; @Inject public ITSDocStatsService(ITSDocStats itsDocStats, OcelotEventQueue eventQueue) { this.itsDocStats = itsDocStats; this.eventQueue = eventQueue; } public int getNumStats() { return this.itsDocStats.getStats().size(); } public ITSStats getItsStatistic(int row) { return this.itsDocStats.getStats().get(row); } @Subscribe public void updateLQIStats(ItsDocStatsUpdateLqiEvent e) { LanguageQualityIssue lqi = e.getLqi(); itsDocStats.updateStats(new LanguageQualityIssueStats(lqi)); eventQueue.post(new ItsDocStatsChangedEvent()); } @Subscribe public void removeLQIStats(ItsDocStatsRemovedLqiEvent e) { eventQueue.post(new ItsDocStatsRecalculateEvent(e.getSegments())); } @Subscribe public void recalculateStats(ItsDocStatsRecalculateEvent e) { itsDocStats.clear(); for (OcelotSegment seg : e.getSegments()) { for (LanguageQualityIssue lqi : seg.getLQI()) { itsDocStats.updateStats(new LanguageQualityIssueStats(lqi)); } for (Provenance prov : seg.getProvenance()) { itsDocStats.addProvenanceStats(prov); } for(TextAnalysisMetaData ta: seg.getTextAnalysis()){ itsDocStats.addTextAnalysisStats(ta); } for(TerminologyMetaData term: seg.getTerms()){ itsDocStats.addTerminologyStats(term); } } eventQueue.post(new ItsDocStatsChangedEvent()); } @Subscribe public void addProvenanceStats(ItsDocStatsAddedProvEvent e) { Provenance prov = e.getProv(); itsDocStats.addProvenanceStats(prov); eventQueue.post(new ItsDocStatsChangedEvent()); } @Subscribe public void clear(ItsDocStatsClearEvent e) { itsDocStats.clear(); eventQueue.post(new ItsDocStatsChangedEvent()); } }