br.ufg.inf.es.saep.sandbox.dominio.infraestrutura.ValorDeserializer.java Source code

Java tutorial

Introduction

Here is the source code for br.ufg.inf.es.saep.sandbox.dominio.infraestrutura.ValorDeserializer.java

Source

/*
 * Copyright (c) 2016. Fbrica de Software - Instituto de Informtica (UFG)
 * Creative Commons Attribution 4.0 International License.
 */

package br.ufg.inf.es.saep.sandbox.dominio.infraestrutura;

import br.ufg.inf.es.saep.sandbox.dominio.Valor;
import com.google.gson.*;

import java.lang.reflect.Type;

import static br.ufg.inf.es.saep.sandbox.dominio.Valor.DATA;
import static br.ufg.inf.es.saep.sandbox.dominio.Valor.LOGICO;
import static br.ufg.inf.es.saep.sandbox.dominio.Valor.REAL;

/**
 * Define processo de converso de "string" em instncia
 * de Valor.
 *
 * @see Valor
 */
public class ValorDeserializer implements JsonDeserializer<Valor> {

    @Override
    public Valor deserialize(JsonElement jsonElement, Type type,
            JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
        JsonObject jsonObject = jsonElement.getAsJsonObject();
        byte tipo = jsonObject.get("tipo").getAsByte();
        JsonElement valor = jsonObject.get("valor");

        if (tipo == Valor.STRING) {
            return new Valor(valor.getAsString());
        } else if (tipo == REAL) {
            return new Valor(valor.getAsFloat());
        } else if (tipo == LOGICO) {
            return new Valor(valor.getAsBoolean());
        } else if (tipo == DATA) {
            return Valor.dataFromString(valor.getAsString());
        }

        return null;
    }
}