com.stoyanr.todo.client.presenter.JsonSerializer.java Source code

Java tutorial

Introduction

Here is the source code for com.stoyanr.todo.client.presenter.JsonSerializer.java

Source

/*
 * $Id: $
 *
 * Copyright (C) 2012 Stoyan Rachev (stoyanr@gmail.com)
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2, or (at your option) any
 * later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 */

package com.stoyanr.todo.client.presenter;

import java.util.ArrayList;
import java.util.Date;

import com.google.gwt.json.client.JSONNumber;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.stoyanr.todo.model.Document;
import com.stoyanr.todo.model.Item;
import com.stoyanr.todo.model.Item.Priority;
import com.stoyanr.todo.model.Item.Status;

public class JsonSerializer {

    private static final String NULL = "NULL";

    private static final String KEY = "key";
    private static final String ID = "id";
    private static final String TEXT = "text";
    private static final String PRIORITY = "priority";
    private static final String STATUS = "status";
    private static final String CREATED = "created";
    private static final String UPDATED = "updated";
    private static final String USER_ID = "userId";
    private static final String LAST_SAVED = "lastSaved";

    public String toString(Item item) {
        return toJson(item).toString();
    }

    public Item getItem(String string) {
        return getItem(JSONParser.parseStrict(string).isObject());
    }

    public String toString(Document document) {
        return toJson(document).toString();
    }

    public Document getDocument(String string) {
        return getDocument(JSONParser.parseStrict(string).isObject());
    }

    public JSONObject toJson(Item item) {
        JSONObject result = new JSONObject();
        result.put(KEY, new JSONString(toNullableValue(item.getKey())));
        result.put(ID, new JSONNumber(item.getId()));
        result.put(TEXT, new JSONString(item.getText()));
        result.put(PRIORITY, new JSONString(item.getPriority().toString()));
        result.put(STATUS, new JSONString(item.getStatus().toString()));
        result.put(CREATED, new JSONNumber(item.getCreated().getTime()));
        result.put(UPDATED, new JSONNumber(item.getUpdated().getTime()));
        return result;
    }

    public Item getItem(JSONObject value) {
        String key = fromNullableValue(value.get(KEY).isString().stringValue());
        long id = (long) value.get(ID).isNumber().doubleValue();
        String text = value.get(TEXT).isString().stringValue();
        Priority priority = Priority.valueOf(value.get(PRIORITY).isString().stringValue());
        Status status = Status.valueOf(value.get(STATUS).isString().stringValue());
        Date created = new Date((long) value.get(CREATED).isNumber().doubleValue());
        Date updated = new Date((long) value.get(UPDATED).isNumber().doubleValue());
        return new Item(key, id, text, priority, status, created, updated);
    }

    public JSONObject toJson(Document document) {
        JSONObject result = new JSONObject();
        result.put(USER_ID, new JSONString(document.getUserId()));
        result.put(LAST_SAVED, new JSONNumber(document.getLastSaved().getTime()));
        return result;
    }

    public Document getDocument(JSONObject value) {
        String userId = value.get(USER_ID).isString().stringValue();
        Date lastSaved = new Date((long) value.get(LAST_SAVED).isNumber().doubleValue());
        return new Document(userId, new ArrayList<Item>(), lastSaved);
    }

    private String toNullableValue(String value) {
        return (value != null) ? value : NULL;
    }

    private String fromNullableValue(String keyValue) {
        return keyValue.equals(NULL) ? null : keyValue;
    }

}