package name.abuchen.portfolio.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Dashboard
{
public enum Config
{
REPORTING_PERIOD, DATA_SERIES, CONFIG_UUID, AGGREGATION, EXCHANGE_RATE_SERIES;
}
public static class Column
{
private List<Widget> widgets = new ArrayList<>();
public List<Widget> getWidgets()
{
return widgets;
}
public void setWidgets(List<Widget> widgets)
{
this.widgets = widgets;
}
}
public static class Widget
{
private String type;
private String label;
private Map<String, String> configuration;
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getLabel()
{
return label;
}
public void setLabel(String label)
{
this.label = label;
}
public Map<String, String> getConfiguration()
{
if (configuration == null)
configuration = new HashMap<>();
return configuration;
}
}
private String name;
private Map<String, String> configuration;
private List<Column> columns;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Map<String, String> getConfiguration()
{
if (configuration == null)
configuration = new HashMap<>();
return configuration;
}
public List<Column> getColumns()
{
if (columns == null)
columns = new ArrayList<>();
return columns;
}
public void setColumns(List<Column> columns)
{
this.columns = columns;
}
public Dashboard copy()
{
Dashboard copy = new Dashboard();
copy.setName(this.name);
copy.getConfiguration().putAll(this.getConfiguration());
for (Column column : columns)
{
Column copyColumn = new Column();
column.getWidgets().stream().map(w -> {
Widget c = new Widget();
c.setLabel(w.getLabel());
c.setType(w.getType());
c.getConfiguration().putAll(w.getConfiguration());
return c;
}).forEach(copyColumn.getWidgets()::add);
copy.getColumns().add(copyColumn);
}
return copy;
}
}