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

import br.mp.mprj.portal.portlet.gestaomensagens.service.service.ClpSerializer;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.MensagemLocalServiceUtil;

import com.liferay.portal.kernel.bean.AutoEscapeBeanHandler;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.ProxyUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.model.BaseModel;
import com.liferay.portal.model.impl.BaseModelImpl;

import java.io.Serializable;

import java.lang.reflect.Method;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;


public class MensagemClp extends BaseModelImpl<Mensagem> implements Mensagem {
    private String _uuid;
    private long _mensagemId;
    private long _companyId;
    private long _groupId;
    private long _templateId;
    private String _grupoDestinatarioIds;
    private long _contaSaidaId;
    private String _codigoMensagem;
    private String _assunto;
    private String _conteudo;
    private int _prioridade;
    private boolean _ativo;
    private int _tipoEnvio;
    private int _situacaoEnvio;
    private String _nomeSolicitante;
    private long _userIdCriador;
    private Date _dataSolicitacao;
    private Date _dataUltimoEnvio;
    private Date _dataAlteracao;
    private boolean _rascunho;
    private int _statusWorkflow;
    private long _userIdWorkflow;
    private Date _dataStatusWorkflow;
    private String _comentarioWorkflow;
    private long _clonagemPai;
    private String _literalAgendamento;
    private long _userIdCancel;
    private long _userIdAprovador;
    private long _userIdReprovador;
    private Date _dataCancel;
    private boolean _service;
    private BaseModel<?> _mensagemRemoteModel;
    private Class<?> _clpSerializerClass = br.mp.mprj.portal.portlet.gestaomensagens.service.service.ClpSerializer.class;

    public MensagemClp() {
    }

    @Override
    public Class<?> getModelClass() {
        return Mensagem.class;
    }

    @Override
    public String getModelClassName() {
        return Mensagem.class.getName();
    }

    @Override
    public long getPrimaryKey() {
        return _mensagemId;
    }

    @Override
    public void setPrimaryKey(long primaryKey) {
        setMensagemId(primaryKey);
    }

    @Override
    public Serializable getPrimaryKeyObj() {
        return _mensagemId;
    }

    @Override
    public void setPrimaryKeyObj(Serializable primaryKeyObj) {
        setPrimaryKey(((Long) primaryKeyObj).longValue());
    }

    @Override
    public Map<String, Object> getModelAttributes() {
        Map<String, Object> attributes = new HashMap<String, Object>();

        attributes.put("uuid", getUuid());
        attributes.put("mensagemId", getMensagemId());
        attributes.put("companyId", getCompanyId());
        attributes.put("groupId", getGroupId());
        attributes.put("templateId", getTemplateId());
        attributes.put("grupoDestinatarioIds", getGrupoDestinatarioIds());
        attributes.put("contaSaidaId", getContaSaidaId());
        attributes.put("codigoMensagem", getCodigoMensagem());
        attributes.put("assunto", getAssunto());
        attributes.put("conteudo", getConteudo());
        attributes.put("prioridade", getPrioridade());
        attributes.put("ativo", getAtivo());
        attributes.put("tipoEnvio", getTipoEnvio());
        attributes.put("situacaoEnvio", getSituacaoEnvio());
        attributes.put("nomeSolicitante", getNomeSolicitante());
        attributes.put("userIdCriador", getUserIdCriador());
        attributes.put("dataSolicitacao", getDataSolicitacao());
        attributes.put("dataUltimoEnvio", getDataUltimoEnvio());
        attributes.put("dataAlteracao", getDataAlteracao());
        attributes.put("rascunho", getRascunho());
        attributes.put("statusWorkflow", getStatusWorkflow());
        attributes.put("userIdWorkflow", getUserIdWorkflow());
        attributes.put("dataStatusWorkflow", getDataStatusWorkflow());
        attributes.put("comentarioWorkflow", getComentarioWorkflow());
        attributes.put("clonagemPai", getClonagemPai());
        attributes.put("literalAgendamento", getLiteralAgendamento());
        attributes.put("userIdCancel", getUserIdCancel());
        attributes.put("userIdAprovador", getUserIdAprovador());
        attributes.put("userIdReprovador", getUserIdReprovador());
        attributes.put("dataCancel", getDataCancel());
        attributes.put("service", getService());

        return attributes;
    }

