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

Java tutorial

Introduction

Here is the source code for br.ufg.inf.es.saep.sandbox.dominio.infraestrutura.Serializador.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.Pontuacao;
import br.ufg.inf.es.saep.sandbox.dominio.Valor;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;

/**
 * Servio para converso de objetos do domnio em
 * sequncias de caracteres e, no sentido inverso,
 * recuperao de objetos a partir de tais sequncias.
 */
public class Serializador {

    private static Gson gson;
    private static Type valorType;
    private static Type pontuacaoType;

    /**
     * Cria instncia de serializar preparada
     * para realizar converses entre objetos e
     * sequncias de caracters.
     */
    public Serializador() {
        GsonBuilder gb = new GsonBuilder();
        gb.registerTypeAdapter(Valor.class, new ValorSerializer());
        gb.registerTypeAdapter(Valor.class, new ValorDeserializer());
        gson = gb.create();

        valorType = new TypeToken<Valor>() {
        }.getType();
        pontuacaoType = new TypeToken<Pontuacao>() {
        }.getType();
    }

    /**
     * Converte instncia de {@link Valor} em
     * sequncia de caracteres.
     *
     * @param v Instncia de {@link Valor}.
     *
     * @return Sequncia de caracteres correspondente ao
     * objeto fornecido no primeiro parmetro.
     */
    public String toJson(Valor v) {
        return gson.toJson(v, valorType);
    }

    /**
     * Converte sequncia de caracteres em instncia
     * de {@link Valor}.
     *
     * @param json Sequncia de caracteres correspondente
     *             a uma instncia de {@link Valor}.
     *
     * @return Instncia de {@link Valor} obtida da
     * sequncia de caracteres fornecida.
     */
    public Valor valor(String json) {
        return gson.fromJson(json, valorType);
    }

    public String toJson(Pontuacao v) {
        return gson.toJson(v, pontuacaoType);
    }

    public Pontuacao pontuacao(String json) {
        return gson.fromJson(json, pontuacaoType);
    }
}