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

import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemModel;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemSoap;

import com.liferay.portal.kernel.bean.AutoEscapeBeanHandler;
import com.liferay.portal.kernel.json.JSON;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.ProxyUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.model.CacheModel;
import com.liferay.portal.model.impl.BaseModelImpl;
import com.liferay.portal.service.ServiceContext;

import com.liferay.portlet.expando.model.ExpandoBridge;
import com.liferay.portlet.expando.util.ExpandoBridgeFactoryUtil;

import java.io.Serializable;

import java.sql.Types;

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

/**
 * The base model implementation for the Mensagem service. Represents a row in the &quot;PRT_GESTMSG_MENSAGEM&quot; database table, with each column mapped to a property of this class.
 *
 * <p>
 * This implementation and its corresponding interface {@link br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemModel} exist only as a container for the default property accessors generated by ServiceBuilder. Helper methods and all application logic should be put in {@link MensagemImpl}.
 * </p>
 *
 * @author Henrique Simoes
 * @see MensagemImpl
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemModel
 * @generated
 */
@JSON(strict = true)
public class MensagemModelImpl extends BaseModelImpl<Mensagem>
    implements MensagemModel {
    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never modify or reference this class directly. All methods that expect a mensagem model instance should use the {@link br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem} interface instead.
     */
    public static final String TABLE_NAME = "PRT_GESTMSG_MENSAGEM";
    public static final Object[][] TABLE_COLUMNS = {
            { "uuid_", Types.VARCHAR },
            { "mensagemId", Types.BIGINT },
            { "companyId", Types.BIGINT },
            { "groupId", Types.BIGINT },
            { "templateId", Types.BIGINT },
            { "grupoDestinatarioIds", Types.VARCHAR },
            { "contaSaidaId", Types.BIGINT },
            { "codigoMensagem", Types.VARCHAR },
            { "assunto", Types.VARCHAR },
            { "conteudo", Types.CLOB },
            { "prioridade", Types.INTEGER },
            { "ativo", Types.BOOLEAN },
            { "tipoEnvio", Types.INTEGER },
            { "situacaoEnvio", Types.INTEGER },
            { "nomeSolicitante", Types.VARCHAR },
            { "userIdCriador", Types.BIGINT },
            { "dataSolicitacao", Types.TIMESTAMP },
            { "dataUltimoEnvio", Types.TIMESTAMP },
            { "dataAlteracao", Types.TIMESTAMP },
            { "rascunho", Types.BOOLEAN },
            { "statusWorkflow", Types.INTEGER },
            { "userIdWorkflow", Types.BIGINT },
            { "dataStatusWorkflow", Types.TIMESTAMP },
            { "comentarioWorkflow", Types.VARCHAR },
            { "clonagemPai", Types.BIGINT },
            { "literalAgendamento", Types.CLOB },
            { "userIdCancel", Types.BIGINT },
            { "userIdAprovador", Types.BIGINT },
            { "userIdReprovador", Types.BIGINT },
            { "dataCancel", Types.TIMESTAMP },
            { "service", Types.BOOLEAN }
        };
    public static final String TABLE_SQL_CREATE = "create table PRT_GESTMSG_MENSAGEM (uuid_ VARCHAR(75) null,mensagemId LONG not null primary key,companyId LONG,groupId LONG,templateId LONG,grupoDestinatarioIds VARCHAR(255) null,contaSaidaId LONG,codigoMensagem VARCHAR(75) null,assunto VARCHAR(255) null,conteudo TEXT null,prioridade INTEGER,ativo BOOLEAN,tipoEnvio INTEGER,situacaoEnvio INTEGER,nomeSolicitante VARCHAR(75) null,userIdCriador LONG,dataSolicitacao DATE null,dataUltimoEnvio DATE null,dataAlteracao DATE null,rascunho BOOLEAN,statusWorkflow INTEGER,userIdWorkflow LONG,dataStatusWorkflow DATE null,comentarioWorkflow STRING null,clonagemPai LONG,literalAgendamento TEXT null,userIdCancel LONG,userIdAprovador LONG,userIdReprovador LONG,dataCancel DATE null,service BOOLEAN)";
    public static final String TABLE_SQL_DROP = "drop table PRT_GESTMSG_MENSAGEM";
    public static final String ORDER_BY_JPQL = " ORDER BY mensagem.mensagemId ASC";
    public static final String ORDER_BY_SQL = " ORDER BY PRT_GESTMSG_MENSAGEM.mensagemId ASC";
    public static final String DATA_SOURCE = "liferayDataSource";
    public static final String SESSION_FACTORY = "liferaySessionFactory";
    public static final String TX_MANAGER = "liferayTransactionManager";
    public static final boolean ENTITY_CACHE_ENABLED = GetterUtil.getBoolean(com.liferay.util.service.ServiceProps.get(
                "value.object.entity.cache.enabled.br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem"),
            true);
    public static final boolean FINDER_CACHE_ENABLED = GetterUtil.getBoolean(com.liferay.util.service.ServiceProps.get(
                "value.object.finder.cache.enabled.br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem"),
            true);
    public static final boolean COLUMN_BITMASK_ENABLED = GetterUtil.getBoolean(com.liferay.util.service.ServiceProps.get(
                "value.object.column.bitmask.enabled.br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem"),
            true);
    public static long CODIGOMENSAGEM_COLUMN_BITMASK = 1L;
    public static long COMPANYID_COLUMN_BITMASK = 2L;
    public static long GROUPID_COLUMN_BITMASK = 4L;
    public static long RASCUNHO_COLUMN_BITMASK = 8L;
    public static long STATUSWORKFLOW_COLUMN_BITMASK = 16L;
    public static long USERIDCRIADOR_COLUMN_BITMASK = 32L;
    public static long UUID_COLUMN_BITMASK = 64L;
    public static long MENSAGEMID_COLUMN_BITMASK = 128L;
    public static final long LOCK_EXPIRATION_TIME = GetterUtil.getLong(com.liferay.util.service.ServiceProps.get(
                "lock.expiration.time.br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem"));
    private static ClassLoader _classLoader = Mensagem.class.getClassLoader();
    private static Class<?>[] _escapedModelInterfaces = new Class[] {
            Mensagem.class
        };
    private String _uuid;
    private String _originalUuid;
    private long _mensagemId;
    private long _companyId;
    private long _originalCompanyId;
    private boolean _setOriginalCompanyId;
    private long _groupId;
    private long _originalGroupId;
    private boolean _setOriginalGroupId;
    private long _templateId;
    private String _grupoDestinatarioIds;
    private long _contaSaidaId;
    private String _codigoMensagem;
    private String _originalCodigoMensagem;
    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 long _originalUserIdCriador;
    private boolean _setOriginalUserIdCriador;
    private Date _dataSolicitacao;
    private Date _dataUltimoEnvio;
    private Date _dataAlteracao;
    private boolean _rascunho;
    private boolean _originalRascunho;
    private boolean _setOriginalRascunho;
    private int _statusWorkflow;
    private int _originalStatusWorkflow;
    private boolean _setOriginalStatusWorkflow;
    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 long _columnBitmask;
    private Mensagem _escapedModel;

    public MensagemModelImpl() {
    }

    /**
     * Converts the soap model instance into a normal model instance.
     *
     * @param soapModel the soap model instance to convert
     * @return the normal model instance
     */
    public static Mensagem toModel(MensagemSoap soapModel) {
        if (soapModel == null) {
            return null;
        }

        Mensagem model = new MensagemImpl();

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

        return model;
    }

    /**
     * Converts the soap model instances into normal model instances.
     *
     * @param soapModels the soap model instances to convert
     * @return the normal model instances
     */
    public static List<Mensagem> toModels(MensagemSoap[] soapModels) {
        if (soapModels == null) {
            return null;
        }

        List<Mensagem> models = new ArrayList<Mensagem>(soapModels.length);

        for (MensagemSoap soapModel : soapModels) {
            models.add(toModel(soapModel));
        }

        return models;
    }

    @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 Class<?> getModelClass() {
        return Mensagem.class;
    }

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

    @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);
        }
    }

    @JSON
    @Override
    public String getUuid() {
        if (_uuid == null) {
            return StringPool.BLANK;
        } else {
            return _uuid;
        }
    }

    @Override
    public void setUuid(String uuid) {
        if (_originalUuid == null) {
            _originalUuid = _uuid;
        }

        _uuid = uuid;
    }

    public String getOriginalUuid() {
        return GetterUtil.getString(_originalUuid);
    }

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

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

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

    @Override
    public void setCompanyId(long companyId) {
        _columnBitmask |= COMPANYID_COLUMN_BITMASK;

        if (!_setOriginalCompanyId) {
            _setOriginalCompanyId = true;

            _originalCompanyId = _companyId;
        }

        _companyId = companyId;
    }

    public long getOriginalCompanyId() {
        return _originalCompanyId;
    }

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

    @Override
    public void setGroupId(long groupId) {
        _columnBitmask |= GROUPID_COLUMN_BITMASK;

        if (!_setOriginalGroupId) {
            _setOriginalGroupId = true;

            _originalGroupId = _groupId;
        }

        _groupId = groupId;
    }

    public long getOriginalGroupId() {
        return _originalGroupId;
    }

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

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

    @JSON
    @Override
    public String getGrupoDestinatarioIds() {
        if (_grupoDestinatarioIds == null) {
            return StringPool.BLANK;
        } else {
            return _grupoDestinatarioIds;
        }
    }

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

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

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

    @JSON
    @Override
    public String getCodigoMensagem() {
        if (_codigoMensagem == null) {
            return StringPool.BLANK;
        } else {
            return _codigoMensagem;
        }
    }

    @Override
    public void setCodigoMensagem(String codigoMensagem) {
        _columnBitmask |= CODIGOMENSAGEM_COLUMN_BITMASK;

        if (_originalCodigoMensagem == null) {
            _originalCodigoMensagem = _codigoMensagem;
        }

        _codigoMensagem = codigoMensagem;
    }

    public String getOriginalCodigoMensagem() {
        return GetterUtil.getString(_originalCodigoMensagem);
    }

    @JSON
    @Override
    public String getAssunto() {
        if (_assunto == null) {
            return StringPool.BLANK;
        } else {
            return _assunto;
        }
    }

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

    @JSON
    @Override
    public String getConteudo() {
        if (_conteudo == null) {
            return StringPool.BLANK;
        } else {
            return _conteudo;
        }
    }

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

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

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

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

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

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

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

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

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

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

    @JSON
    @Override
    public String getNomeSolicitante() {
        if (_nomeSolicitante == null) {
            return StringPool.BLANK;
        } else {
            return _nomeSolicitante;
        }
    }

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

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

    @Override
    public void setUserIdCriador(long userIdCriador) {
        _columnBitmask |= USERIDCRIADOR_COLUMN_BITMASK;

        if (!_setOriginalUserIdCriador) {
            _setOriginalUserIdCriador = true;

            _originalUserIdCriador = _userIdCriador;
        }

        _userIdCriador = userIdCriador;
    }

    public long getOriginalUserIdCriador() {
        return _originalUserIdCriador;
    }

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

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

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

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

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

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

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

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

    @Override
    public void setRascunho(boolean rascunho) {
        _columnBitmask |= RASCUNHO_COLUMN_BITMASK;

        if (!_setOriginalRascunho) {
            _setOriginalRascunho = true;

            _originalRascunho = _rascunho;
        }

        _rascunho = rascunho;
    }

    public boolean getOriginalRascunho() {
        return _originalRascunho;
    }

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

    @Override
    public void setStatusWorkflow(int statusWorkflow) {
        _columnBitmask |= STATUSWORKFLOW_COLUMN_BITMASK;

        if (!_setOriginalStatusWorkflow) {
            _setOriginalStatusWorkflow = true;

            _originalStatusWorkflow = _statusWorkflow;
        }

        _statusWorkflow = statusWorkflow;
    }

    public int getOriginalStatusWorkflow() {
        return _originalStatusWorkflow;
    }

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

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

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

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

    @JSON
    @Override
    public String getComentarioWorkflow() {
        if (_comentarioWorkflow == null) {
            return StringPool.BLANK;
        } else {
            return _comentarioWorkflow;
        }
    }

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

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

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

    @JSON
    @Override
    public String getLiteralAgendamento() {
        if (_literalAgendamento == null) {
            return StringPool.BLANK;
        } else {
            return _literalAgendamento;
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

    public long getColumnBitmask() {
        return _columnBitmask;
    }

    @Override
    public ExpandoBridge getExpandoBridge() {
        return ExpandoBridgeFactoryUtil.getExpandoBridge(getCompanyId(),
            Mensagem.class.getName(), getPrimaryKey());
    }

    @Override
    public void setExpandoBridgeAttributes(ServiceContext serviceContext) {
        ExpandoBridge expandoBridge = getExpandoBridge();

        expandoBridge.setAttributes(serviceContext);
    }

    @Override
    public Mensagem toEscapedModel() {
        if (_escapedModel == null) {
            _escapedModel = (Mensagem) ProxyUtil.newProxyInstance(_classLoader,
                    _escapedModelInterfaces, new AutoEscapeBeanHandler(this));
        }

        return _escapedModel;
    }

    @Override
    public Object clone() {
        MensagemImpl mensagemImpl = new MensagemImpl();

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

        mensagemImpl.resetOriginalValues();

        return mensagemImpl;
    }

    @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 Mensagem)) {
            return false;
        }

        Mensagem mensagem = (Mensagem) obj;

        long primaryKey = mensagem.getPrimaryKey();

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

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

    @Override
    public void resetOriginalValues() {
        MensagemModelImpl mensagemModelImpl = this;

        mensagemModelImpl._originalUuid = mensagemModelImpl._uuid;

        mensagemModelImpl._originalCompanyId = mensagemModelImpl._companyId;

        mensagemModelImpl._setOriginalCompanyId = false;

        mensagemModelImpl._originalGroupId = mensagemModelImpl._groupId;

        mensagemModelImpl._setOriginalGroupId = false;

        mensagemModelImpl._originalCodigoMensagem = mensagemModelImpl._codigoMensagem;

        mensagemModelImpl._originalUserIdCriador = mensagemModelImpl._userIdCriador;

        mensagemModelImpl._setOriginalUserIdCriador = false;

        mensagemModelImpl._originalRascunho = mensagemModelImpl._rascunho;

        mensagemModelImpl._setOriginalRascunho = false;

        mensagemModelImpl._originalStatusWorkflow = mensagemModelImpl._statusWorkflow;

        mensagemModelImpl._setOriginalStatusWorkflow = false;

        mensagemModelImpl._columnBitmask = 0;
    }

    @Override
    public CacheModel<Mensagem> toCacheModel() {
        MensagemCacheModel mensagemCacheModel = new MensagemCacheModel();

        mensagemCacheModel.uuid = getUuid();

        String uuid = mensagemCacheModel.uuid;

        if ((uuid != null) && (uuid.length() == 0)) {
            mensagemCacheModel.uuid = null;
        }

        mensagemCacheModel.mensagemId = getMensagemId();

        mensagemCacheModel.companyId = getCompanyId();

        mensagemCacheModel.groupId = getGroupId();

        mensagemCacheModel.templateId = getTemplateId();

        mensagemCacheModel.grupoDestinatarioIds = getGrupoDestinatarioIds();

        String grupoDestinatarioIds = mensagemCacheModel.grupoDestinatarioIds;

        if ((grupoDestinatarioIds != null) &&
                (grupoDestinatarioIds.length() == 0)) {
            mensagemCacheModel.grupoDestinatarioIds = null;
        }

        mensagemCacheModel.contaSaidaId = getContaSaidaId();

        mensagemCacheModel.codigoMensagem = getCodigoMensagem();

        String codigoMensagem = mensagemCacheModel.codigoMensagem;

        if ((codigoMensagem != null) && (codigoMensagem.length() == 0)) {
            mensagemCacheModel.codigoMensagem = null;
        }

        mensagemCacheModel.assunto = getAssunto();

        String assunto = mensagemCacheModel.assunto;

        if ((assunto != null) && (assunto.length() == 0)) {
            mensagemCacheModel.assunto = null;
        }

        mensagemCacheModel.conteudo = getConteudo();

        String conteudo = mensagemCacheModel.conteudo;

        if ((conteudo != null) && (conteudo.length() == 0)) {
            mensagemCacheModel.conteudo = null;
        }

        mensagemCacheModel.prioridade = getPrioridade();

        mensagemCacheModel.ativo = getAtivo();

        mensagemCacheModel.tipoEnvio = getTipoEnvio();

        mensagemCacheModel.situacaoEnvio = getSituacaoEnvio();

        mensagemCacheModel.nomeSolicitante = getNomeSolicitante();

        String nomeSolicitante = mensagemCacheModel.nomeSolicitante;

        if ((nomeSolicitante != null) && (nomeSolicitante.length() == 0)) {
            mensagemCacheModel.nomeSolicitante = null;
        }

        mensagemCacheModel.userIdCriador = getUserIdCriador();

        Date dataSolicitacao = getDataSolicitacao();

        if (dataSolicitacao != null) {
            mensagemCacheModel.dataSolicitacao = dataSolicitacao.getTime();
        } else {
            mensagemCacheModel.dataSolicitacao = Long.MIN_VALUE;
        }

        Date dataUltimoEnvio = getDataUltimoEnvio();

        if (dataUltimoEnvio != null) {
            mensagemCacheModel.dataUltimoEnvio = dataUltimoEnvio.getTime();
        } else {
            mensagemCacheModel.dataUltimoEnvio = Long.MIN_VALUE;
        }

        Date dataAlteracao = getDataAlteracao();

        if (dataAlteracao != null) {
            mensagemCacheModel.dataAlteracao = dataAlteracao.getTime();
        } else {
            mensagemCacheModel.dataAlteracao = Long.MIN_VALUE;
        }

        mensagemCacheModel.rascunho = getRascunho();

        mensagemCacheModel.statusWorkflow = getStatusWorkflow();

        mensagemCacheModel.userIdWorkflow = getUserIdWorkflow();

        Date dataStatusWorkflow = getDataStatusWorkflow();

        if (dataStatusWorkflow != null) {
            mensagemCacheModel.dataStatusWorkflow = dataStatusWorkflow.getTime();
        } else {
            mensagemCacheModel.dataStatusWorkflow = Long.MIN_VALUE;
        }

        mensagemCacheModel.comentarioWorkflow = getComentarioWorkflow();

        String comentarioWorkflow = mensagemCacheModel.comentarioWorkflow;

        if ((comentarioWorkflow != null) && (comentarioWorkflow.length() == 0)) {
            mensagemCacheModel.comentarioWorkflow = null;
        }

        mensagemCacheModel.clonagemPai = getClonagemPai();

        mensagemCacheModel.literalAgendamento = getLiteralAgendamento();

        String literalAgendamento = mensagemCacheModel.literalAgendamento;

        if ((literalAgendamento != null) && (literalAgendamento.length() == 0)) {
            mensagemCacheModel.literalAgendamento = null;
        }

        mensagemCacheModel.userIdCancel = getUserIdCancel();

        mensagemCacheModel.userIdAprovador = getUserIdAprovador();

        mensagemCacheModel.userIdReprovador = getUserIdReprovador();

        Date dataCancel = getDataCancel();

        if (dataCancel != null) {
            mensagemCacheModel.dataCancel = dataCancel.getTime();
        } else {
            mensagemCacheModel.dataCancel = Long.MIN_VALUE;
        }

        mensagemCacheModel.service = getService();

        return mensagemCacheModel;
    }

    @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();
    }
}
