package ee.esutoniagodesu.service;
import ee.esutoniagodesu.bean.ProjectDAO;
import ee.esutoniagodesu.domain.core.view.VCoreStats;
import ee.esutoniagodesu.domain.publik.view.VStats;
import ee.esutoniagodesu.repository.project.ReportDB;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.inject.Inject;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* Statistika & graafikud
*/
@Service
@Transactional
public class StatsService {
private static final Logger log = LoggerFactory.getLogger(StatsService.class);
@Inject
private ProjectDAO dao;
@Inject
private ReportDB reportDB;
private static VStats vstats;
private static final int _lifetime = 1000 * 60 * 60 * 2;//2h
private boolean isExpired() {
return vstats == null || new Date().getTime() - vstats.created.getTime() > _lifetime;
}
private void refresh() {
log.debug("refresh");
vstats = reportDB.getStats();
vstats.jmdictVersion = "20.07.2015";
}
/**
* Loeb kokku olemite arvud andmebaasis.
* Näide: Jaapanikeelseid mõisteid (JMDict.entr) on andmebaasis 170819.
*/
public VStats counters() {
if (isExpired()) refresh();
return vstats;
}
/**
* JMDict tõlgete arvu iseloomustav graafik. Näitab kui suur osa jaapanikeelsetest mõistetest (entr) on tõlgitud.
* <p/>
* x - count(mitu tõlget on mõistel) ehk 1,2,3,jne
* y - tõlgitud mõistete osakaal
* <p/>
* Näide: ühe tõlkega (gloss) mõisteid on 7471 ehk 54%.
*/
public List<Map<String, ?>> getTranslatedEntrRatio() {
return reportDB.getTranslatedEntrRatio();
}
/**
* Sagedustabelit iseloomustav graafik. Näitab kui suur osa sagedustabelist on tõlgitud.
* <p/>
* x - summa(sagedustabelis oleva sõna tõlgete arv) eesti sõnastikus
* y - selle summa osakaal.
* <p/>
* Näide: 0 tõlkega sõnu on sagedustabelis 10463308 ehk 55%.
*/
public List<Map<String, ?>> getCountGlossToSumFreqRatio() {
return reportDB.getCountGlossToSumFreqRatio();
}
public List<VCoreStats> getCoreStats() {
return dao.findAll(VCoreStats.class);
}
}