    @Override
    public void setModelAttributes(Map<String, Object> attributes) {
        String uuid = (String) attributes.get("uuid");

        if (uuid != null) {
            setUuid(uuid);
        }

        Long mensagemId = (Long) attributes.get("mensagemId");

        if (mensagemId != null) {
            setMensagemId(mensagemId);
        }

        Long companyId = (Long) attributes.get("companyId");

        if (companyId != null) {
            setCompanyId(companyId);
        }

        Long groupId = (Long) attributes.get("groupId");

        if (groupId != null) {
            setGroupId(groupId);
        }

        Long templateId = (Long) attributes.get("templateId");

        if (templateId != null) {
            setTemplateId(templateId);
        }

        String grupoDestinatarioIds = (String) attributes.get(
                "grupoDestinatarioIds");

        if (grupoDestinatarioIds != null) {
            setGrupoDestinatarioIds(grupoDestinatarioIds);
        }

        Long contaSaidaId = (Long) attributes.get("contaSaidaId");

        if (contaSaidaId != null) {
            setContaSaidaId(contaSaidaId);
        }

        String codigoMensagem = (String) attributes.get("codigoMensagem");

        if (codigoMensagem != null) {
            setCodigoMensagem(codigoMensagem);
        }

        String assunto = (String) attributes.get("assunto");

        if (assunto != null) {
            setAssunto(assunto);
        }

        String conteudo = (String) attributes.get("conteudo");

        if (conteudo != null) {
            setConteudo(conteudo);
        }

        Integer prioridade = (Integer) attributes.get("prioridade");

        if (prioridade != null) {
            setPrioridade(prioridade);
        }

        Boolean ativo = (Boolean) attributes.get("ativo");

        if (ativo != null) {
            setAtivo(ativo);
        }

        Integer tipoEnvio = (Integer) attributes.get("tipoEnvio");

        if (tipoEnvio != null) {
            setTipoEnvio(tipoEnvio);
        }

        Integer situacaoEnvio = (Integer) attributes.get("situacaoEnvio");

        if (situacaoEnvio != null) {
            setSituacaoEnvio(situacaoEnvio);
        }

        String nomeSolicitante = (String) attributes.get("nomeSolicitante");

        if (nomeSolicitante != null) {
            setNomeSolicitante(nomeSolicitante);
        }

        Long userIdCriador = (Long) attributes.get("userIdCriador");

        if (userIdCriador != null) {
            setUserIdCriador(userIdCriador);
        }

        Date dataSolicitacao = (Date) attributes.get("dataSolicitacao");

        if (dataSolicitacao != null) {
            setDataSolicitacao(dataSolicitacao);
        }

        Date dataUltimoEnvio = (Date) attributes.get("dataUltimoEnvio");

        if (dataUltimoEnvio != null) {
            setDataUltimoEnvio(dataUltimoEnvio);
        }

        Date dataAlteracao = (Date) attributes.get("dataAlteracao");

        if (dataAlteracao != null) {
            setDataAlteracao(dataAlteracao);
        }

        Boolean rascunho = (Boolean) attributes.get("rascunho");

        if (rascunho != null) {
            setRascunho(rascunho);
        }

        Integer statusWorkflow = (Integer) attributes.get("statusWorkflow");

        if (statusWorkflow != null) {
            setStatusWorkflow(statusWorkflow);
        }

        Long userIdWorkflow = (Long) attributes.get("userIdWorkflow");

        if (userIdWorkflow != null) {
            setUserIdWorkflow(userIdWorkflow);
        }

        Date dataStatusWorkflow = (Date) attributes.get("dataStatusWorkflow");

        if (dataStatusWorkflow != null) {
            setDataStatusWorkflow(dataStatusWorkflow);
        }

        String comentarioWorkflow = (String) attributes.get(
                "comentarioWorkflow");

        if (comentarioWorkflow != null) {
            setComentarioWorkflow(comentarioWorkflow);
        }

        Long clonagemPai = (Long) attributes.get("clonagemPai");

        if (clonagemPai != null) {
            setClonagemPai(clonagemPai);
        }

        String literalAgendamento = (String) attributes.get(
                "literalAgendamento");

        if (literalAgendamento != null) {
            setLiteralAgendamento(literalAgendamento);
        }

        Long userIdCancel = (Long) attributes.get("userIdCancel");

        if (userIdCancel != null) {
            setUserIdCancel(userIdCancel);
        }

        Long userIdAprovador = (Long) attributes.get("userIdAprovador");

        if (userIdAprovador != null) {
            setUserIdAprovador(userIdAprovador);
        }

        Long userIdReprovador = (Long) attributes.get("userIdReprovador");

        if (userIdReprovador != null) {
            setUserIdReprovador(userIdReprovador);
        }

        Date dataCancel = (Date) attributes.get("dataCancel");

        if (dataCancel != null) {
            setDataCancel(dataCancel);
        }

        Boolean service = (Boolean) attributes.get("service");

        if (service != null) {
            setService(service);
        }
    }

