Android Open Source - android-reddit Json To Thing Converter






From Project

Back to project page android-reddit.

License

The source code is released under:

MIT License

If you think the Android project android-reddit listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.pocketreddit.library.things.utils;
//from   w w w. j a  va2s  . c  om
import org.json.JSONException;
import org.json.JSONObject;

import com.pocketreddit.library.things.Kind;
import com.pocketreddit.library.things.More;
import com.pocketreddit.library.things.Thing;
import com.pocketreddit.library.things.factories.CommentFactory;
import com.pocketreddit.library.things.factories.LinkFactory;
import com.pocketreddit.library.things.factories.ListingFactory;
import com.pocketreddit.library.things.factories.SubredditFactory;
import com.pocketreddit.library.things.factories.ThingFactory;
import com.pocketreddit.library.things.factories.ThingFactoryException;

public class JsonToThingConverter<T extends Thing> {
    public JsonToThingConverter() {
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public T convert(JSONObject json) throws ThingFactoryException {
        Kind kind;
        try {
            kind = Kind.toKind(json.getString("kind"));
        } catch (JSONException e) {
            throw new ThingFactoryException(
                    "An error occurred trying to parse the kind of thing in provided json", e);
        }

        ThingFactory thingFactory = null;

        switch (kind) {
        case SUBREDDIT:
            thingFactory = new SubredditFactory(json);
            break;
        case LISTING:
            thingFactory = new ListingFactory(json);
            break;
        case THREAD:
            try {
                thingFactory = json.getJSONObject("data").isNull("domain") ? new CommentFactory(
                        json) : new LinkFactory(json);
            } catch (JSONException e) {
                throw new ThingFactoryException("Could not parse data for Thread thing.", e);
            }
            break;
        case COMMENT:
            thingFactory = new CommentFactory(json);
            break;
        case MORE:
            return (T) new More();
        default:
            throw new UnsupportedOperationException("Kind: " + kind
                    + " conversion not yet supported.");
        }

        return (T) thingFactory.createThing();
    }
}




Java Source Code List

com.pocketreddit.library.Constants.java
com.pocketreddit.library.Created.java
com.pocketreddit.library.JsonParsingException.java
com.pocketreddit.library.Votable.java
com.pocketreddit.library.authentication.AuthenticationException.java
com.pocketreddit.library.authentication.Authenticator.java
com.pocketreddit.library.authentication.LiveAuthenticator.java
com.pocketreddit.library.authentication.LoginResult.java
com.pocketreddit.library.datasources.DataSourceException.java
com.pocketreddit.library.datasources.JsonDataSource.java
com.pocketreddit.library.datasources.LiveDataSource.java
com.pocketreddit.library.datasources.RedditDataSource.java
com.pocketreddit.library.net.HttpHelper.java
com.pocketreddit.library.net.NetException.java
com.pocketreddit.library.things.Account.java
com.pocketreddit.library.things.Comment.java
com.pocketreddit.library.things.Kind.java
com.pocketreddit.library.things.Link.java
com.pocketreddit.library.things.Listing.java
com.pocketreddit.library.things.Message.java
com.pocketreddit.library.things.More.java
com.pocketreddit.library.things.Subreddit.java
com.pocketreddit.library.things.Thing.java
com.pocketreddit.library.things.UserSubmittedContent.java
com.pocketreddit.library.things.factories.CommentFactory.java
com.pocketreddit.library.things.factories.LinkFactory.java
com.pocketreddit.library.things.factories.ListingFactory.java
com.pocketreddit.library.things.factories.SubredditFactory.java
com.pocketreddit.library.things.factories.ThingFactoryException.java
com.pocketreddit.library.things.factories.ThingFactory.java
com.pocketreddit.library.things.utils.JsonToThingConverter.java
com.pocketreddit.library.utils.StreamUtils.java
com.pocketreddit.library.utils.UtilsException.java