edu.eci.arsw.umlcolaborativo.services.InMemoryRelationsRedis.java Source code

Java tutorial

Introduction

Here is the source code for edu.eci.arsw.umlcolaborativo.services.InMemoryRelationsRedis.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.eci.arsw.umlcolaborativo.services;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import edu.eci.arsw.umlcolaborativo.entities.Relacion;
import edu.eci.arsw.umlcolaborativo.entities.RelacionAsociacion;
import edu.eci.arsw.umlcolaborativo.entities.RelacionDependencia;
import edu.eci.arsw.umlcolaborativo.util.InterfaceAdapter;
import edu.eci.arsw.umlcolaborativo.util.JedisUtil;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;

/**
 *
 * @author German Lopez
 */
//@Service
public class InMemoryRelationsRedis implements PersistenciaRelaciones {

    Gson gson;
    JsonParser jsonParser;
    JsonElement json;

    /**
     * Constructor de las memoria de relaciones de redis
     */
    public InMemoryRelationsRedis() {
        GsonBuilder builder = new GsonBuilder();
        builder.registerTypeHierarchyAdapter(Relacion.class, new InterfaceAdapter<Relacion>());
        gson = builder.create();
        //gson = new Gson();  
        jsonParser = new JsonParser();
    }

    @Override
    public Map<String, Relacion> getRelaciones() {
        Jedis jedis = JedisUtil.getPool().getResource();
        String cadenaRelaciones = jedis.hget("Relaciones", "todosR");
        json = jsonParser.parse(cadenaRelaciones);
        Map<String, Relacion> relaciones = (Map<String, Relacion>) gson.fromJson(json,
                new TypeToken<Map<String, Relacion>>() {
                }.getType());
        jedis.close();
        return relaciones;
    }

    @Override
    public void setRealciones(Map<String, Relacion> relaciones) {
        Jedis jedis = JedisUtil.getPool().getResource();
        jedis.hset("Relaciones", "todosR", gson.toJson(relaciones));
        jedis.close();
    }

    @Override
    public Relacion consultarRelacion(String nombre) {
        Jedis jedis = JedisUtil.getPool().getResource();
        String cadenaRelaciones = jedis.hget("Relaciones", "todosR");
        json = jsonParser.parse(cadenaRelaciones);
        Map<String, Relacion> relaciones = (Map<String, Relacion>) gson.fromJson(json,
                new TypeToken<Map<String, Relacion>>() {
                }.getType());
        jedis.close();
        return relaciones.get(nombre);
    }

    /**
     * Cargar los elementos de prueba de las relaciones
     */
    public void cargarRelaciones() {
        Jedis jedis = JedisUtil.getPool().getResource();
        Map<String, Relacion> relaciones = new HashMap<>();
        Relacion relacionAsociacion = new RelacionAsociacion("Relacion Asociacion");
        Relacion relacionDependencia = new RelacionDependencia("Relacion Dependencia");
        relaciones.put(relacionAsociacion.getNombreRelacion(), relacionAsociacion);
        relaciones.put(relacionDependencia.getNombreRelacion(), relacionDependencia);
        jedis.hset("Relaciones", "todosR", gson.toJson(relaciones));
        jedis.close();
    }

}