Java tutorial
/* * Copyright 2016 berni. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * 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.kisoonlineapp.uc.management.dashboard; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.lang3.builder.ToStringBuilder; import org.kisoonlineapp.model.DateConvertUtils; /** * * @author berni */ public class DashboardData { /** * Container for a query-result * * @param <T> */ public static class DashboardQueryData<T> { private final String name; private final List data; public DashboardQueryData(String name, List<T> data) { this.name = name; this.data = Collections.unmodifiableList(data); } public String getName() { return name; } public List<T> getData() { return data; } @Override public String toString() { ToStringBuilder tsb = new ToStringBuilder(this); tsb.append("name", this.name); tsb.append("data", this.data); return tsb.toString(); } } public static class DashboardGenericValueCountEntry<V> { protected final V v; protected final Number count; public DashboardGenericValueCountEntry(V v, Number count) { this.v = v; this.count = count; } public Number getCount() { return this.count; } } /** * Container for name-count query result */ public static class DashboardNameCountEntry extends DashboardGenericValueCountEntry<String> { public DashboardNameCountEntry(String name, Number count) { super(name, count); } public DashboardNameCountEntry(String name1, String name2, Number count) { super(name1 + " " + name2, count == null ? Integer.valueOf(0) : count); } public String getName() { return this.v; } @Override public String toString() { ToStringBuilder tsb = new ToStringBuilder(this); tsb.append("name", this.v); tsb.append("count", this.count); return tsb.toString(); } } /** * Container for number-count query result */ public static class DashboardNumberCountEntry extends DashboardGenericValueCountEntry<Number> { public DashboardNumberCountEntry(Number number, Number count) { super(number == null ? Integer.valueOf(0) : number, count == null ? Integer.valueOf(0) : count); } public Number getNumber() { return this.v; } @Override public String toString() { ToStringBuilder tsb = new ToStringBuilder(this); tsb.append("number", this.v); tsb.append("count", this.count); return tsb.toString(); } } /** * Container for date-count query result */ public static class DashboardDateCountEntry extends DashboardGenericValueCountEntry<LocalDateTime> { public DashboardDateCountEntry(Date date, Number count) { super(DateConvertUtils.asLocalDateTime(date, ZoneId.of("Europe/Vienna")), count); } public DashboardDateCountEntry(LocalDateTime date, Number count) { super(date, count); } public LocalDateTime getDate() { return this.v; } @Override public String toString() { ToStringBuilder tsb = new ToStringBuilder(this); tsb.append("date", this.v); tsb.append("count", this.count); return tsb.toString(); } } private final Map<String, DashboardQueryData> dashboardSingleDataMap; public DashboardData(Map<String, DashboardQueryData> dashboardSingleDataMap) { this.dashboardSingleDataMap = Collections.unmodifiableMap(dashboardSingleDataMap); } public Map<String, DashboardQueryData> getDashboardSingleDataMap() { return dashboardSingleDataMap; } @Override public String toString() { ToStringBuilder tsb = new ToStringBuilder(this); tsb.append("dashboardSingleDataMap", this.dashboardSingleDataMap); return tsb.toString(); } }