ItsRotaServerController.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.its.rota.server.controller;
  2. import com.its.rota.server.dto.CenterDto;
  3. import com.its.rota.server.dto.NET;
  4. import com.its.rota.server.repository.ApplicationRepository;
  5. import lombok.RequiredArgsConstructor;
  6. import org.springframework.web.bind.annotation.GetMapping;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import java.util.ArrayList;
  10. import java.util.Collections;
  11. import java.util.List;
  12. @RestController
  13. @RequiredArgsConstructor
  14. @RequestMapping("/info")
  15. public class ItsRotaServerController {
  16. private final ApplicationRepository repo;
  17. @GetMapping(value = "", produces = {"application/json; charset=utf8"})
  18. public String info() {
  19. String sep = System.getProperty("line.separator");
  20. String heading = "---------------------------------------------------------------------------------------------------------";
  21. CenterDto center = ApplicationRepository.center;
  22. StringBuilder sb = new StringBuilder();
  23. sb.append(heading + sep);
  24. sb.append("ITS Rota Server Running Information" + sep);
  25. sb.append(heading + sep);
  26. sb.append(String.format("%s, %s:%d, Traffic Time: %s",
  27. center.getCenterId(), center.getIpAddress(), center.getCommPort(), ApplicationRepository.checkTrafficTime) + sep);
  28. sb.append(heading + sep);
  29. sb.append(String.format("%s %-15.15s %-8.8s %-20.20s %-20.20s %-20.20s %7s %s",
  30. "---", "IP Address", "Network",
  31. "Connect Time", "Disconnect Time",
  32. "Last Send Time", "Count", "Center Name") + sep);
  33. sb.append(heading + sep);
  34. int total = 0;
  35. int onLine = 0;
  36. List<String> keySet = new ArrayList<>(this.repo.getCenterMap().keySet());
  37. Collections.sort(keySet);
  38. for (String key : keySet) {
  39. CenterDto region = this.repo.getCenterMap().get(key);
  40. if (region == null) {
  41. continue;
  42. }
  43. total++;
  44. String commStatus = "Closed";
  45. if (region.getNetState().getState() != NET.CLOSED) {
  46. commStatus = "Connect";
  47. onLine++;
  48. }
  49. sb.append(String.format("%s %-15.15s %-8.8s %-20.20s %-20.20s %-20.20s %7d %s",
  50. region.getCenterId(), region.getIpAddress(), commStatus,
  51. region.getNetState().getConnectTimeString(), region.getNetState().getDisconnectTimeString(),
  52. region.getTraffic().getLastSendTime(), region.getTraffic().getTotalSends(),
  53. region.getCenterInfo()) + sep);
  54. }
  55. sb.append(heading + sep);
  56. sb.append(String.format("Total : %d, OnLine(Connect): %d", total, onLine) + sep);
  57. sb.append(heading + sep);
  58. return sb.toString();
  59. }
  60. }