package br.gov.mj.sislegis.app.service.ejbs;
import java.util.Iterator;
import java.util.List;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import br.gov.mj.sislegis.app.model.Comissao;
import br.gov.mj.sislegis.app.parser.camara.ParserComissoesCamara;
import br.gov.mj.sislegis.app.parser.senado.ParserComissoesSenado;
import br.gov.mj.sislegis.app.service.AbstractPersistence;
import br.gov.mj.sislegis.app.service.ComissaoService;
import br.gov.mj.sislegis.app.service.EJBDataCacher;
@Stateless
public class ComissaoServiceEjb extends AbstractPersistence<Comissao, Long> implements ComissaoService {
private static final String CACHE_KEY_COMISSOES_CAMARA = "COMISSOES_CAMARA";
private static final String CACHE_KEY_COMISSOES_SENADO = "COMISSOES_SENADO";
@PersistenceContext
private EntityManager em;
@Inject
private ParserComissoesSenado parserComissoesSenado;
@Inject
private ParserComissoesCamara parserComissoesCamara;
@Inject
private EJBDataCacher dataCacher;
public ComissaoServiceEjb() {
super(Comissao.class);
}
@Override
protected EntityManager getEntityManager() {
return em;
}
@Override
public List<Comissao> listarComissoesCamara() throws Exception {
if (!dataCacher.isEntityCached(CACHE_KEY_COMISSOES_CAMARA)) {
dataCacher.updateDataCache(CACHE_KEY_COMISSOES_CAMARA, parserComissoesCamara.getComissoes());
}
return (List<Comissao>) dataCacher.getReferenceData(CACHE_KEY_COMISSOES_CAMARA);
}
@Override
public List<Comissao> listarComissoesSenado() throws Exception {
if (!dataCacher.isEntityCached(CACHE_KEY_COMISSOES_SENADO)) {
dataCacher.updateDataCache(CACHE_KEY_COMISSOES_SENADO, parserComissoesSenado.getComissoes());
}
return (List<Comissao>) dataCacher.getReferenceData(CACHE_KEY_COMISSOES_SENADO);
}
@Override
public Comissao getBySigla(String sigla) throws Exception {
if (sigla != null && sigla.indexOf("-") > 0) {
sigla = sigla.substring(0, sigla.indexOf("-")).trim();
}
for (Iterator<Comissao> iterator = listarComissoesCamara().iterator(); iterator.hasNext();) {
Comissao c = iterator.next();
if (c.getSigla().trim().equals(sigla)) {
return c;
}
}
return null;
}
@Override
public String getComissaoCamara(Long idComissao) throws Exception {
for (Iterator<Comissao> iterator = listarComissoesCamara().iterator(); iterator.hasNext();) {
Comissao c = iterator.next();
if (c.getId() == idComissao) {
return c.getSigla();
}
}
return null;
}
}