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

import br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflow;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflowModel;

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 MensagemWorkflow service. Represents a row in the &quot;PRT_GESTMSG_MENSAGEM_WORKFLOW&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.MensagemWorkflowModel} exist only as a container for the default property accessors generated by ServiceBuilder. Helper methods and all application logic should be put in {@link MensagemWorkflowImpl}.
 * </p>
 *
 * @author Henrique Simoes
 * @see MensagemWorkflowImpl
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflow
 * @see br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflowModel
 * @generated
 */
public class MensagemWorkflowModelImpl extends BaseModelImpl<MensagemWorkflow>
    implements MensagemWorkflowModel {
    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never modify or reference this class directly. All methods that expect a mensagem workflow model instance should use the {@link br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflow} interface instead.
     */
    public static final String TABLE_NAME = "PRT_GESTMSG_MENSAGEM_WORKFLOW";
    public static final Object[][] TABLE_COLUMNS = {
            { "uuid_", Types.VARCHAR },
            { "mensagemWorkflowId", Types.BIGINT },
            { "mensagemId", Types.BIGINT },
            { "userId", Types.BIGINT },
            { "status", Types.INTEGER },
            { "data_", Types.TIMESTAMP },
            { "comentario", Types.VARCHAR }
        };
    public static final String TABLE_SQL_CREATE = "create table PRT_GESTMSG_MENSAGEM_WORKFLOW (uuid_ VARCHAR(75) null,mensagemWorkflowId LONG not null primary key,mensagemId LONG,userId LONG,status INTEGER,data_ DATE null,comentario STRING null)";
    public static final String TABLE_SQL_DROP = "drop table PRT_GESTMSG_MENSAGEM_WORKFLOW";
    public static final String ORDER_BY_JPQL = " ORDER BY mensagemWorkflow.mensagemWorkflowId ASC";
    public static final String ORDER_BY_SQL = " ORDER BY PRT_GESTMSG_MENSAGEM_WORKFLOW.mensagemWorkflowId 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.MensagemWorkflow"),
            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.MensagemWorkflow"),
            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.MensagemWorkflow"),
            true);
    public static long MENSAGEMID_COLUMN_BITMASK = 1L;
    public static long UUID_COLUMN_BITMASK = 2L;
    public static long MENSAGEMWORKFLOWID_COLUMN_BITMASK = 4L;
    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.MensagemWorkflow"));
    private static ClassLoader _classLoader = MensagemWorkflow.class.getClassLoader();
    private static Class<?>[] _escapedModelInterfaces = new Class[] {
            MensagemWorkflow.class
        };
    private String _uuid;
    private String _originalUuid;
    private long _mensagemWorkflowId;
    private long _mensagemId;
    private long _originalMensagemId;
    private boolean _setOriginalMensagemId;
    private long _userId;
    private String _userUuid;
    private int _status;
    private Date _data;
    private String _comentario;
    private long _columnBitmask;
    private MensagemWorkflow _escapedModel;

    public MensagemWorkflowModelImpl() {
    }

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

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

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

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

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

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

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

        attributes.put("uuid", getUuid());
        attributes.put("mensagemWorkflowId", getMensagemWorkflowId());
        attributes.put("mensagemId", getMensagemId());
        attributes.put("userId", getUserId());
        attributes.put("status", getStatus());
        attributes.put("data", getData());
        attributes.put("comentario", getComentario());

        return attributes;
    }

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

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

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

        if (mensagemWorkflowId != null) {
            setMensagemWorkflowId(mensagemWorkflowId);
        }

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

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

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

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

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

        if (status != null) {
            setStatus(status);
        }

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

        if (data != null) {
            setData(data);
        }

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

        if (comentario != null) {
            setComentario(comentario);
        }
    }

    @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 getMensagemWorkflowId() {
        return _mensagemWorkflowId;
    }

    @Override
    public void setMensagemWorkflowId(long mensagemWorkflowId) {
        _mensagemWorkflowId = mensagemWorkflowId;
    }

    @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 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 int getStatus() {
        return _status;
    }

    @Override
    public void setStatus(int status) {
        _status = status;
    }

    @Override
    public Date getData() {
        return _data;
    }

    @Override
    public void setData(Date data) {
        _data = data;
    }

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

    @Override
    public void setComentario(String comentario) {
        _comentario = comentario;
    }

    public long getColumnBitmask() {
        return _columnBitmask;
    }

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

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

        expandoBridge.setAttributes(serviceContext);
    }

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

        return _escapedModel;
    }

    @Override
    public Object clone() {
        MensagemWorkflowImpl mensagemWorkflowImpl = new MensagemWorkflowImpl();

        mensagemWorkflowImpl.setUuid(getUuid());
        mensagemWorkflowImpl.setMensagemWorkflowId(getMensagemWorkflowId());
        mensagemWorkflowImpl.setMensagemId(getMensagemId());
        mensagemWorkflowImpl.setUserId(getUserId());
        mensagemWorkflowImpl.setStatus(getStatus());
        mensagemWorkflowImpl.setData(getData());
        mensagemWorkflowImpl.setComentario(getComentario());

        mensagemWorkflowImpl.resetOriginalValues();

        return mensagemWorkflowImpl;
    }

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

        MensagemWorkflow mensagemWorkflow = (MensagemWorkflow) obj;

        long primaryKey = mensagemWorkflow.getPrimaryKey();

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

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

    @Override
    public void resetOriginalValues() {
        MensagemWorkflowModelImpl mensagemWorkflowModelImpl = this;

        mensagemWorkflowModelImpl._originalUuid = mensagemWorkflowModelImpl._uuid;

        mensagemWorkflowModelImpl._originalMensagemId = mensagemWorkflowModelImpl._mensagemId;

        mensagemWorkflowModelImpl._setOriginalMensagemId = false;

        mensagemWorkflowModelImpl._columnBitmask = 0;
    }

    @Override
    public CacheModel<MensagemWorkflow> toCacheModel() {
        MensagemWorkflowCacheModel mensagemWorkflowCacheModel = new MensagemWorkflowCacheModel();

        mensagemWorkflowCacheModel.uuid = getUuid();

        String uuid = mensagemWorkflowCacheModel.uuid;

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

        mensagemWorkflowCacheModel.mensagemWorkflowId = getMensagemWorkflowId();

        mensagemWorkflowCacheModel.mensagemId = getMensagemId();

        mensagemWorkflowCacheModel.userId = getUserId();

        mensagemWorkflowCacheModel.status = getStatus();

        Date data = getData();

        if (data != null) {
            mensagemWorkflowCacheModel.data = data.getTime();
        } else {
            mensagemWorkflowCacheModel.data = Long.MIN_VALUE;
        }

        mensagemWorkflowCacheModel.comentario = getComentario();

        String comentario = mensagemWorkflowCacheModel.comentario;

        if ((comentario != null) && (comentario.length() == 0)) {
            mensagemWorkflowCacheModel.comentario = null;
        }

        return mensagemWorkflowCacheModel;
    }

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

        sb.append("{uuid=");
        sb.append(getUuid());
        sb.append(", mensagemWorkflowId=");
        sb.append(getMensagemWorkflowId());
        sb.append(", mensagemId=");
        sb.append(getMensagemId());
        sb.append(", userId=");
        sb.append(getUserId());
        sb.append(", status=");
        sb.append(getStatus());
        sb.append(", data=");
        sb.append(getData());
        sb.append(", comentario=");
        sb.append(getComentario());
        sb.append("}");

        return sb.toString();
    }

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

        sb.append("<model><model-name>");
        sb.append(
            "br.mp.mprj.portal.portlet.gestaomensagens.service.model.MensagemWorkflow");
        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>mensagemWorkflowId</column-name><column-value><![CDATA[");
        sb.append(getMensagemWorkflowId());
        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>userId</column-name><column-value><![CDATA[");
        sb.append(getUserId());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>status</column-name><column-value><![CDATA[");
        sb.append(getStatus());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>data</column-name><column-value><![CDATA[");
        sb.append(getData());
        sb.append("]]></column-value></column>");
        sb.append(
            "<column><column-name>comentario</column-name><column-value><![CDATA[");
        sb.append(getComentario());
        sb.append("]]></column-value></column>");

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

        return sb.toString();
    }
}
