89 lines
2.8 KiB
Java
89 lines
2.8 KiB
Java
package de.hsel.spm.baudas.web;
|
|
|
|
import com.google.gson.Gson;
|
|
import de.hsel.spm.baudas.analysis.WeekOverview;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import javax.servlet.annotation.WebServlet;
|
|
import javax.servlet.http.HttpServlet;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.IOException;
|
|
import java.io.PrintWriter;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Comparator;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* changes data from week overview into readable format for chart.js
|
|
*
|
|
* @author Johannes Theiner
|
|
* @version 0.1
|
|
* @since 0.1
|
|
**/
|
|
@WebServlet("/week_overview")
|
|
public class WeekOverviewDiagram extends HttpServlet {
|
|
|
|
/**
|
|
* do get.
|
|
*
|
|
* @param req request
|
|
* @param resp response
|
|
* @throws IOException writer could not be retrieved
|
|
*/
|
|
@Override
|
|
protected void doGet(@NotNull HttpServletRequest req, @NotNull HttpServletResponse resp) throws IOException {
|
|
req.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
|
resp.setCharacterEncoding(StandardCharsets.UTF_8.name());
|
|
resp.setContentType("application/json");
|
|
PrintWriter out = resp.getWriter();
|
|
|
|
List<String> definedOrder = Arrays.asList("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
|
|
Map<String, List<String>> result = new HashMap<>();
|
|
|
|
Gson gson = new Gson();
|
|
|
|
SavedFile file = Data.getFiles().peek();
|
|
if (file == null) {
|
|
result.put("labels", definedOrder);
|
|
result.put("count", new ArrayList<>());
|
|
result.put("revenue", new ArrayList<>());
|
|
out.print(gson.toJson(result));
|
|
return;
|
|
}
|
|
assert file.getUuid() != null;
|
|
WeekOverview overview = new WeekOverview(Data.get(file.getUuid()));
|
|
|
|
List<String> labels = new ArrayList<>();
|
|
|
|
List<String> count = new ArrayList<>();
|
|
List<String> revenue = new ArrayList<>();
|
|
|
|
for (Map.Entry<String, Map.Entry<Double, Integer>> entry : overview.getResult().entrySet()) {
|
|
labels.add(entry.getKey());
|
|
count.add(entry.getValue().getKey().toString());
|
|
revenue.add(entry.getValue().getValue().toString());
|
|
}
|
|
|
|
|
|
Comparator<String> comparator = Comparator.comparingInt(definedOrder::indexOf);
|
|
labels.sort(comparator);
|
|
|
|
for (String label : labels) {
|
|
Map.Entry<Double, Integer> entry = overview.getResult().get(label);
|
|
count.add(entry.getKey().toString());
|
|
revenue.add(entry.getValue().toString());
|
|
}
|
|
|
|
|
|
result.put("labels", labels);
|
|
result.put("count", count);
|
|
result.put("revenue", revenue);
|
|
|
|
out.print(gson.toJson(result));
|
|
}
|
|
} |