package br.mp.mprj.portal.portlet.gestaomensagens.service.service.base;

import br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalService;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoFinder;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AgendamentoPersistence;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.AnexoMensagemPersistence;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.EmailDestinatarioPersistence;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.GrupoDestinatarioPersistence;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemPersistence;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.MensagemWorkflowPersistence;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.persistence.TemplatePersistence;

import com.liferay.portal.kernel.bean.BeanReference;
import com.liferay.portal.kernel.bean.IdentifiableBean;
import com.liferay.portal.kernel.dao.jdbc.SqlUpdate;
import com.liferay.portal.kernel.dao.jdbc.SqlUpdateFactoryUtil;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.kernel.dao.orm.Projection;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.search.Indexable;
import com.liferay.portal.kernel.search.IndexableType;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.model.PersistedModel;
import com.liferay.portal.service.BaseLocalServiceImpl;
import com.liferay.portal.service.PersistedModelLocalServiceRegistryUtil;
import com.liferay.portal.service.persistence.UserPersistence;

import java.io.Serializable;

import java.util.List;

import javax.sql.DataSource;

/**
 * Provides the base implementation for the anexo mensagem local service.
 *
 * <p>
 * This implementation exists only as a container for the default service methods generated by ServiceBuilder. All custom service methods should be put in {@link br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.AnexoMensagemLocalServiceImpl}.
 * </p>
 *
 * @author Henrique Simoes
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.service.impl.AnexoMensagemLocalServiceImpl
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil
 * @generated
 */
