Refactored bar chart.
This commit is contained in:
parent
235c8faace
commit
6a02eec24b
7 changed files with 351 additions and 89 deletions
|
@ -271,6 +271,7 @@ public class Htmlizer
|
||||||
BarChart chart;
|
BarChart chart;
|
||||||
|
|
||||||
chart = new BarChart("Nombre de membres");
|
chart = new BarChart("Nombre de membres");
|
||||||
|
chart.addDataset("Membres");
|
||||||
|
|
||||||
PathPropertyList values = federation.getByYearPrefix("metrics.members.count").sortByPath();
|
PathPropertyList values = federation.getByYearPrefix("metrics.members.count").sortByPath();
|
||||||
|
|
||||||
|
@ -455,7 +456,7 @@ public class Htmlizer
|
||||||
* To bar chart.
|
* To bar chart.
|
||||||
*
|
*
|
||||||
* @param stats
|
* @param stats
|
||||||
* the statsf
|
* the stats
|
||||||
* @return the bar chart
|
* @return the bar chart
|
||||||
*/
|
*/
|
||||||
public static BarChart toBarChart(final RegistrationStats stats)
|
public static BarChart toBarChart(final RegistrationStats stats)
|
||||||
|
@ -463,6 +464,7 @@ public class Htmlizer
|
||||||
BarChart result;
|
BarChart result;
|
||||||
|
|
||||||
result = new BarChart("Types d'inscription");
|
result = new BarChart("Types d'inscription");
|
||||||
|
result.addDataset("Nombre");
|
||||||
result.add("Sans", stats.getNoneCount(), ChartColor.GREEN);
|
result.add("Sans", stats.getNoneCount(), ChartColor.GREEN);
|
||||||
result.add("Libre", stats.getFreeCount(), ChartColor.YELLOW);
|
result.add("Libre", stats.getFreeCount(), ChartColor.YELLOW);
|
||||||
result.add("Membre", stats.getMemberCount(), ChartColor.ORANGE);
|
result.add("Membre", stats.getMemberCount(), ChartColor.ORANGE);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
|
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
|
||||||
*
|
*
|
||||||
* This file is part of StatoolInfos, simple service statistics tool.
|
* This file is part of StatoolInfos, simple service statistics tool.
|
||||||
*
|
*
|
||||||
|
@ -32,7 +32,8 @@ public class BarChart
|
||||||
|
|
||||||
private String title;
|
private String title;
|
||||||
private boolean displayTitle;
|
private boolean displayTitle;
|
||||||
private BarChartDatas datas;
|
private StringList labels;
|
||||||
|
private BarChartDatasets datasets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new bar chart.
|
* Instantiates a new bar chart.
|
||||||
|
@ -44,7 +45,8 @@ public class BarChart
|
||||||
{
|
{
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.displayTitle = true;
|
this.displayTitle = true;
|
||||||
this.datas = new BarChartDatas();
|
this.labels = new StringList();
|
||||||
|
this.datasets = new BarChartDatasets();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,7 +61,27 @@ public class BarChart
|
||||||
*/
|
*/
|
||||||
public void add(final String label, final double value, final ChartColor color)
|
public void add(final String label, final double value, final ChartColor color)
|
||||||
{
|
{
|
||||||
this.datas.add(new BarChartData(label, value, color));
|
this.labels.add(label);
|
||||||
|
this.datasets.get(0).add(new BarChartData(label, value, color));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the dataset.
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* the name
|
||||||
|
* @return the int
|
||||||
|
*/
|
||||||
|
public int addDataset(final String name)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
|
||||||
|
this.datasets.add(new BarChartDataset(name));
|
||||||
|
|
||||||
|
result = this.datasets.size() - 1;
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -71,20 +93,32 @@ public class BarChart
|
||||||
{
|
{
|
||||||
ChartColors result;
|
ChartColors result;
|
||||||
|
|
||||||
result = new ChartColors();
|
result = this.datasets.get(0).getColors();
|
||||||
|
|
||||||
for (BarChartData data : this.datas)
|
|
||||||
{
|
|
||||||
result.add(data.getColor());
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BarChartDatas getDatas()
|
/**
|
||||||
|
* Gets the dataset.
|
||||||
|
*
|
||||||
|
* @param index
|
||||||
|
* the index
|
||||||
|
* @return the dataset
|
||||||
|
*/
|
||||||
|
public BarChartDataset getDataset(final int index)
|
||||||
{
|
{
|
||||||
return this.datas;
|
BarChartDataset result;
|
||||||
|
|
||||||
|
result = this.datasets.get(index);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BarChartDatasets getDatasets()
|
||||||
|
{
|
||||||
|
return this.datasets;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -96,42 +130,20 @@ public class BarChart
|
||||||
{
|
{
|
||||||
StringList result;
|
StringList result;
|
||||||
|
|
||||||
result = new StringList();
|
result = this.labels;
|
||||||
|
|
||||||
for (BarChartData data : this.datas)
|
|
||||||
{
|
|
||||||
result.add(data.getLabel());
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitle()
|
|
||||||
{
|
|
||||||
return this.title;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the values.
|
* Gets the title.
|
||||||
*
|
*
|
||||||
* @return the values
|
* @return the title
|
||||||
*/
|
*/
|
||||||
public double[] getValues()
|
public String getTitle()
|
||||||
{
|
{
|
||||||
double[] result;
|
return this.title;
|
||||||
|
|
||||||
result = new double[this.datas.size()];
|
|
||||||
|
|
||||||
int index = 0;
|
|
||||||
for (BarChartData data : this.datas)
|
|
||||||
{
|
|
||||||
result[index] = data.getValue();
|
|
||||||
index += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDisplayTitle()
|
public boolean isDisplayTitle()
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
|
|
||||||
*
|
|
||||||
* This file is part of StatoolInfos, simple service statistics tool.
|
|
||||||
*
|
|
||||||
* StatoolInfos is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* StatoolInfos is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package fr.devinsy.statoolinfos.htmlize.charts;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class BarChartDatas.
|
|
||||||
*/
|
|
||||||
public class BarChartDatas extends ArrayList<BarChartData>
|
|
||||||
{
|
|
||||||
private static final long serialVersionUID = -5230173915580487951L;
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(BarChartDatas.class);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new bar chart datas.
|
|
||||||
*/
|
|
||||||
public BarChartDatas()
|
|
||||||
{
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
}
|
|
111
src/fr/devinsy/statoolinfos/htmlize/charts/BarChartDataset.java
Normal file
111
src/fr/devinsy/statoolinfos/htmlize/charts/BarChartDataset.java
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
|
||||||
|
*
|
||||||
|
* This file is part of StatoolInfos, simple service statistics tool.
|
||||||
|
*
|
||||||
|
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* StatoolInfos is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package fr.devinsy.statoolinfos.htmlize.charts;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class BarChartDataset.
|
||||||
|
*/
|
||||||
|
public class BarChartDataset extends ArrayList<BarChartData>
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = -5230173915580487951L;
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(BarChartDataset.class);
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private int borderWidth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new bar chart dataset.
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* the name
|
||||||
|
*/
|
||||||
|
public BarChartDataset(final String name)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
this.name = name;
|
||||||
|
this.borderWidth = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBorderWidth()
|
||||||
|
{
|
||||||
|
return this.borderWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the colors.
|
||||||
|
*
|
||||||
|
* @return the colors
|
||||||
|
*/
|
||||||
|
public ChartColors getColors()
|
||||||
|
{
|
||||||
|
ChartColors result;
|
||||||
|
|
||||||
|
result = new ChartColors();
|
||||||
|
|
||||||
|
for (BarChartData data : this)
|
||||||
|
{
|
||||||
|
result.add(data.getColor());
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the values.
|
||||||
|
*
|
||||||
|
* @return the values
|
||||||
|
*/
|
||||||
|
public double[] getValues()
|
||||||
|
{
|
||||||
|
double[] result;
|
||||||
|
|
||||||
|
result = new double[this.size()];
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
for (BarChartData data : this)
|
||||||
|
{
|
||||||
|
result[index] = data.getValue();
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBorderWidth(final int borderWidth)
|
||||||
|
{
|
||||||
|
this.borderWidth = borderWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(final String name)
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
|
||||||
|
*
|
||||||
|
* This file is part of StatoolInfos, simple service statistics tool.
|
||||||
|
*
|
||||||
|
* StatoolInfos is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* StatoolInfos is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package fr.devinsy.statoolinfos.htmlize.charts;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class BarChartDatasets.
|
||||||
|
*/
|
||||||
|
public class BarChartDatasets extends ArrayList<BarChartDataset>
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 306645976348400468L;
|
||||||
|
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(BarChartDatasets.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new bar chart datasets.
|
||||||
|
*/
|
||||||
|
public BarChartDatasets()
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the by name.
|
||||||
|
*
|
||||||
|
* @param name
|
||||||
|
* the name
|
||||||
|
* @return the by name
|
||||||
|
*/
|
||||||
|
public BarChartDataset get(final String name)
|
||||||
|
{
|
||||||
|
BarChartDataset result;
|
||||||
|
|
||||||
|
boolean ended = false;
|
||||||
|
result = null;
|
||||||
|
Iterator<BarChartDataset> iterator = this.iterator();
|
||||||
|
while (!ended)
|
||||||
|
{
|
||||||
|
if (iterator.hasNext())
|
||||||
|
{
|
||||||
|
BarChartDataset dataset = iterator.next();
|
||||||
|
if (StringUtils.equals(dataset.getName(), name))
|
||||||
|
{
|
||||||
|
ended = true;
|
||||||
|
result = dataset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ended = true;
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -21,6 +21,7 @@ package fr.devinsy.statoolinfos.htmlize.charts;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -53,12 +54,66 @@ public class BarChartView
|
||||||
String source = XidynUtils.load(BarChartView.class.getResource("/fr/devinsy/statoolinfos/htmlize/charts/barChartView.xhtml"));
|
String source = XidynUtils.load(BarChartView.class.getResource("/fr/devinsy/statoolinfos/htmlize/charts/barChartView.xhtml"));
|
||||||
result = XidynUtils.extractBodyContent(source);
|
result = XidynUtils.extractBodyContent(source);
|
||||||
|
|
||||||
result = result.replace("myChart", "myChart_" + DigestUtils.sha1Hex(bar.getTitle() + "PieChart"));
|
result = result.replace("myChart", "myChart_" + DigestUtils.sha1Hex(bar.getTitle() + "barChart"));
|
||||||
result = result.replaceFirst("labels: \\[.*\\]", "labels: " + ChabuUtils.toJSonStrings(bar.getLabels()));
|
|
||||||
result = result.replaceFirst("data: \\[.*\\]", "data: " + ChabuUtils.toJSonNumbers(new StringList(bar.getValues())));
|
StringList lines = new StringList();
|
||||||
result = result.replaceFirst("backgroundColor: \\[.*\\]", "backgroundColor: " + ChabuUtils.toJSonStrings(bar.getColors().getCodes()));
|
lines.append("{\n");
|
||||||
result = result.replaceFirst("borderColor: \\[.*\\]", "borderColor: " + ChabuUtils.toJSonStrings(bar.getColors().getLights()));
|
lines.append(" type: 'bar',\n");
|
||||||
result = result.replaceFirst("text: '.*'", "text: '" + bar.getTitle().replace("'", "\\\\'") + "'");
|
lines.append(" data: \n");
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" labels: ").append(ChabuUtils.toJSonStrings(bar.getLabels())).appendln(",");
|
||||||
|
lines.append(" datasets: \n");
|
||||||
|
lines.append(" [\n");
|
||||||
|
for (BarChartDataset dataset : bar.getDatasets())
|
||||||
|
{
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" label: '").append(escape(dataset.getName())).appendln("',");
|
||||||
|
lines.append(" data: ").append(ChabuUtils.toJSonNumbers(dataset.getValues())).appendln(",");
|
||||||
|
lines.append(" backgroundColor: ").append(ChabuUtils.toJSonStrings(dataset.getColors().getCodes())).appendln(",");
|
||||||
|
lines.append(" borderColor: ").append(ChabuUtils.toJSonStrings(dataset.getColors().getLights())).appendln(",");
|
||||||
|
lines.append(" borderWidth: ").append(dataset.getBorderWidth()).appendln(",");
|
||||||
|
lines.append(" }\n");
|
||||||
|
lines.append(" ]\n");
|
||||||
|
lines.append(" },\n");
|
||||||
|
}
|
||||||
|
lines.append(" options: \n");
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" maintainAspectRatio: false,\n");
|
||||||
|
lines.append(" display: true,\n");
|
||||||
|
lines.append(" responsive: true,\n");
|
||||||
|
lines.append(" legend: \n");
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" display: false,\n");
|
||||||
|
lines.append(" position: 'top',\n");
|
||||||
|
lines.append(" },\n");
|
||||||
|
lines.append(" title:\n");
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" display: true,\n");
|
||||||
|
lines.append(" text: '").append(escape(bar.getTitle())).appendln("'");
|
||||||
|
lines.append(" },\n");
|
||||||
|
lines.append(" scales: \n");
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" xAxes:\n");
|
||||||
|
lines.append(" [{\n");
|
||||||
|
lines.append(" ticks: \n");
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" beginAtZero: true\n");
|
||||||
|
lines.append(" }\n");
|
||||||
|
lines.append(" }],\n");
|
||||||
|
lines.append(" yAxes:\n");
|
||||||
|
lines.append(" [{\n");
|
||||||
|
lines.append(" ticks: \n");
|
||||||
|
lines.append(" {\n");
|
||||||
|
lines.append(" beginAtZero: true,\n");
|
||||||
|
lines.append(" suggestedMax: 10,\n");
|
||||||
|
lines.append(" precision: 0\n");
|
||||||
|
lines.append(" }\n");
|
||||||
|
lines.append(" }]\n");
|
||||||
|
lines.append(" }\n");
|
||||||
|
lines.append(" }\n");
|
||||||
|
lines.append("}");
|
||||||
|
|
||||||
|
result = result.replaceFirst("\\{[\\s\\S]*\\}", lines.toString());
|
||||||
}
|
}
|
||||||
catch (IOException exception)
|
catch (IOException exception)
|
||||||
{
|
{
|
||||||
|
@ -68,4 +123,28 @@ public class BarChartView
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape.
|
||||||
|
*
|
||||||
|
* @param input
|
||||||
|
* the input
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public static String escape(final String input)
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
if (StringUtils.isBlank(input))
|
||||||
|
{
|
||||||
|
result = "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = input.replace("'", "\\\\'");
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -552,11 +552,29 @@ public class ChabuUtils
|
||||||
* the source
|
* the source
|
||||||
* @return the string
|
* @return the string
|
||||||
*/
|
*/
|
||||||
public static String toJSonNumbers(final StringList source)
|
public static String toJSonNumbers(final double[] values)
|
||||||
{
|
{
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
result = StringsUtils.toString(source, "[", ",", "]");
|
StringList data = new StringList(values);
|
||||||
|
result = toJSonNumbers(data);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To Json numbers.
|
||||||
|
*
|
||||||
|
* @param source
|
||||||
|
* the source
|
||||||
|
* @return the string
|
||||||
|
*/
|
||||||
|
public static String toJSonNumbers(final StringList values)
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
result = StringsUtils.toString(values, "[", ",", "]");
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
|
|
Loading…
Reference in a new issue