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

import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Agendamento;

import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.model.CacheModel;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

import java.util.Date;

/**
 * The cache model class for representing Agendamento in entity cache.
 *
 * @author Henrique Simoes
 * @see Agendamento
 * @generated
 */
public class AgendamentoCacheModel implements CacheModel<Agendamento>,
    Externalizable {
    public String uuid;
    public long agendamentoId;
    public long mensagemId;
    public long companyId;
    public long groupId;
    public int tipoAgendamento;
    public long dataCalendario;
    public long dataInicio;
    public long dataFim;
    public int padraoRecorrencia;
    public int frequencia;
    public boolean diarioTodos;
    public String semanalDias;
    public int mensalDiaFrequencia;
    public long dataAtualizacao;
    public long dataEnvio;
    public int situacaoEnvio;
    public boolean erroEnvio;
    public String mensagemErro;

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

        sb.append("{uuid=");
        sb.append(uuid);
        sb.append(", agendamentoId=");
        sb.append(agendamentoId);
        sb.append(", mensagemId=");
        sb.append(mensagemId);
        sb.append(", companyId=");
        sb.append(companyId);
        sb.append(", groupId=");
        sb.append(groupId);
        sb.append(", tipoAgendamento=");
        sb.append(tipoAgendamento);
        sb.append(", dataCalendario=");
        sb.append(dataCalendario);
        sb.append(", dataInicio=");
        sb.append(dataInicio);
        sb.append(", dataFim=");
        sb.append(dataFim);
        sb.append(", padraoRecorrencia=");
        sb.append(padraoRecorrencia);
        sb.append(", frequencia=");
        sb.append(frequencia);
        sb.append(", diarioTodos=");
        sb.append(diarioTodos);
        sb.append(", semanalDias=");
        sb.append(semanalDias);
        sb.append(", mensalDiaFrequencia=");
        sb.append(mensalDiaFrequencia);
        sb.append(", dataAtualizacao=");
        sb.append(dataAtualizacao);
        sb.append(", dataEnvio=");
        sb.append(dataEnvio);
        sb.append(", situacaoEnvio=");
        sb.append(situacaoEnvio);
        sb.append(", erroEnvio=");
        sb.append(erroEnvio);
        sb.append(", mensagemErro=");
        sb.append(mensagemErro);
        sb.append("}");

        return sb.toString();
    }

    @Override
    public Agendamento toEntityModel() {
        AgendamentoImpl agendamentoImpl = new AgendamentoImpl();

        if (uuid == null) {
            agendamentoImpl.setUuid(StringPool.BLANK);
        } else {
            agendamentoImpl.setUuid(uuid);
        }

        agendamentoImpl.setAgendamentoId(agendamentoId);
        agendamentoImpl.setMensagemId(mensagemId);
        agendamentoImpl.setCompanyId(companyId);
        agendamentoImpl.setGroupId(groupId);
        agendamentoImpl.setTipoAgendamento(tipoAgendamento);

        if (dataCalendario == Long.MIN_VALUE) {
            agendamentoImpl.setDataCalendario(null);
        } else {
            agendamentoImpl.setDataCalendario(new Date(dataCalendario));
        }

        if (dataInicio == Long.MIN_VALUE) {
            agendamentoImpl.setDataInicio(null);
        } else {
            agendamentoImpl.setDataInicio(new Date(dataInicio));
        }

        if (dataFim == Long.MIN_VALUE) {
            agendamentoImpl.setDataFim(null);
        } else {
            agendamentoImpl.setDataFim(new Date(dataFim));
        }

        agendamentoImpl.setPadraoRecorrencia(padraoRecorrencia);
        agendamentoImpl.setFrequencia(frequencia);
        agendamentoImpl.setDiarioTodos(diarioTodos);

        if (semanalDias == null) {
            agendamentoImpl.setSemanalDias(StringPool.BLANK);
        } else {
            agendamentoImpl.setSemanalDias(semanalDias);
        }

        agendamentoImpl.setMensalDiaFrequencia(mensalDiaFrequencia);

        if (dataAtualizacao == Long.MIN_VALUE) {
            agendamentoImpl.setDataAtualizacao(null);
        } else {
            agendamentoImpl.setDataAtualizacao(new Date(dataAtualizacao));
        }

        if (dataEnvio == Long.MIN_VALUE) {
            agendamentoImpl.setDataEnvio(null);
        } else {
            agendamentoImpl.setDataEnvio(new Date(dataEnvio));
        }

        agendamentoImpl.setSituacaoEnvio(situacaoEnvio);
        agendamentoImpl.setErroEnvio(erroEnvio);

        if (mensagemErro == null) {
            agendamentoImpl.setMensagemErro(StringPool.BLANK);
        } else {
            agendamentoImpl.setMensagemErro(mensagemErro);
        }

        agendamentoImpl.resetOriginalValues();

        return agendamentoImpl;
    }

    @Override
    public void readExternal(ObjectInput objectInput) throws IOException {
        uuid = objectInput.readUTF();
        agendamentoId = objectInput.readLong();
        mensagemId = objectInput.readLong();
        companyId = objectInput.readLong();
        groupId = objectInput.readLong();
        tipoAgendamento = objectInput.readInt();
        dataCalendario = objectInput.readLong();
        dataInicio = objectInput.readLong();
        dataFim = objectInput.readLong();
        padraoRecorrencia = objectInput.readInt();
        frequencia = objectInput.readInt();
        diarioTodos = objectInput.readBoolean();
        semanalDias = objectInput.readUTF();
        mensalDiaFrequencia = objectInput.readInt();
        dataAtualizacao = objectInput.readLong();
        dataEnvio = objectInput.readLong();
        situacaoEnvio = objectInput.readInt();
        erroEnvio = objectInput.readBoolean();
        mensagemErro = objectInput.readUTF();
    }

    @Override
    public void writeExternal(ObjectOutput objectOutput)
        throws IOException {
        if (uuid == null) {
            objectOutput.writeUTF(StringPool.BLANK);
        } else {
            objectOutput.writeUTF(uuid);
        }

        objectOutput.writeLong(agendamentoId);
        objectOutput.writeLong(mensagemId);
        objectOutput.writeLong(companyId);
        objectOutput.writeLong(groupId);
        objectOutput.writeInt(tipoAgendamento);
        objectOutput.writeLong(dataCalendario);
        objectOutput.writeLong(dataInicio);
        objectOutput.writeLong(dataFim);
        objectOutput.writeInt(padraoRecorrencia);
        objectOutput.writeInt(frequencia);
        objectOutput.writeBoolean(diarioTodos);

        if (semanalDias == null) {
            objectOutput.writeUTF(StringPool.BLANK);
        } else {
            objectOutput.writeUTF(semanalDias);
        }

        objectOutput.writeInt(mensalDiaFrequencia);
        objectOutput.writeLong(dataAtualizacao);
        objectOutput.writeLong(dataEnvio);
        objectOutput.writeInt(situacaoEnvio);
        objectOutput.writeBoolean(erroEnvio);

        if (mensagemErro == null) {
            objectOutput.writeUTF(StringPool.BLANK);
        } else {
            objectOutput.writeUTF(mensagemErro);
        }
    }
}
