dochazka.OsobyJSON.java Source code

Java tutorial

Introduction

Here is the source code for dochazka.OsobyJSON.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 dochazka;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.lang.reflect.Type;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author ml
 */
public class OsobyJSON {

    private static final String filePath = "src/dochazka/osoba.json";
    private Osoba[] osoby;

    public OsobyJSON() {
        try {
            // read the json file
            FileReader reader = new FileReader(filePath);
            GsonBuilder gsonBuilder = new GsonBuilder();
            gsonBuilder.registerTypeAdapter(Osoba.class, new OsobaDeserializer());
            gsonBuilder.registerTypeAdapter(Udalost.class, new UdalostDeserializer());
            Gson gson = gsonBuilder.create();
            //Gson gson = new Gson();
            osoby = gson.fromJson(reader, Osoba[].class);
        } catch (FileNotFoundException ex) {
            JOptionPane.showMessageDialog(null, "Soubor nebyl na?ten!", "Chyba", JOptionPane.ERROR_MESSAGE);
        }
    }

    public Osoba getOsoba(int index) {
        return this.osoby[index];
    }

    public Osoba seekPrijmeni(String prijmeni) {
        int i = 0;
        while ((!this.osoby[i].getPrijmeni().equals(prijmeni.toString())) && (i < this.osoby.length - 1)) {
            i++;
        }
        if (i < this.osoby.length) {
            return this.osoby[i];
        } else {
            return null;
        }
    }

    private class OsobaDeserializer implements JsonDeserializer<Osoba> {

        @Override
        public Osoba deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
                throws JsonParseException {
            final JsonObject jsonObject = json.getAsJsonObject();
            final String prijmeni = jsonObject.get("prijmeni").getAsString();
            final String jmeno = jsonObject.get("jmeno").getAsString();
            RodneCislo rc = context.deserialize(jsonObject.get("rodnecislo"), RodneCislo.class);
            Udalost[] udalosti = context.deserialize(jsonObject.get("udalost"), Udalost[].class);
            Osoba o = new Osoba(jmeno, prijmeni, rc.getRC());
            o.setUdalosti(udalosti);
            return o;
        }
    }

    private class UdalostDeserializer implements JsonDeserializer {

        @Override
        public Udalost deserialize(final JsonElement json, final Type typeOfT,
                final JsonDeserializationContext context) throws JsonParseException {
            final JsonObject jsonObject = json.getAsJsonObject();

            final Udalost udalost = new Udalost();
            try {
                udalost.setCas(jsonObject.get("cas").getAsString());
            } catch (ParseException ex) {
                Logger.getLogger(OsobyJSON.class.getName()).log(Level.SEVERE, null, ex);
            }
            udalost.setTyp(jsonObject.get("typ").getAsString());
            return udalost;
        }
    }
}