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

net.intelie.liverig.plugin.widgets.AssetRequestConfigService Maven / Gradle / Ivy

The newest version!
package net.intelie.liverig.plugin.widgets;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import net.intelie.live.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.List;

import static java.util.Collections.singletonList;

public class AssetRequestConfigService {

    private static final Gson GSON = new Gson();

    @Nullable
    public AssetWidgetConfig getWidgetConfig(WidgetQueryRequest request) {
        AssetWidgetConfig storedWidgetConfig = GSON.fromJson(GSON.toJson(request.config()), AssetWidgetConfig.class);
        if (storedWidgetConfig == null) return null;

        AssetWidgetConfig userWidgetConfig;

        if (request.userConfig() == null)
            userWidgetConfig = storedWidgetConfig;
        else
            userWidgetConfig = GSON.fromJson(GSON.toJson(request.userConfig()), AssetWidgetConfig.class);

        if (userWidgetConfig == null)
            userWidgetConfig = storedWidgetConfig;

        if (userWidgetConfig.getAssets().isEmpty())
            userWidgetConfig.setAssets(storedWidgetConfig.getAssets());

        return userWidgetConfig;
    }


    public void maybeAddLayer(@Nullable String expression, @Nullable String reducer, @Nullable String span,
                              @NotNull WidgetQueryRequest request, @NotNull List layers,
                              boolean follow, boolean preloadWindow, JsonElement userConfig) {
        if (expression != null)
            layers.add(new WidgetQueryData.WidgetQueryLayer(singletonList(
                    makeQuery(expression, reducer, span, request, follow, preloadWindow, userConfig)
            )));
    }

    @NotNull
    private Query makeQuery(String expression, String reducer, String span, WidgetQueryRequest request, boolean follow, boolean preloadWindow, JsonElement userConfig) {

        return new Query(expression)
                .follow(follow)
                .reduceHistory(reducer)
                .span(span)
                .description(request.description())
                .prefilter(request.prefilter())
                .preloadWindow(preloadWindow)
                .context("userConfig", LiveJson.fromJson(request.userConfig(), Object.class))
                .lookupValues(QueryRequest.makeValues(request.lookupValues()));
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy