/* * Copyright 2017 Hewlett Packard Enterprise Development Company, L.P. * Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License. */ package com.hp.autonomy.frontend.find.idol.dashboards.widgets; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; import com.hp.autonomy.frontend.configuration.ConfigException; import com.hp.autonomy.frontend.configuration.SimpleComponent; import com.hp.autonomy.types.requests.idol.actions.tags.TagName; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Collections; import java.util.HashMap; import java.util.Map; @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") @Builder @Data @EqualsAndHashCode(callSuper = false) @JsonDeserialize(builder = SunburstWidgetSettings.SunburstWidgetSettingsBuilder.class) public class SunburstWidgetSettings extends SimpleComponent<SunburstWidgetSettings> implements WidgetSettings<SunburstWidgetSettings> { private static final String SECTION = "Sunburst Dashboard"; private final Map<String, Object> widgetSettings; private final TagName firstField; private final TagName secondField; private final Integer maxLegendEntries; @Override public void basicValidate(final String section) throws ConfigException { if (firstField == null) { throw new ConfigException(SECTION, "Sunburst dashboard config must specify a first field"); } super.basicValidate(section); } @Override @JsonAnyGetter public Map<String, Object> getWidgetSettings() { return Collections.unmodifiableMap(widgetSettings); } @SuppressWarnings({"FieldMayBeFinal", "WeakerAccess", "unused"}) @JsonPOJOBuilder(withPrefix = "") public static class SunburstWidgetSettingsBuilder { private Map<String, Object> widgetSettings = new HashMap<>(); private TagName firstField; private TagName secondField; private Integer maxLegendEntries; @SuppressWarnings("unused") @JsonAnySetter public SunburstWidgetSettingsBuilder widgetSetting(final String key, final Object value) { widgetSettings.put(key, value); return this; } } }