public abstract class AnexoMensagemLocalServiceBaseImpl
    extends BaseLocalServiceImpl implements AnexoMensagemLocalService,
        IdentifiableBean {
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.AgendamentoLocalService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.AgendamentoLocalService agendamentoLocalService;
    @BeanReference(type = AgendamentoPersistence.class)
    protected AgendamentoPersistence agendamentoPersistence;
    @BeanReference(type = AgendamentoFinder.class)
    protected AgendamentoFinder agendamentoFinder;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalService anexoMensagemLocalService;
    @BeanReference(type = AnexoMensagemPersistence.class)
    protected AnexoMensagemPersistence anexoMensagemPersistence;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalService emailDestinatarioLocalService;
    @BeanReference(type = EmailDestinatarioPersistence.class)
    protected EmailDestinatarioPersistence emailDestinatarioPersistence;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalService grupoDestinatarioLocalService;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioService grupoDestinatarioService;
    @BeanReference(type = GrupoDestinatarioPersistence.class)
    protected GrupoDestinatarioPersistence grupoDestinatarioPersistence;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalService mensagemLocalService;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemService mensagemService;
    @BeanReference(type = MensagemPersistence.class)
    protected MensagemPersistence mensagemPersistence;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalService mensagemWorkflowLocalService;
    @BeanReference(type = MensagemWorkflowPersistence.class)
    protected MensagemWorkflowPersistence mensagemWorkflowPersistence;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalService templateLocalService;
    @BeanReference(type = br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateService.class)
    protected br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateService templateService;
    @BeanReference(type = TemplatePersistence.class)
    protected TemplatePersistence templatePersistence;
    @BeanReference(type = com.liferay.counter.service.CounterLocalService.class)
    protected com.liferay.counter.service.CounterLocalService counterLocalService;
    @BeanReference(type = com.liferay.portal.service.ResourceLocalService.class)
    protected com.liferay.portal.service.ResourceLocalService resourceLocalService;
    @BeanReference(type = com.liferay.portal.service.UserLocalService.class)
    protected com.liferay.portal.service.UserLocalService userLocalService;
    @BeanReference(type = com.liferay.portal.service.UserService.class)
    protected com.liferay.portal.service.UserService userService;
    @BeanReference(type = UserPersistence.class)
    protected UserPersistence userPersistence;
    private String _beanIdentifier;
    private ClassLoader _classLoader;
    private AnexoMensagemLocalServiceClpInvoker _clpInvoker = new AnexoMensagemLocalServiceClpInvoker();

    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never modify or reference this class directly. Always use {@link br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalServiceUtil} to access the anexo mensagem local service.
     */

    /**
     * Adds the anexo mensagem to the database. Also notifies the appropriate model listeners.
     *
     * @param anexoMensagem the anexo mensagem
     * @return the anexo mensagem that was added
     * @throws SystemException if a system exception occurred
     */
    @Indexable(type = IndexableType.REINDEX)
    @Override
    public AnexoMensagem addAnexoMensagem(AnexoMensagem anexoMensagem)
        throws SystemException {
        anexoMensagem.setNew(true);

        return anexoMensagemPersistence.update(anexoMensagem);
    }

    /**
     * Creates a new anexo mensagem with the primary key. Does not add the anexo mensagem to the database.
     *
     * @param anexoMensagemId the primary key for the new anexo mensagem
     * @return the new anexo mensagem
     */
    @Override
    public AnexoMensagem createAnexoMensagem(long anexoMensagemId) {
        return anexoMensagemPersistence.create(anexoMensagemId);
    }

    /**
     * Deletes the anexo mensagem with the primary key from the database. Also notifies the appropriate model listeners.
     *
     * @param anexoMensagemId the primary key of the anexo mensagem
     * @return the anexo mensagem that was removed
     * @throws PortalException if a anexo mensagem with the primary key could not be found
     * @throws SystemException if a system exception occurred
     */
    @Indexable(type = IndexableType.DELETE)
    @Override
    public AnexoMensagem deleteAnexoMensagem(long anexoMensagemId)
        throws PortalException, SystemException {
        return anexoMensagemPersistence.remove(anexoMensagemId);
    }

    /**
     * Deletes the anexo mensagem from the database. Also notifies the appropriate model listeners.
     *
     * @param anexoMensagem the anexo mensagem
     * @return the anexo mensagem that was removed
     * @throws SystemException if a system exception occurred
     */
    @Indexable(type = IndexableType.DELETE)
    @Override
    public AnexoMensagem deleteAnexoMensagem(AnexoMensagem anexoMensagem)
        throws SystemException {
        return anexoMensagemPersistence.remove(anexoMensagem);
    }

    @Override
    public DynamicQuery dynamicQuery() {
        Class<?> clazz = getClass();

        return DynamicQueryFactoryUtil.forClass(AnexoMensagem.class,
            clazz.getClassLoader());
    }

    /**
     * Performs a dynamic query on the database and returns the matching rows.
     *
     * @param dynamicQuery the dynamic query
     * @return the matching rows
     * @throws SystemException if a system exception occurred
     */
    @Override
    @SuppressWarnings("rawtypes")
    public List dynamicQuery(DynamicQuery dynamicQuery)
        throws SystemException {
        return anexoMensagemPersistence.findWithDynamicQuery(dynamicQuery);
    }

    /**
     * Performs a dynamic query on the database and returns a range of the matching rows.
     *
     * <p>
     * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link br.mp.mprj.portal.portlet.gestaomensagens.service.model.impl.AnexoMensagemModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
     * </p>
     *
     * @param dynamicQuery the dynamic query
     * @param start the lower bound of the range of model instances
     * @param end the upper bound of the range of model instances (not inclusive)
     * @return the range of matching rows
     * @throws SystemException if a system exception occurred
     */
    @Override
    @SuppressWarnings("rawtypes")
    public List dynamicQuery(DynamicQuery dynamicQuery, int start, int end)
        throws SystemException {
        return anexoMensagemPersistence.findWithDynamicQuery(dynamicQuery,
            start, end);
    }

    /**
     * Performs a dynamic query on the database and returns an ordered range of the matching rows.
     *
     * <p>
     * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link br.mp.mprj.portal.portlet.gestaomensagens.service.model.impl.AnexoMensagemModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
     * </p>
     *
     * @param dynamicQuery the dynamic query
     * @param start the lower bound of the range of model instances
     * @param end the upper bound of the range of model instances (not inclusive)
     * @param orderByComparator the comparator to order the results by (optionally <code>null</code>)
     * @return the ordered range of matching rows
     * @throws SystemException if a system exception occurred
     */
    @Override
    @SuppressWarnings("rawtypes")
    public List dynamicQuery(DynamicQuery dynamicQuery, int start, int end,
        OrderByComparator orderByComparator) throws SystemException {
        return anexoMensagemPersistence.findWithDynamicQuery(dynamicQuery,
            start, end, orderByComparator);
    }

    /**
     * Returns the number of rows that match the dynamic query.
     *
     * @param dynamicQuery the dynamic query
     * @return the number of rows that match the dynamic query
     * @throws SystemException if a system exception occurred
     */
    @Override
    public long dynamicQueryCount(DynamicQuery dynamicQuery)
        throws SystemException {
        return anexoMensagemPersistence.countWithDynamicQuery(dynamicQuery);
    }

    /**
     * Returns the number of rows that match the dynamic query.
     *
     * @param dynamicQuery the dynamic query
     * @param projection the projection to apply to the query
     * @return the number of rows that match the dynamic query
     * @throws SystemException if a system exception occurred
     */
    @Override
    public long dynamicQueryCount(DynamicQuery dynamicQuery,
        Projection projection) throws SystemException {
        return anexoMensagemPersistence.countWithDynamicQuery(dynamicQuery,
            projection);
    }

    @Override
    public AnexoMensagem fetchAnexoMensagem(long anexoMensagemId)
        throws SystemException {
        return anexoMensagemPersistence.fetchByPrimaryKey(anexoMensagemId);
    }

    /**
     * Returns the anexo mensagem with the matching UUID and company.
     *
     * @param uuid the anexo mensagem's UUID
     * @param  companyId the primary key of the company
     * @return the matching anexo mensagem, or <code>null</code> if a matching anexo mensagem could not be found
     * @throws SystemException if a system exception occurred
     */
    @Override
    public AnexoMensagem fetchAnexoMensagemByUuidAndCompanyId(String uuid,
        long companyId) throws SystemException {
        return anexoMensagemPersistence.fetchByUuid_C_First(uuid, companyId,
            null);
    }

    /**
     * Returns the anexo mensagem matching the UUID and group.
     *
     * @param uuid the anexo mensagem's UUID
     * @param groupId the primary key of the group
     * @return the matching anexo mensagem, or <code>null</code> if a matching anexo mensagem could not be found
     * @throws SystemException if a system exception occurred
     */
    @Override
    public AnexoMensagem fetchAnexoMensagemByUuidAndGroupId(String uuid,
        long groupId) throws SystemException {
        return anexoMensagemPersistence.fetchByUUID_G(uuid, groupId);
    }

    /**
     * Returns the anexo mensagem with the primary key.
     *
     * @param anexoMensagemId the primary key of the anexo mensagem
     * @return the anexo mensagem
     * @throws PortalException if a anexo mensagem with the primary key could not be found
     * @throws SystemException if a system exception occurred
     */
    @Override
    public AnexoMensagem getAnexoMensagem(long anexoMensagemId)
        throws PortalException, SystemException {
        return anexoMensagemPersistence.findByPrimaryKey(anexoMensagemId);
    }

    @Override
    public PersistedModel getPersistedModel(Serializable primaryKeyObj)
        throws PortalException, SystemException {
        return anexoMensagemPersistence.findByPrimaryKey(primaryKeyObj);
    }

    /**
     * Returns the anexo mensagem with the matching UUID and company.
     *
     * @param uuid the anexo mensagem's UUID
     * @param  companyId the primary key of the company
     * @return the matching anexo mensagem
     * @throws PortalException if a matching anexo mensagem could not be found
     * @throws SystemException if a system exception occurred
     */
    @Override
    public AnexoMensagem getAnexoMensagemByUuidAndCompanyId(String uuid,
        long companyId) throws PortalException, SystemException {
        return anexoMensagemPersistence.findByUuid_C_First(uuid, companyId, null);
    }

    /**
     * Returns the anexo mensagem matching the UUID and group.
     *
     * @param uuid the anexo mensagem's UUID
     * @param groupId the primary key of the group
     * @return the matching anexo mensagem
     * @throws PortalException if a matching anexo mensagem could not be found
     * @throws SystemException if a system exception occurred
     */
    @Override
    public AnexoMensagem getAnexoMensagemByUuidAndGroupId(String uuid,
        long groupId) throws PortalException, SystemException {
        return anexoMensagemPersistence.findByUUID_G(uuid, groupId);
    }

    /**
     * Returns a range of all the anexo mensagems.
     *
     * <p>
     * Useful when paginating results. Returns a maximum of <code>end - start</code> instances. <code>start</code> and <code>end</code> are not primary keys, they are indexes in the result set. Thus, <code>0</code> refers to the first result in the set. Setting both <code>start</code> and <code>end</code> to {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS} will return the full result set. If <code>orderByComparator</code> is specified, then the query will include the given ORDER BY logic. If <code>orderByComparator</code> is absent and pagination is required (<code>start</code> and <code>end</code> are not {@link com.liferay.portal.kernel.dao.orm.QueryUtil#ALL_POS}), then the query will include the default ORDER BY logic from {@link br.mp.mprj.portal.portlet.gestaomensagens.service.model.impl.AnexoMensagemModelImpl}. If both <code>orderByComparator</code> and pagination are absent, for performance reasons, the query will not have an ORDER BY clause and the returned result set will be sorted on by the primary key in an ascending order.
     * </p>
     *
     * @param start the lower bound of the range of anexo mensagems
     * @param end the upper bound of the range of anexo mensagems (not inclusive)
     * @return the range of anexo mensagems
     * @throws SystemException if a system exception occurred
     */
    @Override
    public List<AnexoMensagem> getAnexoMensagems(int start, int end)
        throws SystemException {
        return anexoMensagemPersistence.findAll(start, end);
    }

    /**
     * Returns the number of anexo mensagems.
     *
     * @return the number of anexo mensagems
     * @throws SystemException if a system exception occurred
     */
    @Override
    public int getAnexoMensagemsCount() throws SystemException {
        return anexoMensagemPersistence.countAll();
    }

    /**
     * Updates the anexo mensagem in the database or adds it if it does not yet exist. Also notifies the appropriate model listeners.
     *
     * @param anexoMensagem the anexo mensagem
     * @return the anexo mensagem that was updated
     * @throws SystemException if a system exception occurred
     */
    @Indexable(type = IndexableType.REINDEX)
    @Override
    public AnexoMensagem updateAnexoMensagem(AnexoMensagem anexoMensagem)
        throws SystemException {
        return anexoMensagemPersistence.update(anexoMensagem);
    }

    /**
     * Returns the agendamento local service.
     *
     * @return the agendamento local service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.AgendamentoLocalService getAgendamentoLocalService() {
        return agendamentoLocalService;
    }

    /**
     * Sets the agendamento local service.
     *
     * @param agendamentoLocalService the agendamento local service
     */
    public void setAgendamentoLocalService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.AgendamentoLocalService agendamentoLocalService) {
        this.agendamentoLocalService = agendamentoLocalService;
    }

    /**
     * Returns the agendamento persistence.
     *
     * @return the agendamento persistence
     */
    public AgendamentoPersistence getAgendamentoPersistence() {
        return agendamentoPersistence;
    }

    /**
     * Sets the agendamento persistence.
     *
     * @param agendamentoPersistence the agendamento persistence
     */
    public void setAgendamentoPersistence(
        AgendamentoPersistence agendamentoPersistence) {
        this.agendamentoPersistence = agendamentoPersistence;
    }

    /**
     * Returns the agendamento finder.
     *
     * @return the agendamento finder
     */
    public AgendamentoFinder getAgendamentoFinder() {
        return agendamentoFinder;
    }

    /**
     * Sets the agendamento finder.
     *
     * @param agendamentoFinder the agendamento finder
     */
    public void setAgendamentoFinder(AgendamentoFinder agendamentoFinder) {
        this.agendamentoFinder = agendamentoFinder;
    }

    /**
     * Returns the anexo mensagem local service.
     *
     * @return the anexo mensagem local service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalService getAnexoMensagemLocalService() {
        return anexoMensagemLocalService;
    }

    /**
     * Sets the anexo mensagem local service.
     *
     * @param anexoMensagemLocalService the anexo mensagem local service
     */
    public void setAnexoMensagemLocalService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.AnexoMensagemLocalService anexoMensagemLocalService) {
        this.anexoMensagemLocalService = anexoMensagemLocalService;
    }

    /**
     * Returns the anexo mensagem persistence.
     *
     * @return the anexo mensagem persistence
     */
    public AnexoMensagemPersistence getAnexoMensagemPersistence() {
        return anexoMensagemPersistence;
    }

    /**
     * Sets the anexo mensagem persistence.
     *
     * @param anexoMensagemPersistence the anexo mensagem persistence
     */
    public void setAnexoMensagemPersistence(
        AnexoMensagemPersistence anexoMensagemPersistence) {
        this.anexoMensagemPersistence = anexoMensagemPersistence;
    }

    /**
     * Returns the email destinatario local service.
     *
     * @return the email destinatario local service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalService getEmailDestinatarioLocalService() {
        return emailDestinatarioLocalService;
    }

    /**
     * Sets the email destinatario local service.
     *
     * @param emailDestinatarioLocalService the email destinatario local service
     */
    public void setEmailDestinatarioLocalService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.EmailDestinatarioLocalService emailDestinatarioLocalService) {
        this.emailDestinatarioLocalService = emailDestinatarioLocalService;
    }

    /**
     * Returns the email destinatario persistence.
     *
     * @return the email destinatario persistence
     */
    public EmailDestinatarioPersistence getEmailDestinatarioPersistence() {
        return emailDestinatarioPersistence;
    }

    /**
     * Sets the email destinatario persistence.
     *
     * @param emailDestinatarioPersistence the email destinatario persistence
     */
    public void setEmailDestinatarioPersistence(
        EmailDestinatarioPersistence emailDestinatarioPersistence) {
        this.emailDestinatarioPersistence = emailDestinatarioPersistence;
    }

    /**
     * Returns the grupo destinatario local service.
     *
     * @return the grupo destinatario local service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalService getGrupoDestinatarioLocalService() {
        return grupoDestinatarioLocalService;
    }

    /**
     * Sets the grupo destinatario local service.
     *
     * @param grupoDestinatarioLocalService the grupo destinatario local service
     */
    public void setGrupoDestinatarioLocalService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioLocalService grupoDestinatarioLocalService) {
        this.grupoDestinatarioLocalService = grupoDestinatarioLocalService;
    }

    /**
     * Returns the grupo destinatario remote service.
     *
     * @return the grupo destinatario remote service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioService getGrupoDestinatarioService() {
        return grupoDestinatarioService;
    }

    /**
     * Sets the grupo destinatario remote service.
     *
     * @param grupoDestinatarioService the grupo destinatario remote service
     */
    public void setGrupoDestinatarioService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.GrupoDestinatarioService grupoDestinatarioService) {
        this.grupoDestinatarioService = grupoDestinatarioService;
    }

    /**
     * Returns the grupo destinatario persistence.
     *
     * @return the grupo destinatario persistence
     */
    public GrupoDestinatarioPersistence getGrupoDestinatarioPersistence() {
        return grupoDestinatarioPersistence;
    }

    /**
     * Sets the grupo destinatario persistence.
     *
     * @param grupoDestinatarioPersistence the grupo destinatario persistence
     */
    public void setGrupoDestinatarioPersistence(
        GrupoDestinatarioPersistence grupoDestinatarioPersistence) {
        this.grupoDestinatarioPersistence = grupoDestinatarioPersistence;
    }

    /**
     * Returns the mensagem local service.
     *
     * @return the mensagem local service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalService getMensagemLocalService() {
        return mensagemLocalService;
    }

    /**
     * Sets the mensagem local service.
     *
     * @param mensagemLocalService the mensagem local service
     */
    public void setMensagemLocalService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalService mensagemLocalService) {
        this.mensagemLocalService = mensagemLocalService;
    }

    /**
     * Returns the mensagem remote service.
     *
     * @return the mensagem remote service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemService getMensagemService() {
        return mensagemService;
    }

    /**
     * Sets the mensagem remote service.
     *
     * @param mensagemService the mensagem remote service
     */
    public void setMensagemService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemService mensagemService) {
        this.mensagemService = mensagemService;
    }

    /**
     * Returns the mensagem persistence.
     *
     * @return the mensagem persistence
     */
    public MensagemPersistence getMensagemPersistence() {
        return mensagemPersistence;
    }

    /**
     * Sets the mensagem persistence.
     *
     * @param mensagemPersistence the mensagem persistence
     */
    public void setMensagemPersistence(MensagemPersistence mensagemPersistence) {
        this.mensagemPersistence = mensagemPersistence;
    }

    /**
     * Returns the mensagem workflow local service.
     *
     * @return the mensagem workflow local service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalService getMensagemWorkflowLocalService() {
        return mensagemWorkflowLocalService;
    }

    /**
     * Sets the mensagem workflow local service.
     *
     * @param mensagemWorkflowLocalService the mensagem workflow local service
     */
    public void setMensagemWorkflowLocalService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemWorkflowLocalService mensagemWorkflowLocalService) {
        this.mensagemWorkflowLocalService = mensagemWorkflowLocalService;
    }

    /**
     * Returns the mensagem workflow persistence.
     *
     * @return the mensagem workflow persistence
     */
    public MensagemWorkflowPersistence getMensagemWorkflowPersistence() {
        return mensagemWorkflowPersistence;
    }

    /**
     * Sets the mensagem workflow persistence.
     *
     * @param mensagemWorkflowPersistence the mensagem workflow persistence
     */
    public void setMensagemWorkflowPersistence(
        MensagemWorkflowPersistence mensagemWorkflowPersistence) {
        this.mensagemWorkflowPersistence = mensagemWorkflowPersistence;
    }

    /**
     * Returns the template local service.
     *
     * @return the template local service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalService getTemplateLocalService() {
        return templateLocalService;
    }

    /**
     * Sets the template local service.
     *
     * @param templateLocalService the template local service
     */
    public void setTemplateLocalService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalService templateLocalService) {
        this.templateLocalService = templateLocalService;
    }

    /**
     * Returns the template remote service.
     *
     * @return the template remote service
     */
    public br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateService getTemplateService() {
        return templateService;
    }

    /**
     * Sets the template remote service.
     *
     * @param templateService the template remote service
     */
    public void setTemplateService(
        br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateService templateService) {
        this.templateService = templateService;
    }

    /**
     * Returns the template persistence.
     *
     * @return the template persistence
     */
    public TemplatePersistence getTemplatePersistence() {
        return templatePersistence;
    }

    /**
     * Sets the template persistence.
     *
     * @param templatePersistence the template persistence
     */
    public void setTemplatePersistence(TemplatePersistence templatePersistence) {
        this.templatePersistence = templatePersistence;
    }

    /**
     * Returns the counter local service.
     *
     * @return the counter local service
     */
    public com.liferay.counter.service.CounterLocalService getCounterLocalService() {
        return counterLocalService;
    }

    /**
     * Sets the counter local service.
     *
     * @param counterLocalService the counter local service
     */
    public void setCounterLocalService(
        com.liferay.counter.service.CounterLocalService counterLocalService) {
        this.counterLocalService = counterLocalService;
    }

    /**
     * Returns the resource local service.
     *
     * @return the resource local service
     */
    public com.liferay.portal.service.ResourceLocalService getResourceLocalService() {
        return resourceLocalService;
    }

    /**
     * Sets the resource local service.
     *
     * @param resourceLocalService the resource local service
     */
    public void setResourceLocalService(
        com.liferay.portal.service.ResourceLocalService resourceLocalService) {
        this.resourceLocalService = resourceLocalService;
    }

    /**
     * Returns the user local service.
     *
     * @return the user local service
     */
    public com.liferay.portal.service.UserLocalService getUserLocalService() {
        return userLocalService;
    }

    /**
     * Sets the user local service.
     *
     * @param userLocalService the user local service
     */
    public void setUserLocalService(
        com.liferay.portal.service.UserLocalService userLocalService) {
        this.userLocalService = userLocalService;
    }

    /**
     * Returns the user remote service.
     *
     * @return the user remote service
     */
    public com.liferay.portal.service.UserService getUserService() {
        return userService;
    }

    /**
     * Sets the user remote service.
     *
     * @param userService the user remote service
     */
    public void setUserService(
        com.liferay.portal.service.UserService userService) {
        this.userService = userService;
    }

    /**
     * Returns the user persistence.
     *
     * @return the user persistence
     */
    public UserPersistence getUserPersistence() {
        return userPersistence;
    }

    /**
     * Sets the user persistence.
     *
     * @param userPersistence the user persistence
     */
    public void setUserPersistence(UserPersistence userPersistence) {
        this.userPersistence = userPersistence;
    }

    public void afterPropertiesSet() {
        Class<?> clazz = getClass();

        _classLoader = clazz.getClassLoader();

        PersistedModelLocalServiceRegistryUtil.register("br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem",
            anexoMensagemLocalService);
    }

    public void destroy() {
        PersistedModelLocalServiceRegistryUtil.unregister(
            "br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem");
    }

    /**
     * Returns the Spring bean ID for this bean.
     *
     * @return the Spring bean ID for this bean
     */
    @Override
    public String getBeanIdentifier() {
        return _beanIdentifier;
    }

    /**
     * Sets the Spring bean ID for this bean.
     *
     * @param beanIdentifier the Spring bean ID for this bean
     */
    @Override
    public void setBeanIdentifier(String beanIdentifier) {
        _beanIdentifier = beanIdentifier;
    }

    @Override
    public Object invokeMethod(String name, String[] parameterTypes,
        Object[] arguments) throws Throwable {
        Thread currentThread = Thread.currentThread();

        ClassLoader contextClassLoader = currentThread.getContextClassLoader();

        if (contextClassLoader != _classLoader) {
            currentThread.setContextClassLoader(_classLoader);
        }

        try {
            return _clpInvoker.invokeMethod(name, parameterTypes, arguments);
        } finally {
            if (contextClassLoader != _classLoader) {
                currentThread.setContextClassLoader(contextClassLoader);
            }
        }
    }

    protected Class<?> getModelClass() {
        return AnexoMensagem.class;
    }

    protected String getModelClassName() {
        return AnexoMensagem.class.getName();
    }

    /**
     * Performs an SQL query.
     *
     * @param sql the sql query
     */
    protected void runSQL(String sql) throws SystemException {
        try {
            DataSource dataSource = anexoMensagemPersistence.getDataSource();

            SqlUpdate sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(dataSource,
                    sql, new int[0]);

            sqlUpdate.update();
        } catch (Exception e) {
            throw new SystemException(e);
        }
    }
}
