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

import br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagemModel;

import com.liferay.portal.kernel.bean.AutoEscapeBeanHandler;
import com.liferay.portal.kernel.exception.SystemException;
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.portal.util.PortalUtil;

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.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * The base model implementation for the AnexoMensagem service. Represents a row in the &quot;PRT_GESTMSG_ANEXO_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.AnexoMensagemModel} exist only as a container for the default property accessors generated by ServiceBuilder. Helper methods and all application logic should be put in {@link AnexoMensagemImpl}.
 * </p>
 *
 * @author Henrique Simoes
 * @see AnexoMensagemImpl
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagemModel
 * @generated
 */
public class AnexoMensagemModelImpl extends BaseModelImpl<AnexoMensagem>
    implements AnexoMensagemModel {
    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never modify or reference this class directly. All methods that expect a anexo mensagem model instance should use the {@link br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem} interface instead.
     */
    public static final String TABLE_NAME = "PRT_GESTMSG_ANEXO_MENSAGEM";
    public static final Object[][] TABLE_COLUMNS = {
            { "uuid_", Types.VARCHAR },
            { "anexoMensagemId", Types.BIGINT },
            { "mensagemId", Types.BIGINT },
            { "companyId", Types.BIGINT },
            { "groupId", Types.BIGINT },
            { "userId", Types.BIGINT },
            { "dataCriacao", Types.TIMESTAMP },
            { "anexoUrl", Types.VARCHAR },
            { "fileName", Types.VARCHAR },
            { "versao", Types.VARCHAR },
            { "contentType", Types.VARCHAR },
            { "ativo", Types.BOOLEAN },
            { "anexoFileEntryId", Types.BIGINT },
            { "anexoPath", Types.VARCHAR }
        };
    public static final String TABLE_SQL_CREATE = "create table PRT_GESTMSG_ANEXO_MENSAGEM (uuid_ VARCHAR(75) null,anexoMensagemId LONG not null primary key,mensagemId LONG,companyId LONG,groupId LONG,userId LONG,dataCriacao DATE null,anexoUrl VARCHAR(255) null,fileName VARCHAR(255) null,versao VARCHAR(75) null,contentType VARCHAR(75) null,ativo BOOLEAN,anexoFileEntryId LONG,anexoPath VARCHAR(255) null)";
    public static final String TABLE_SQL_DROP = "drop table PRT_GESTMSG_ANEXO_MENSAGEM";
    public static final String ORDER_BY_JPQL = " ORDER BY anexoMensagem.anexoMensagemId ASC";
    public static final String ORDER_BY_SQL = " ORDER BY PRT_GESTMSG_ANEXO_MENSAGEM.anexoMensagemId 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.AnexoMensagem"),
            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.AnexoMensagem"),
            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.AnexoMensagem"),
            true);
    public static long ATIVO_COLUMN_BITMASK = 1L;
    public static long COMPANYID_COLUMN_BITMASK = 2L;
    public static long GROUPID_COLUMN_BITMASK = 4L;
    public static long MENSAGEMID_COLUMN_BITMASK = 8L;
    public static long UUID_COLUMN_BITMASK = 16L;
    public static long ANEXOMENSAGEMID_COLUMN_BITMASK = 32L;
    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.AnexoMensagem"));
    private static ClassLoader _classLoader = AnexoMensagem.class.getClassLoader();
    private static Class<?>[] _escapedModelInterfaces = new Class[] {
            AnexoMensagem.class
        };
    private String _uuid;
    private String _originalUuid;
    private long _anexoMensagemId;
    private long _mensagemId;
    private long _originalMensagemId;
    private boolean _setOriginalMensagemId;
    private long _companyId;
    private long _originalCompanyId;
    private boolean _setOriginalCompanyId;
    private long _groupId;
    private long _originalGroupId;
    private boolean _setOriginalGroupId;
    private long _userId;
    private String _userUuid;
    private Date _dataCriacao;
    private String _anexoUrl;
    private String _fileName;
    private String _versao;
    private String _contentType;
    private boolean _ativo;
    private boolean _originalAtivo;
    private boolean _setOriginalAtivo;
    private long _anexoFileEntryId;
    private String _anexoPath;
    private long _columnBitmask;
    private AnexoMensagem _escapedModel;

    public AnexoMensagemModelImpl() {
    }

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

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

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

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

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

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

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

        attributes.put("uuid", getUuid());
        attributes.put("anexoMensagemId", getAnexoMensagemId());
        attributes.put("mensagemId", getMensagemId());
        attributes.put("companyId", getCompanyId());
        attributes.put("groupId", getGroupId());
        attributes.put("userId", getUserId());
        attributes.put("dataCriacao", getDataCriacao());
        attributes.put("anexoUrl", getAnexoUrl());
        attributes.put("fileName", getFileName());
        attributes.put("versao", getVersao());
        attributes.put("contentType", getContentType());
        attributes.put("ativo", getAtivo());
        attributes.put("anexoFileEntryId", getAnexoFileEntryId());
        attributes.put("anexoPath", getAnexoPath());

        return attributes;
    }

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

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

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

        if (anexoMensagemId != null) {
            setAnexoMensagemId(anexoMensagemId);
        }

        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 userId = (Long) attributes.get("userId");

        if (userId != null) {
            setUserId(userId);
        }

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

        if (dataCriacao != null) {
            setDataCriacao(dataCriacao);
        }

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

        if (anexoUrl != null) {
            setAnexoUrl(anexoUrl);
        }

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

        if (fileName != null) {
            setFileName(fileName);
        }

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

        if (versao != null) {
            setVersao(versao);
        }

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

        if (contentType != null) {
            setContentType(contentType);
        }

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

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

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

        if (anexoFileEntryId != null) {
            setAnexoFileEntryId(anexoFileEntryId);
        }

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

        if (anexoPath != null) {
            setAnexoPath(anexoPath);
        }
    }

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

    @Override
    public long getAnexoMensagemId() {
        return _anexoMensagemId;
    }

    @Override
    public void setAnexoMensagemId(long anexoMensagemId) {
        _anexoMensagemId = anexoMensagemId;
    }

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

    @Override
    public void setMensagemId(long mensagemId) {
        _columnBitmask |= MENSAGEMID_COLUMN_BITMASK;

        if (!_setOriginalMensagemId) {
            _setOriginalMensagemId = true;

            _originalMensagemId = _mensagemId;
        }

        _mensagemId = mensagemId;
    }

    public long getOriginalMensagemId() {
        return _originalMensagemId;
    }

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

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

    @Override
    public long getUserId() {
        return _userId;
    }

    @Override
    public void setUserId(long userId) {
        _userId = userId;
    }

    @Override
    public String getUserUuid() throws SystemException {
        return PortalUtil.getUserValue(getUserId(), "uuid", _userUuid);
    }

    @Override
    public void setUserUuid(String userUuid) {
        _userUuid = userUuid;
    }

    @Override
    public Date getDataCriacao() {
        return _dataCriacao;
    }

    @Override
    public void setDataCriacao(Date dataCriacao) {
        _dataCriacao = dataCriacao;
    }

    @Override
    public String getAnexoUrl() {
        if (_anexoUrl == null) {
            return StringPool.BLANK;
        } else {
            return _anexoUrl;
        }
    }

    @Override
    public void setAnexoUrl(String anexoUrl) {
        _anexoUrl = anexoUrl;
    }

    @Override
    public String getFileName() {
        if (_fileName == null) {
            return StringPool.BLANK;
        } else {
            return _fileName;
        }
    }

    @Override
    public void setFileName(String fileName) {
        _fileName = fileName;
    }

    @Override
    public String getVersao() {
        if (_versao == null) {
            return StringPool.BLANK;
        } else {
            return _versao;
        }
    }

    @Override
    public void setVersao(String versao) {
        _versao = versao;
    }

    @Override
    public String getContentType() {
        if (_contentType == null) {
            return StringPool.BLANK;
        } else {
            return _contentType;
        }
    }

    @Override
    public void setContentType(String contentType) {
        _contentType = contentType;
    }

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

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

    @Override
    public void setAtivo(boolean ativo) {
        _columnBitmask |= ATIVO_COLUMN_BITMASK;

        if (!_setOriginalAtivo) {
            _setOriginalAtivo = true;

            _originalAtivo = _ativo;
        }

        _ativo = ativo;
    }

    public boolean getOriginalAtivo() {
        return _originalAtivo;
    }

    @Override
    public long getAnexoFileEntryId() {
        return _anexoFileEntryId;
    }

    @Override
    public void setAnexoFileEntryId(long anexoFileEntryId) {
        _anexoFileEntryId = anexoFileEntryId;
    }

    @Override
    public String getAnexoPath() {
        if (_anexoPath == null) {
            return StringPool.BLANK;
        } else {
            return _anexoPath;
        }
    }

    @Override
    public void setAnexoPath(String anexoPath) {
        _anexoPath = anexoPath;
    }

    public long getColumnBitmask() {
        return _columnBitmask;
    }

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

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

        expandoBridge.setAttributes(serviceContext);
    }

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

        return _escapedModel;
    }

    @Override
    public Object clone() {
        AnexoMensagemImpl anexoMensagemImpl = new AnexoMensagemImpl();

        anexoMensagemImpl.setUuid(getUuid());
        anexoMensagemImpl.setAnexoMensagemId(getAnexoMensagemId());
        anexoMensagemImpl.setMensagemId(getMensagemId());
        anexoMensagemImpl.setCompanyId(getCompanyId());
        anexoMensagemImpl.setGroupId(getGroupId());
        anexoMensagemImpl.setUserId(getUserId());
        anexoMensagemImpl.setDataCriacao(getDataCriacao());
        anexoMensagemImpl.setAnexoUrl(getAnexoUrl());
        anexoMensagemImpl.setFileName(getFileName());
        anexoMensagemImpl.setVersao(getVersao());
        anexoMensagemImpl.setContentType(getContentType());
        anexoMensagemImpl.setAtivo(getAtivo());
        anexoMensagemImpl.setAnexoFileEntryId(getAnexoFileEntryId());
        anexoMensagemImpl.setAnexoPath(getAnexoPath());

        anexoMensagemImpl.resetOriginalValues();

        return anexoMensagemImpl;
    }

    @Override
    public int compareTo(AnexoMensagem anexoMensagem) {
        long primaryKey = anexoMensagem.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 AnexoMensagem)) {
            return false;
        }

        AnexoMensagem anexoMensagem = (AnexoMensagem) obj;

        long primaryKey = anexoMensagem.getPrimaryKey();

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

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

    @Override
    public void resetOriginalValues() {
        AnexoMensagemModelImpl anexoMensagemModelImpl = this;

        anexoMensagemModelImpl._originalUuid = anexoMensagemModelImpl._uuid;

        anexoMensagemModelImpl._originalMensagemId = anexoMensagemModelImpl._mensagemId;

        anexoMensagemModelImpl._setOriginalMensagemId = false;

        anexoMensagemModelImpl._originalCompanyId = anexoMensagemModelImpl._companyId;

        anexoMensagemModelImpl._setOriginalCompanyId = false;

        anexoMensagemModelImpl._originalGroupId = anexoMensagemModelImpl._groupId;

        anexoMensagemModelImpl._setOriginalGroupId = false;

        anexoMensagemModelImpl._originalAtivo = anexoMensagemModelImpl._ativo;

        anexoMensagemModelImpl._setOriginalAtivo = false;

        anexoMensagemModelImpl._columnBitmask = 0;
    }

    @Override
    public CacheModel<AnexoMensagem> toCacheModel() {
        AnexoMensagemCacheModel anexoMensagemCacheModel = new AnexoMensagemCacheModel();

        anexoMensagemCacheModel.uuid = getUuid();

        String uuid = anexoMensagemCacheModel.uuid;

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

        anexoMensagemCacheModel.anexoMensagemId = getAnexoMensagemId();

        anexoMensagemCacheModel.mensagemId = getMensagemId();

        anexoMensagemCacheModel.companyId = getCompanyId();

        anexoMensagemCacheModel.groupId = getGroupId();

        anexoMensagemCacheModel.userId = getUserId();

        Date dataCriacao = getDataCriacao();

        if (dataCriacao != null) {
            anexoMensagemCacheModel.dataCriacao = dataCriacao.getTime();
        } else {
            anexoMensagemCacheModel.dataCriacao = Long.MIN_VALUE;
        }

        anexoMensagemCacheModel.anexoUrl = getAnexoUrl();

        String anexoUrl = anexoMensagemCacheModel.anexoUrl;

        if ((anexoUrl != null) && (anexoUrl.length() == 0)) {
            anexoMensagemCacheModel.anexoUrl = null;
        }

        anexoMensagemCacheModel.fileName = getFileName();

        String fileName = anexoMensagemCacheModel.fileName;

        if ((fileName != null) && (fileName.length() == 0)) {
            anexoMensagemCacheModel.fileName = null;
        }

        anexoMensagemCacheModel.versao = getVersao();

        String versao = anexoMensagemCacheModel.versao;

        if ((versao != null) && (versao.length() == 0)) {
            anexoMensagemCacheModel.versao = null;
        }

        anexoMensagemCacheModel.contentType = getContentType();

        String contentType = anexoMensagemCacheModel.contentType;

        if ((contentType != null) && (contentType.length() == 0)) {
            anexoMensagemCacheModel.contentType = null;
        }

        anexoMensagemCacheModel.ativo = getAtivo();

        anexoMensagemCacheModel.anexoFileEntryId = getAnexoFileEntryId();

        anexoMensagemCacheModel.anexoPath = getAnexoPath();

        String anexoPath = anexoMensagemCacheModel.anexoPath;

        if ((anexoPath != null) && (anexoPath.length() == 0)) {
            anexoMensagemCacheModel.anexoPath = null;
        }

        return anexoMensagemCacheModel;
    }

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

        sb.append("{uuid=");
        sb.append(getUuid());
        sb.append(", anexoMensagemId=");
        sb.append(getAnexoMensagemId());
        sb.append(", mensagemId=");
        sb.append(getMensagemId());
        sb.append(", companyId=");
        sb.append(getCompanyId());
        sb.append(", groupId=");
        sb.append(getGroupId());
        sb.append(", userId=");
        sb.append(getUserId());
        sb.append(", dataCriacao=");
        sb.append(getDataCriacao());
        sb.append(", anexoUrl=");
        sb.append(getAnexoUrl());
        sb.append(", fileName=");
        sb.append(getFileName());
        sb.append(", versao=");
        sb.append(getVersao());
        sb.append(", contentType=");
        sb.append(getContentType());
        sb.append(", ativo=");
        sb.append(getAtivo());
        sb.append(", anexoFileEntryId=");
        sb.append(getAnexoFileEntryId());
        sb.append(", anexoPath=");
        sb.append(getAnexoPath());
        sb.append("}");

        return sb.toString();
    }

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

        sb.append("<model><model-name>");
        sb.append(
            "br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem");
        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>anexoMensagemId</column-name><column-value><![CDATA[");
        sb.append(getAnexoMensagemId());
        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>userId</column-name><column-value><![CDATA[");
        sb.append(getUserId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>dataCriacao</column-name><column-value><![CDATA[");
        sb.append(getDataCriacao());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>anexoUrl</column-name><column-value><![CDATA[");
        sb.append(getAnexoUrl());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>fileName</column-name><column-value><![CDATA[");
        sb.append(getFileName());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>versao</column-name><column-value><![CDATA[");
        sb.append(getVersao());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>contentType</column-name><column-value><![CDATA[");
        sb.append(getContentType());
        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>anexoFileEntryId</column-name><column-value><![CDATA[");
        sb.append(getAnexoFileEntryId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>anexoPath</column-name><column-value><![CDATA[");
        sb.append(getAnexoPath());
        sb.append("]]></column-value></column>");

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

        return sb.toString();
    }
}
