/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dashbuilder.displayer.json;
import java.util.Arrays;
import java.util.Collection;
import org.dashbuilder.dataset.group.DateIntervalType;
import org.dashbuilder.displayer.DisplayerSettings;
import org.dashbuilder.displayer.DisplayerSettingsFactory;
import org.dashbuilder.json.JsonObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import static org.junit.Assert.*;
import static org.dashbuilder.dataset.group.AggregateFunctionType.*;
import static org.dashbuilder.dataset.sort.SortOrder.DESCENDING;
@RunWith(Parameterized.class)
public class DisplayerSettingsJsonTest {
public static final DisplayerSettings OPPS_BY_PIPELINE = DisplayerSettingsFactory.newPieChartSettings()
.uuid("opps-by-pipeline")
.dataset("SALES_OPPS")
.group("PIPELINE")
.column("PIPELINE", "Pipeline")
.column(COUNT, "Number of opps")
.title("salesopps_displayers_by_pipeline_title")
.titleVisible(false)
.width(500).height(300)
.margins(10, 10, 10, 10)
.filterOn(false, true, true)
.refreshOn()
.buildSettings();
public static final DisplayerSettings OPPS_BY_STATUS = DisplayerSettingsFactory.newPieChartSettings()
.uuid("opps-by-status")
.dataset("SALES_OPPS")
.group("STATUS")
.column("STATUS", "Status")
.column("AMOUNT", SUM, "Total amount")
.title("salesopps_displayers_by_status_title")
.titleVisible(false)
.margins(10, 10, 10, 10)
.filterOn(false, true, true)
.refreshOn()
.buildSettings();
public static final DisplayerSettings OPPS_BY_SALESMAN = DisplayerSettingsFactory.newPieChartSettings()
.uuid("opps-by-salesman")
.dataset("SALES_OPPS")
.group("SALES_PERSON")
.column("SALES_PERSON", "Sales person")
.column("AMOUNT", SUM, "Total amount")
.title("salesopps_displayers_by_salesman_title")
.titleVisible(false)
.margins(10, 10, 10, 10)
.filterOn(false, true, true)
.refreshOn()
.buildSettings();
public static final DisplayerSettings OPPS_EXPECTED_PIPELINE = DisplayerSettingsFactory.newAreaChartSettings()
.uuid("opps-expected-pipeline")
.dataset("SALES_OPPS")
.group("CLOSING_DATE").dynamic(24, DateIntervalType.MONTH, true)
.column("CLOSING_DATE", "Closing date")
.column("EXPECTED_AMOUNT", SUM, "salesopps_displayers_by_exp_pipeline_column1")
.title("salesopps_displayers_by_exp_pipeline_title")
.titleVisible(false)
.width(500).height(300)
.margins(20, 50, 100, 100)
.filterOn(true, true, true)
.refreshOn()
.buildSettings();
public static final DisplayerSettings OPPS_BY_PRODUCT = DisplayerSettingsFactory.newBarChartSettings()
.subType_Bar()
.uuid("opps-by-product")
.dataset("SALES_OPPS")
.group("PRODUCT")
.column("PRODUCT", "Product")
.column("AMOUNT", SUM, "salesopps_displayers_by_product_column1")
.title("salesopps_displayers_by_product_title")
.titleVisible(false)
.margins(10, 50, 100, 100)
.filterOn(false, true, true)
.refreshOn()
.buildSettings();
public static final DisplayerSettings OPPS_BY_COUNTRY = DisplayerSettingsFactory.newBarChartSettings()
.subType_Bar()
.uuid("opps-by-country")
.dataset("SALES_OPPS")
.group("COUNTRY")
.column("COUNTRY", "Country")
.column("AMOUNT", SUM, "alesopps_displayers_by_country_column1")
.title("salesopps_displayers_by_country_title")
.titleVisible(false)
.margins(10, 80, 100, 100)
.filterOn(false, true, true)
.refreshOn()
.buildSettings();
public static final DisplayerSettings OPPS_COUNTRY_SUMMARY = DisplayerSettingsFactory.newTableSettings()
.uuid("opps-country-summary")
.dataset("SALES_OPPS")
.group("COUNTRY")
.column("COUNTRY", "salesopps_displayers_country_summary_column1")
.column("AMOUNT", SUM, "salesopps_displayers_country_summary_column2")
.column(COUNT, "salesopps_displayers_country_summary_column3")
.column("AMOUNT", AVERAGE, "salesopps_displayers_country_summary_column4")
.column("AMOUNT", MIN, "salesopps_displayers_country_summary_column5")
.column("AMOUNT", MAX, "salesopps_displayers_country_summary_column6")
.title("salesopps_displayers_country_summary_title")
.titleVisible(false)
.tablePageSize(20)
.filterOff(true)
.refreshOn()
.buildSettings();
public static final DisplayerSettings OPPS_ALLOPPS_LISTING = DisplayerSettingsFactory.newTableSettings()
.uuid("opps-allopps-listing")
.dataset("SALES_OPPS")
.title("salesopps_displayers_all_list_title")
.titleVisible(false)
.tablePageSize(20)
.tableOrderEnabled(true)
.tableOrderDefault("AMOUNT", DESCENDING)
.filterOn(true, true, true)
.refreshOn()
.buildSettings();
@Parameterized.Parameters
public static Collection displayers() {
return Arrays.asList(new Object[][]{
{OPPS_ALLOPPS_LISTING},
{OPPS_BY_COUNTRY},
{OPPS_BY_PIPELINE},
{OPPS_BY_PRODUCT},
{OPPS_BY_SALESMAN},
{OPPS_BY_STATUS},
{OPPS_COUNTRY_SUMMARY},
{OPPS_EXPECTED_PIPELINE}
});
}
protected DisplayerSettings displayerSettings;
public DisplayerSettingsJsonTest(DisplayerSettings settings) {
this.displayerSettings = settings;
}
@Test
public void testSettingsMarshalling() {
DisplayerSettingsJSONMarshaller displayerJsonMarshaller = DisplayerSettingsJSONMarshaller.get();
JsonObject _jsonObj = displayerJsonMarshaller.toJsonObject(displayerSettings);
assertNotNull(_jsonObj.toString());
DisplayerSettings unmarshalled = displayerJsonMarshaller.fromJsonString(_jsonObj.toString());
assertEquals(unmarshalled, displayerSettings);
}
}