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

com.flash3388.flashlib.vision.analysis.JsonTarget Maven / Gradle / Ivy

package com.flash3388.flashlib.vision.analysis;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

import java.util.NoSuchElementException;
import java.util.Objects;

public class JsonTarget implements Target {

    public static class Builder extends JsonBuilderBase {

        private final Gson mGson;

        private Builder(Gson gson) {
            super(Builder.class);
            mGson = gson;
        }

        Builder() {
            this(new Gson());
        }

        public JsonTarget build() {
            return new JsonTarget(mGson, mProperties);
        }
    }

    private final Gson mGson;
    private final JsonObject mProperties;

    public JsonTarget(Gson gson, JsonObject properties) {
        mGson = gson;
        mProperties = properties;
    }

    public JsonTarget(JsonObject properties) {
        this(new Gson(), properties);
    }

    @Override
    public boolean hasProperty(String name) {
        return mProperties.has(name);
    }

    @Override
    public  T getProperty(String name, Class type) {
        JsonElement element = mProperties.get(name);
        if (element == null) {
            throw new NoSuchElementException(name);
        }

        return mGson.fromJson(element, type);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        JsonTarget that = (JsonTarget) o;
        return Objects.equals(mProperties, that.mProperties);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mProperties);
    }

    public JsonObject toJson() {
        return mProperties.deepCopy();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy