All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.dropbox.core.DbxAccountInfo Maven / Gradle / Ivy

The newest version!
package com.dropbox.core;

import com.dropbox.core.json.JsonExtractionException;
import com.dropbox.core.json.JsonExtractor;
import com.dropbox.core.util.DumpWriter;
import static com.dropbox.core.util.StringUtil.jq;
import com.fasterxml.jackson.core.JsonLocation;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;

import java.io.IOException;

public class DbxAccountInfo extends DbxDataObject
{
    public final long userId;
    public final String displayName;
    public final String country;
    public final String referralLink;
    public final Quota quota;

    public DbxAccountInfo(long userId, String displayName, String country, String referralLink, Quota quota)
    {
        this.userId = userId;
        this.displayName = displayName;
        this.country = country;
        this.referralLink = referralLink;
        this.quota = quota;
    }

    @Override
    protected void dumpFields(DumpWriter out)
    {
        out.field("userId");
        dump(out, Long.toString(userId));

        out.field("displayName");
        dump(out, displayName);

        out.field("country");
        dump(out, country);

        out.field("referralLink");
        dump(out, referralLink);

        out.field("quota");
        dump(out, quota);
    }

    public String toString()
    {
        return "(" + userId + ", " + jq(displayName) + ")";
    }

    public static final class Quota extends DbxDataObject
    {
        public final long total;
        public final long normal;
        public final long shared;

        public Quota(long quota, long normal, long quotaShared)
        {
            this.total = quota;
            this.normal = normal;
            this.shared = quotaShared;
        }

        @Override
        protected void dumpFields(DumpWriter out)
        {
            out.field("total");
            dump(out, Long.toString(total));

            out.field("normal");
            dump(out, Long.toString(normal));

            out.field("shared");
            dump(out, Long.toString(shared));
        }

        // ------------------------------------------------------
        // JSON parsing

        public static final JsonExtractor Extractor = new JsonExtractor()
        {
            public final Quota extract(JsonParser parser)
                throws IOException, JsonExtractionException
            {
                JsonLocation top = JsonExtractor.expectObjectStart(parser);

                long quota = -1;
                long normal = -1;
                long shared = -1;

                while (parser.getCurrentToken() == JsonToken.FIELD_NAME) {
                    String fieldName = parser.getCurrentName();
                    parser.nextToken();

                    int fi = FM.get(fieldName);
                    try {
                        if (fi == -1) {
                            // Unknown field.  Skip over it.
                            JsonExtractor.skipValue(parser);
                        }
                        switch (fi) {
                            case FM_quota: quota = JsonExtractor.extractUnsignedLongField(parser, fieldName, quota); break;
                            case FM_normal: normal = JsonExtractor.extractUnsignedLongField(parser, fieldName, normal); break;
                            case FM_shared: shared = JsonExtractor.extractUnsignedLongField(parser, fieldName, shared); break;
                            default:
                                throw new AssertionError("bad index: " + fi + ", field = \"" + fieldName + "\"");
                        }
                    }
                    catch (JsonExtractionException ex) {
                        throw ex.addFieldContext(fieldName);
                    }
                }

                JsonExtractor.expectObjectEnd(parser);

                if (quota < 0) throw new JsonExtractionException("missing field \"quota\"", top);
                if (normal < 0) throw new JsonExtractionException("missing field \"normal\"", top);
                if (shared < 0) throw new JsonExtractionException("missing field \"shared\"", top);

                return new Quota(quota, normal, shared);
            }
        };

        private static final int FM_quota = 0;
        private static final int FM_normal = 1;
        private static final int FM_shared = 2;
        private static final JsonExtractor.FieldMapping FM;

        static {
            JsonExtractor.FieldMapping.Builder b = new JsonExtractor.FieldMapping.Builder();
            b.add("quota", FM_quota);
            b.add("normal", FM_normal);
            b.add("shared", FM_shared);
            FM = b.build();
        }

    }

    // ------------------------------------------------------
    // JSON parsing

    public static final JsonExtractor Extractor = new JsonExtractor()
    {
        public final DbxAccountInfo extract(JsonParser parser)
            throws IOException, JsonExtractionException
        {
            JsonLocation top = JsonExtractor.expectObjectStart(parser);

            long uid = -1;
            String display_name = null;
            String country = null;
            String referral_link = null;
            Quota quota_info = null;

            while (parser.getCurrentToken() == JsonToken.FIELD_NAME) {
                String fieldName = parser.getCurrentName();
                parser.nextToken();

                try {
                    int fi = FM.get(fieldName);
                    switch (fi) {
                        case -1: JsonExtractor.skipValue(parser); break;
                        case FM_uid: uid = JsonExtractor.extractUnsignedLongField(parser, fieldName, uid); break;
                        case FM_display_name: display_name = JsonExtractor.StringExtractor.extractField(parser, fieldName, display_name); break;
                        case FM_country: country = JsonExtractor.StringExtractor.extractField(parser, fieldName, country); break;
                        case FM_referral_link: referral_link = JsonExtractor.StringExtractor.extractField(parser, fieldName, referral_link); break;
                        case FM_quota_info: quota_info = Quota.Extractor.extractField(parser, fieldName, quota_info); break;
                        default:
                            throw new AssertionError("bad index: " + fi + ", field = \"" + fieldName + "\"");
                    }
                }
                catch (JsonExtractionException ex) {
                    throw ex.addFieldContext(fieldName);
                }
            }

            JsonExtractor.expectObjectEnd(parser);

            if (uid < 0) throw new JsonExtractionException("missing field \"uid\"", top);
            if (display_name == null) throw new JsonExtractionException("missing field \"display_name\"", top);
            if (country == null) throw new JsonExtractionException("missing field \"country\"", top);
            if (referral_link == null) throw new JsonExtractionException("missing field \"referral_link\"", top);
            if (quota_info == null) throw new JsonExtractionException("missing field \"quota_info\"", top);

            return new DbxAccountInfo(uid, display_name, country, referral_link, quota_info);
        }
    };

    private static final int FM_uid = 0;
    private static final int FM_display_name = 1;
    private static final int FM_country = 2;
    private static final int FM_referral_link = 3;
    private static final int FM_quota_info = 4;
    private static final JsonExtractor.FieldMapping FM;

    static {
        JsonExtractor.FieldMapping.Builder b = new JsonExtractor.FieldMapping.Builder();
        b.add("uid", FM_uid);
        b.add("display_name", FM_display_name);
        b.add("country", FM_country);
        b.add("referral_link", FM_referral_link);
        b.add("quota_info", FM_quota_info);
        FM = b.build();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy