/** * Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados. * * e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro * dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do * Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão. * * Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA; * sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. * Veja a Licença Pública Geral Menor GNU para maiores detalhes. */ package br.gov.camara.edemocracia.portlets.wikilegis.service.impl; import java.util.Date; import java.util.List; import br.gov.camara.edemocracia.portlets.wikilegis.NoSuchContribuicaoException; import br.gov.camara.edemocracia.portlets.wikilegis.model.Artigo; import br.gov.camara.edemocracia.portlets.wikilegis.model.Contribuicao; import br.gov.camara.edemocracia.portlets.wikilegis.service.ArtigoLocalServiceUtil; import br.gov.camara.edemocracia.portlets.wikilegis.service.base.ContribuicaoLocalServiceBaseImpl; import com.liferay.portal.kernel.dao.orm.QueryUtil; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.transaction.Transactional; import com.liferay.portal.kernel.util.OrderByComparator; import com.liferay.portal.model.User; import com.liferay.portal.service.UserLocalServiceUtil; /** * The implementation of the contribuicao local service. * * <p> * All custom service methods should be put in this class. Whenever methods are * added, rerun ServiceBuilder to copy their definitions into the * {@link br.gov.camara.edemocracia.portlets.wikilegis.service.ContribuicaoLocalService} * interface. * </p> * * <p> * Never reference this interface directly. Always use * {@link br.gov.camara.edemocracia.portlets.wikilegis.service.ContribuicaoLocalServiceUtil} * to access the contribuicao local service. * </p> * * <p> * This is a local service. Methods of this service will not have security * checks based on the propagated JAAS credentials because this service can only * be accessed from within the same VM. * </p> * * @author robson * @see br.gov.camara.edemocracia.portlets.wikilegis.service.base.ContribuicaoLocalServiceBaseImpl * @see br.gov.camara.edemocracia.portlets.wikilegis.service.ContribuicaoLocalServiceUtil */ public class ContribuicaoLocalServiceImpl extends ContribuicaoLocalServiceBaseImpl { private static class ContribuicaoComparator extends OrderByComparator { /** * */ private static final long serialVersionUID = 1L; @Override public int compare(Object obj1, Object obj2) { Contribuicao lhs = (Contribuicao) obj1; Contribuicao rhs = (Contribuicao) obj2; if (lhs.equals(rhs)) return 0; if (lhs.getData().before(rhs.getData())) return -1; else return 1; } public String getOrderBy() { return "data ASC"; } public String[] getOrderByFields() { return new String[] { "data" }; } @Override public boolean isAscending() { return true; } } /** * Lista todas as contribuições do artigo * * @param artigoId * Lista as contribuições do artigo especificado */ @Override public List<Contribuicao> listaContribuicoes(long artigoId) throws SystemException { return contribuicaoPersistence.findByA(artigoId, QueryUtil.ALL_POS, QueryUtil.ALL_POS, new ContribuicaoComparator()); } /** * Cria uma nova contribuição para o artigo especificado * * @param userId * @param artigoId * @param textoArtigo * @param descricao * @throws SystemException * @throws PortalException */ @Override public void criaContribuicao(long userId, long artigoId, String textoArtigo, String descricao) throws SystemException, PortalException { User user = UserLocalServiceUtil.getUser(userId); Artigo artigo = ArtigoLocalServiceUtil.getArtigo(artigoId); Contribuicao contrib = createContribuicao(counterLocalService.increment()); contrib.setUserId(userId); contrib.setUserName(user.getFullName()); contrib.setArtigoId(artigo.getArtigoId()); contrib.setData(new Date()); contrib.setTexto(textoArtigo); contrib.setDescricao(descricao); updateContribuicao(contrib, true); } /** * Conta o número de contribuições para um artigo * * @param artigoId * @return * @throws SystemException */ public int contaContribuicoes(long artigoId) throws SystemException { return getContribuicaoPersistence().countByA(artigoId); } /** * Atualiza a contribuicao especificada * * @param contribuicaoId * @param textoArtigo * @param descricao * @return * @throws PortalException * @throws SystemException */ @Transactional(rollbackFor = NoSuchContribuicaoException.class) public Contribuicao atualizaContribuicao(long contribuicaoId,String textoArtigo,String descricao) throws PortalException, SystemException{ Contribuicao contribuicao = getContribuicao(contribuicaoId); contribuicao.setTexto(textoArtigo); contribuicao.setDescricao(descricao); return updateContribuicao(contribuicao, false); } }