    @Override
    public String getUuid() {
        return _uuid;
    }

    @Override
    public void setUuid(String uuid) {
        _uuid = uuid;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setUuid", String.class);

                method.invoke(_mensagemRemoteModel, uuid);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getMensagemId() {
        return _mensagemId;
    }

    @Override
    public void setMensagemId(long mensagemId) {
        _mensagemId = mensagemId;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setMensagemId", long.class);

                method.invoke(_mensagemRemoteModel, mensagemId);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getCompanyId() {
        return _companyId;
    }

    @Override
    public void setCompanyId(long companyId) {
        _companyId = companyId;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setCompanyId", long.class);

                method.invoke(_mensagemRemoteModel, companyId);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getGroupId() {
        return _groupId;
    }

    @Override
    public void setGroupId(long groupId) {
        _groupId = groupId;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setGroupId", long.class);

                method.invoke(_mensagemRemoteModel, groupId);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getTemplateId() {
        return _templateId;
    }

    @Override
    public void setTemplateId(long templateId) {
        _templateId = templateId;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setTemplateId", long.class);

                method.invoke(_mensagemRemoteModel, templateId);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public String getGrupoDestinatarioIds() {
        return _grupoDestinatarioIds;
    }

    @Override
    public void setGrupoDestinatarioIds(String grupoDestinatarioIds) {
        _grupoDestinatarioIds = grupoDestinatarioIds;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setGrupoDestinatarioIds",
                        String.class);

                method.invoke(_mensagemRemoteModel, grupoDestinatarioIds);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getContaSaidaId() {
        return _contaSaidaId;
    }

    @Override
    public void setContaSaidaId(long contaSaidaId) {
        _contaSaidaId = contaSaidaId;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setContaSaidaId", long.class);

                method.invoke(_mensagemRemoteModel, contaSaidaId);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public String getCodigoMensagem() {
        return _codigoMensagem;
    }

    @Override
    public void setCodigoMensagem(String codigoMensagem) {
        _codigoMensagem = codigoMensagem;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setCodigoMensagem",
                        String.class);

                method.invoke(_mensagemRemoteModel, codigoMensagem);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public String getAssunto() {
        return _assunto;
    }

    @Override
    public void setAssunto(String assunto) {
        _assunto = assunto;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setAssunto", String.class);

                method.invoke(_mensagemRemoteModel, assunto);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public String getConteudo() {
        return _conteudo;
    }

    @Override
    public void setConteudo(String conteudo) {
        _conteudo = conteudo;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setConteudo", String.class);

                method.invoke(_mensagemRemoteModel, conteudo);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public int getPrioridade() {
        return _prioridade;
    }

    @Override
    public void setPrioridade(int prioridade) {
        _prioridade = prioridade;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setPrioridade", int.class);

                method.invoke(_mensagemRemoteModel, prioridade);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public boolean getAtivo() {
        return _ativo;
    }

    @Override
    public boolean isAtivo() {
        return _ativo;
    }

    @Override
    public void setAtivo(boolean ativo) {
        _ativo = ativo;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setAtivo", boolean.class);

                method.invoke(_mensagemRemoteModel, ativo);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public int getTipoEnvio() {
        return _tipoEnvio;
    }

    @Override
    public void setTipoEnvio(int tipoEnvio) {
        _tipoEnvio = tipoEnvio;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setTipoEnvio", int.class);

                method.invoke(_mensagemRemoteModel, tipoEnvio);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public int getSituacaoEnvio() {
        return _situacaoEnvio;
    }

    @Override
    public void setSituacaoEnvio(int situacaoEnvio) {
        _situacaoEnvio = situacaoEnvio;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setSituacaoEnvio", int.class);

                method.invoke(_mensagemRemoteModel, situacaoEnvio);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public String getNomeSolicitante() {
        return _nomeSolicitante;
    }

    @Override
    public void setNomeSolicitante(String nomeSolicitante) {
        _nomeSolicitante = nomeSolicitante;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setNomeSolicitante",
                        String.class);

                method.invoke(_mensagemRemoteModel, nomeSolicitante);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getUserIdCriador() {
        return _userIdCriador;
    }

    @Override
    public void setUserIdCriador(long userIdCriador) {
        _userIdCriador = userIdCriador;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setUserIdCriador", long.class);

                method.invoke(_mensagemRemoteModel, userIdCriador);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public Date getDataSolicitacao() {
        return _dataSolicitacao;
    }

    @Override
    public void setDataSolicitacao(Date dataSolicitacao) {
        _dataSolicitacao = dataSolicitacao;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setDataSolicitacao", Date.class);

                method.invoke(_mensagemRemoteModel, dataSolicitacao);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public Date getDataUltimoEnvio() {
        return _dataUltimoEnvio;
    }

    @Override
    public void setDataUltimoEnvio(Date dataUltimoEnvio) {
        _dataUltimoEnvio = dataUltimoEnvio;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setDataUltimoEnvio", Date.class);

                method.invoke(_mensagemRemoteModel, dataUltimoEnvio);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public Date getDataAlteracao() {
        return _dataAlteracao;
    }

    @Override
    public void setDataAlteracao(Date dataAlteracao) {
        _dataAlteracao = dataAlteracao;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setDataAlteracao", Date.class);

                method.invoke(_mensagemRemoteModel, dataAlteracao);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public boolean getRascunho() {
        return _rascunho;
    }

    @Override
    public boolean isRascunho() {
        return _rascunho;
    }

    @Override
    public void setRascunho(boolean rascunho) {
        _rascunho = rascunho;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setRascunho", boolean.class);

                method.invoke(_mensagemRemoteModel, rascunho);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public int getStatusWorkflow() {
        return _statusWorkflow;
    }

    @Override
    public void setStatusWorkflow(int statusWorkflow) {
        _statusWorkflow = statusWorkflow;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setStatusWorkflow", int.class);

                method.invoke(_mensagemRemoteModel, statusWorkflow);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getUserIdWorkflow() {
        return _userIdWorkflow;
    }

    @Override
    public void setUserIdWorkflow(long userIdWorkflow) {
        _userIdWorkflow = userIdWorkflow;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setUserIdWorkflow", long.class);

                method.invoke(_mensagemRemoteModel, userIdWorkflow);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public Date getDataStatusWorkflow() {
        return _dataStatusWorkflow;
    }

    @Override
    public void setDataStatusWorkflow(Date dataStatusWorkflow) {
        _dataStatusWorkflow = dataStatusWorkflow;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setDataStatusWorkflow",
                        Date.class);

                method.invoke(_mensagemRemoteModel, dataStatusWorkflow);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public String getComentarioWorkflow() {
        return _comentarioWorkflow;
    }

    @Override
    public void setComentarioWorkflow(String comentarioWorkflow) {
        _comentarioWorkflow = comentarioWorkflow;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setComentarioWorkflow",
                        String.class);

                method.invoke(_mensagemRemoteModel, comentarioWorkflow);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getClonagemPai() {
        return _clonagemPai;
    }

    @Override
    public void setClonagemPai(long clonagemPai) {
        _clonagemPai = clonagemPai;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setClonagemPai", long.class);

                method.invoke(_mensagemRemoteModel, clonagemPai);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public String getLiteralAgendamento() {
        return _literalAgendamento;
    }

    @Override
    public void setLiteralAgendamento(String literalAgendamento) {
        _literalAgendamento = literalAgendamento;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setLiteralAgendamento",
                        String.class);

                method.invoke(_mensagemRemoteModel, literalAgendamento);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getUserIdCancel() {
        return _userIdCancel;
    }

    @Override
    public void setUserIdCancel(long userIdCancel) {
        _userIdCancel = userIdCancel;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setUserIdCancel", long.class);

                method.invoke(_mensagemRemoteModel, userIdCancel);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getUserIdAprovador() {
        return _userIdAprovador;
    }

    @Override
    public void setUserIdAprovador(long userIdAprovador) {
        _userIdAprovador = userIdAprovador;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setUserIdAprovador", long.class);

                method.invoke(_mensagemRemoteModel, userIdAprovador);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public long getUserIdReprovador() {
        return _userIdReprovador;
    }

    @Override
    public void setUserIdReprovador(long userIdReprovador) {
        _userIdReprovador = userIdReprovador;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setUserIdReprovador",
                        long.class);

                method.invoke(_mensagemRemoteModel, userIdReprovador);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public Date getDataCancel() {
        return _dataCancel;
    }

    @Override
    public void setDataCancel(Date dataCancel) {
        _dataCancel = dataCancel;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setDataCancel", Date.class);

                method.invoke(_mensagemRemoteModel, dataCancel);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public boolean getService() {
        return _service;
    }

    @Override
    public boolean isService() {
        return _service;
    }

    @Override
    public void setService(boolean service) {
        _service = service;

        if (_mensagemRemoteModel != null) {
            try {
                Class<?> clazz = _mensagemRemoteModel.getClass();

                Method method = clazz.getMethod("setService", boolean.class);

                method.invoke(_mensagemRemoteModel, service);
            } catch (Exception e) {
                throw new UnsupportedOperationException(e);
            }
        }
    }

    @Override
    public void setDatasCalendario(
        java.util.Map<java.lang.Long, java.util.Map<java.lang.String, br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento>> datasCalendario) {
        try {
            String methodName = "setDatasCalendario";

            Class<?>[] parameterTypes = new Class<?>[] { java.util.Map.class };

            Object[] parameterValues = new Object[] { datasCalendario };

            invokeOnRemoteModel(methodName, parameterTypes, parameterValues);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template getTemplate() {
        try {
            String methodName = "getTemplate";

            Class<?>[] parameterTypes = new Class<?>[] {  };

            Object[] parameterValues = new Object[] {  };

            br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template returnObj =
                (br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template) invokeOnRemoteModel(methodName,
                    parameterTypes, parameterValues);

            return returnObj;
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public java.util.Map<java.lang.Long, java.util.Map<java.lang.String, br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento>> getDatasCalendario() {
        try {
            String methodName = "getDatasCalendario";

            Class<?>[] parameterTypes = new Class<?>[] {  };

            Object[] parameterValues = new Object[] {  };

            java.util.Map<java.lang.Long, java.util.Map<java.lang.String, br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento>> returnObj =
                (java.util.Map<java.lang.Long, java.util.Map<java.lang.String, br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento>>) invokeOnRemoteModel(methodName,
                    parameterTypes, parameterValues);

            return returnObj;
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public boolean isGravarAgendamento() {
        try {
            String methodName = "isGravarAgendamento";

            Class<?>[] parameterTypes = new Class<?>[] {  };

            Object[] parameterValues = new Object[] {  };

            Boolean returnObj = (Boolean) invokeOnRemoteModel(methodName,
                    parameterTypes, parameterValues);

            return returnObj;
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public java.util.List<br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento> getAgendamentos() {
        try {
            String methodName = "getAgendamentos";

            Class<?>[] parameterTypes = new Class<?>[] {  };

            Object[] parameterValues = new Object[] {  };

            java.util.List<br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento> returnObj =
                (java.util.List<br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento>) invokeOnRemoteModel(methodName,
                    parameterTypes, parameterValues);

            return returnObj;
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public void setGravarAgendamento(boolean gravarAgendamento) {
        try {
            String methodName = "setGravarAgendamento";

            Class<?>[] parameterTypes = new Class<?>[] { boolean.class };

            Object[] parameterValues = new Object[] { gravarAgendamento };

            invokeOnRemoteModel(methodName, parameterTypes, parameterValues);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public void setTemplate(
        br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template template) {
        try {
            String methodName = "setTemplate";

            Class<?>[] parameterTypes = new Class<?>[] {
                    br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template.class
                };

            Object[] parameterValues = new Object[] { template };

            invokeOnRemoteModel(methodName, parameterTypes, parameterValues);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public java.lang.String getDescricaoStatus() {
        try {
            String methodName = "getDescricaoStatus";

            Class<?>[] parameterTypes = new Class<?>[] {  };

            Object[] parameterValues = new Object[] {  };

            java.lang.String returnObj = (java.lang.String) invokeOnRemoteModel(methodName,
                    parameterTypes, parameterValues);

            return returnObj;
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public void setAgendamentos(
        java.util.List<br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento> agendamentos) {
        try {
            String methodName = "setAgendamentos";

            Class<?>[] parameterTypes = new Class<?>[] { java.util.List.class };

            Object[] parameterValues = new Object[] { agendamentos };

            invokeOnRemoteModel(methodName, parameterTypes, parameterValues);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    @Override
    public void setDescricaoStatus(java.lang.String descricaoStatus) {
        try {
            String methodName = "setDescricaoStatus";

            Class<?>[] parameterTypes = new Class<?>[] { java.lang.String.class };

            Object[] parameterValues = new Object[] { descricaoStatus };

            invokeOnRemoteModel(methodName, parameterTypes, parameterValues);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e);
        }
    }

    public BaseModel<?> getMensagemRemoteModel() {
        return _mensagemRemoteModel;
    }

    public void setMensagemRemoteModel(BaseModel<?> mensagemRemoteModel) {
        _mensagemRemoteModel = mensagemRemoteModel;
    }

    public Object invokeOnRemoteModel(String methodName,
        Class<?>[] parameterTypes, Object[] parameterValues)
        throws Exception {
        Object[] remoteParameterValues = new Object[parameterValues.length];

        for (int i = 0; i < parameterValues.length; i++) {
            if (parameterValues[i] != null) {
                remoteParameterValues[i] = ClpSerializer.translateInput(parameterValues[i]);
            }
        }

        Class<?> remoteModelClass = _mensagemRemoteModel.getClass();

        ClassLoader remoteModelClassLoader = remoteModelClass.getClassLoader();

        Class<?>[] remoteParameterTypes = new Class[parameterTypes.length];

        for (int i = 0; i < parameterTypes.length; i++) {
            if (parameterTypes[i].isPrimitive()) {
                remoteParameterTypes[i] = parameterTypes[i];
            } else {
                String parameterTypeName = parameterTypes[i].getName();

                remoteParameterTypes[i] = remoteModelClassLoader.loadClass(parameterTypeName);
            }
        }

        Method method = remoteModelClass.getMethod(methodName,
                remoteParameterTypes);

        Object returnValue = method.invoke(_mensagemRemoteModel,
                remoteParameterValues);

        if (returnValue != null) {
            returnValue = ClpSerializer.translateOutput(returnValue);
        }

        return returnValue;
    }

    @Override
    public void persist() throws SystemException {
        if (this.isNew()) {
            MensagemLocalServiceUtil.addMensagem(this);
        } else {
            MensagemLocalServiceUtil.updateMensagem(this);
        }
    }

    @Override
    public Mensagem toEscapedModel() {
        return (Mensagem) ProxyUtil.newProxyInstance(Mensagem.class.getClassLoader(),
            new Class[] { Mensagem.class }, new AutoEscapeBeanHandler(this));
    }

    @Override
    public Object clone() {
        MensagemClp clone = new MensagemClp();

        clone.setUuid(getUuid());
        clone.setMensagemId(getMensagemId());
        clone.setCompanyId(getCompanyId());
        clone.setGroupId(getGroupId());
        clone.setTemplateId(getTemplateId());
        clone.setGrupoDestinatarioIds(getGrupoDestinatarioIds());
        clone.setContaSaidaId(getContaSaidaId());
        clone.setCodigoMensagem(getCodigoMensagem());
        clone.setAssunto(getAssunto());
        clone.setConteudo(getConteudo());
        clone.setPrioridade(getPrioridade());
        clone.setAtivo(getAtivo());
        clone.setTipoEnvio(getTipoEnvio());
        clone.setSituacaoEnvio(getSituacaoEnvio());
        clone.setNomeSolicitante(getNomeSolicitante());
        clone.setUserIdCriador(getUserIdCriador());
        clone.setDataSolicitacao(getDataSolicitacao());
        clone.setDataUltimoEnvio(getDataUltimoEnvio());
        clone.setDataAlteracao(getDataAlteracao());
        clone.setRascunho(getRascunho());
        clone.setStatusWorkflow(getStatusWorkflow());
        clone.setUserIdWorkflow(getUserIdWorkflow());
        clone.setDataStatusWorkflow(getDataStatusWorkflow());
        clone.setComentarioWorkflow(getComentarioWorkflow());
        clone.setClonagemPai(getClonagemPai());
        clone.setLiteralAgendamento(getLiteralAgendamento());
        clone.setUserIdCancel(getUserIdCancel());
        clone.setUserIdAprovador(getUserIdAprovador());
        clone.setUserIdReprovador(getUserIdReprovador());
        clone.setDataCancel(getDataCancel());
        clone.setService(getService());

        return clone;
    }

    @Override
    public int compareTo(Mensagem mensagem) {
        long primaryKey = mensagem.getPrimaryKey();

        if (getPrimaryKey() < primaryKey) {
            return -1;
        } else if (getPrimaryKey() > primaryKey) {
            return 1;
        } else {
            return 0;
        }
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }

        if (!(obj instanceof MensagemClp)) {
            return false;
        }

        MensagemClp mensagem = (MensagemClp) obj;

        long primaryKey = mensagem.getPrimaryKey();

        if (getPrimaryKey() == primaryKey) {
            return true;
        } else {
            return false;
        }
    }

    public Class<?> getClpSerializerClass() {
        return _clpSerializerClass;
    }

    @Override
    public int hashCode() {
        return (int) getPrimaryKey();
    }

    @Override
    public String toString() {
        StringBundler sb = new StringBundler(63);

        sb.append("{uuid=");
        sb.append(getUuid());
        sb.append(", mensagemId=");
        sb.append(getMensagemId());
        sb.append(", companyId=");
        sb.append(getCompanyId());
        sb.append(", groupId=");
        sb.append(getGroupId());
        sb.append(", templateId=");
        sb.append(getTemplateId());
        sb.append(", grupoDestinatarioIds=");
        sb.append(getGrupoDestinatarioIds());
        sb.append(", contaSaidaId=");
        sb.append(getContaSaidaId());
        sb.append(", codigoMensagem=");
        sb.append(getCodigoMensagem());
        sb.append(", assunto=");
        sb.append(getAssunto());
        sb.append(", conteudo=");
        sb.append(getConteudo());
        sb.append(", prioridade=");
        sb.append(getPrioridade());
        sb.append(", ativo=");
        sb.append(getAtivo());
        sb.append(", tipoEnvio=");
        sb.append(getTipoEnvio());
        sb.append(", situacaoEnvio=");
        sb.append(getSituacaoEnvio());
        sb.append(", nomeSolicitante=");
        sb.append(getNomeSolicitante());
        sb.append(", userIdCriador=");
        sb.append(getUserIdCriador());
        sb.append(", dataSolicitacao=");
        sb.append(getDataSolicitacao());
        sb.append(", dataUltimoEnvio=");
        sb.append(getDataUltimoEnvio());
        sb.append(", dataAlteracao=");
        sb.append(getDataAlteracao());
        sb.append(", rascunho=");
        sb.append(getRascunho());
        sb.append(", statusWorkflow=");
        sb.append(getStatusWorkflow());
        sb.append(", userIdWorkflow=");
        sb.append(getUserIdWorkflow());
        sb.append(", dataStatusWorkflow=");
        sb.append(getDataStatusWorkflow());
        sb.append(", comentarioWorkflow=");
        sb.append(getComentarioWorkflow());
        sb.append(", clonagemPai=");
        sb.append(getClonagemPai());
        sb.append(", literalAgendamento=");
        sb.append(getLiteralAgendamento());
        sb.append(", userIdCancel=");
        sb.append(getUserIdCancel());
        sb.append(", userIdAprovador=");
        sb.append(getUserIdAprovador());
        sb.append(", userIdReprovador=");
        sb.append(getUserIdReprovador());
        sb.append(", dataCancel=");
        sb.append(getDataCancel());
        sb.append(", service=");
        sb.append(getService());
        sb.append("}");

        return sb.toString();
    }

    @Override
    public String toXmlString() {
        StringBundler sb = new StringBundler(97);

        sb.append("<model><model-name>");
        sb.append(
            "br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem");
        sb.append("</model-name>");

        sb.append(
            "<column><column-name>uuid</column-name><column-value><![CDATA[");
        sb.append(getUuid());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>mensagemId</column-name><column-value><![CDATA[");
        sb.append(getMensagemId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>companyId</column-name><column-value><![CDATA[");
        sb.append(getCompanyId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>groupId</column-name><column-value><![CDATA[");
        sb.append(getGroupId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>templateId</column-name><column-value><![CDATA[");
        sb.append(getTemplateId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>grupoDestinatarioIds</column-name><column-value><![CDATA[");
        sb.append(getGrupoDestinatarioIds());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>contaSaidaId</column-name><column-value><![CDATA[");
        sb.append(getContaSaidaId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>codigoMensagem</column-name><column-value><![CDATA[");
        sb.append(getCodigoMensagem());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>assunto</column-name><column-value><![CDATA[");
        sb.append(getAssunto());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>conteudo</column-name><column-value><![CDATA[");
        sb.append(getConteudo());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>prioridade</column-name><column-value><![CDATA[");
        sb.append(getPrioridade());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>ativo</column-name><column-value><![CDATA[");
        sb.append(getAtivo());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>tipoEnvio</column-name><column-value><![CDATA[");
        sb.append(getTipoEnvio());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>situacaoEnvio</column-name><column-value><![CDATA[");
        sb.append(getSituacaoEnvio());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>nomeSolicitante</column-name><column-value><![CDATA[");
        sb.append(getNomeSolicitante());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>userIdCriador</column-name><column-value><![CDATA[");
        sb.append(getUserIdCriador());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>dataSolicitacao</column-name><column-value><![CDATA[");
        sb.append(getDataSolicitacao());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>dataUltimoEnvio</column-name><column-value><![CDATA[");
        sb.append(getDataUltimoEnvio());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>dataAlteracao</column-name><column-value><![CDATA[");
        sb.append(getDataAlteracao());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>rascunho</column-name><column-value><![CDATA[");
        sb.append(getRascunho());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>statusWorkflow</column-name><column-value><![CDATA[");
        sb.append(getStatusWorkflow());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>userIdWorkflow</column-name><column-value><![CDATA[");
        sb.append(getUserIdWorkflow());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>dataStatusWorkflow</column-name><column-value><![CDATA[");
        sb.append(getDataStatusWorkflow());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>comentarioWorkflow</column-name><column-value><![CDATA[");
        sb.append(getComentarioWorkflow());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>clonagemPai</column-name><column-value><![CDATA[");
        sb.append(getClonagemPai());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>literalAgendamento</column-name><column-value><![CDATA[");
        sb.append(getLiteralAgendamento());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>userIdCancel</column-name><column-value><![CDATA[");
        sb.append(getUserIdCancel());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>userIdAprovador</column-name><column-value><![CDATA[");
        sb.append(getUserIdAprovador());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>userIdReprovador</column-name><column-value><![CDATA[");
        sb.append(getUserIdReprovador());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>dataCancel</column-name><column-value><![CDATA[");
        sb.append(getDataCancel());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>service</column-name><column-value><![CDATA[");
        sb.append(getService());
        sb.append("]]></column-value></column>");

        sb.append("</model>");

        return sb.toString();
    }
}
