edu.wpi.cs.wpisuitetng.modules.core.models.ProjectDeserializer.java Source code

Java tutorial

Introduction

Here is the source code for edu.wpi.cs.wpisuitetng.modules.core.models.ProjectDeserializer.java

Source

/*******************************************************************************
 * Copyright (c) 2012 -- WPI Suite
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    twack
 *******************************************************************************/

package edu.wpi.cs.wpisuitetng.modules.core.models;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Map.Entry;
import java.util.Set;

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 com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

/**
 * A custom deserializer class for the GSON JSON library.
 * @author bgaffey
 *
 */
public class ProjectDeserializer implements JsonDeserializer<Project> {

    @Override
    public Project deserialize(JsonElement projectElement, Type projectType, JsonDeserializationContext context)
            throws JsonParseException {
        JsonObject deflated = projectElement.getAsJsonObject();

        // check for the unique identifier <idNum> field.
        if (!deflated.has("idNum")) {
            throw new JsonParseException("The serialized Project did not contain the required idNum field.");
        }

        // for all other attributes: instantiate as null, fill in if given.

        //int idNum = deflated.get("idNum").getAsInt();
        String idNum = deflated.get("idNum").getAsString();
        String name = null;
        User owner = null;

        String ownerString = null;
        User[] team = null;
        String[] supportedModules = null;

        if (deflated.has("name")) {
            name = deflated.get("name").getAsString();
        }

        if (deflated.has("owner")) {
            owner = User.fromJSON(deflated.get("owner").getAsString());
        }

        if (deflated.has("supportedModules")) {
            ArrayList<String> tempList = new ArrayList<String>();
            JsonArray tempMods = deflated.get("supportedModules").getAsJsonArray();
            for (JsonElement mod : tempMods) {
                tempList.add(mod.getAsString());
            }
            String[] tempSM = new String[1];
            supportedModules = tempList.toArray(tempSM);
        }

        Project inflated = new Project(name, idNum, owner, team, supportedModules);

        if (deflated.has("team")) {
            JsonArray tempTeam = deflated.get("team").getAsJsonArray();
            for (JsonElement member : tempTeam) {
                inflated.addTeamMember(User.fromJSON(member.getAsString()));
            }

        }

        return inflated;
    }

}