TbVmsSymbLibDto.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.its.vms.dto;
  2. import com.its.vms.service.VmsSymbService;
  3. import com.its.vms.xnettcp.vms.protocol.enums.eVmsImageType;
  4. import lombok.Builder;
  5. import lombok.Data;
  6. import lombok.extern.slf4j.Slf4j;
  7. import javax.imageio.ImageIO;
  8. import java.awt.*;
  9. import java.io.ByteArrayInputStream;
  10. import java.io.IOException;
  11. import java.io.Serializable;
  12. import java.util.ArrayList;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. /**
  16. * DTO Class
  17. */
  18. @Slf4j
  19. @Data
  20. @Builder
  21. public class TbVmsSymbLibDto implements Serializable {
  22. private static final long serialVersionUID = 1L;
  23. private String memSymbLibNmbr;
  24. private Integer symbLibNmbr;
  25. private Integer dnldSymbLibNmbr;
  26. private String rgstDt;
  27. private byte[] redData;
  28. private byte[] greenData;
  29. private String symbExpl;
  30. private byte[] imageData;
  31. private String vmsTypeCd;
  32. private String symbImagType;
  33. private String symbFileNm;
  34. private String symbType;
  35. private byte[] aviData;
  36. private Long imagSize;
  37. private Long playTm;
  38. private String delYn;
  39. private String updtDt;
  40. private Integer posX; // 소통정보 이미지 인 경우 X
  41. private Integer posY; // 소통정보 이미지 인 경우 Y
  42. private eVmsImageType imagType;
  43. private String localFileName;
  44. private String ftpFileName;
  45. private List<String> gradSymbLibNmbrList = new ArrayList<>();
  46. private HashMap<Integer, TbVmsSymbIfscDto> cellMap = new HashMap<>();
  47. public eVmsImageType getBitmapType() {
  48. if ("BMP".equalsIgnoreCase(this.symbImagType)) {
  49. return eVmsImageType.VMS_IMAGE_TYPE_BMP;
  50. }
  51. if ("GIF".equalsIgnoreCase(this.symbImagType)) {
  52. return eVmsImageType.VMS_IMAGE_TYPE_GIF;
  53. }
  54. if ("JPG".equalsIgnoreCase(this.symbImagType)) {
  55. return eVmsImageType.VMS_IMAGE_TYPE_JPG;
  56. }
  57. if ("PNG".equalsIgnoreCase(this.symbImagType)) {
  58. return eVmsImageType.VMS_IMAGE_TYPE_PNG;
  59. }
  60. return eVmsImageType.VMS_IMAGE_TYPE_BMP;
  61. }
  62. public void setSymbInfo() {
  63. this.dnldSymbLibNmbr = VmsSymbService.getDnldSymbNmbr(this.memSymbLibNmbr);
  64. this.imagType = eVmsImageType.VMS_IMAGE_TYPE_BMP;
  65. String symbFileName = "";
  66. if ("SBT3".equals(getSymbType())) {
  67. symbFileName = this.symbFileNm;
  68. this.imagType = eVmsImageType.VMS_IMAGE_TYPE_BMP;
  69. }
  70. else {
  71. switch(getImagType()) {
  72. case VMS_IMAGE_TYPE_BMP: symbFileName = this.dnldSymbLibNmbr+".bmp"; break;
  73. case VMS_IMAGE_TYPE_GIF: symbFileName = this.dnldSymbLibNmbr+".gif"; break;
  74. case VMS_IMAGE_TYPE_JPG: symbFileName = this.dnldSymbLibNmbr+".jpg"; break;
  75. case VMS_IMAGE_TYPE_PNG: symbFileName = this.dnldSymbLibNmbr+".png"; break;
  76. default:
  77. if (this.symbFileNm == null || this.symbFileNm.trim().length() == 0) {
  78. symbFileName = this.dnldSymbLibNmbr+".avi";
  79. }
  80. else {
  81. symbFileName = this.symbFileNm.trim();
  82. }
  83. break;
  84. }
  85. }
  86. this.symbFileNm = symbFileName;
  87. this.localFileName = symbFileName;
  88. }
  89. public Image getImage() {
  90. if (this.imageData == null || this.imageData.length == 0) {
  91. log.error("TbVmsSymbLibDto.getImage: Image Data null: {}, {}", this.symbLibNmbr, this.memSymbLibNmbr);
  92. return null;
  93. }
  94. try (
  95. ByteArrayInputStream bis = new ByteArrayInputStream(this.imageData);
  96. ) {
  97. return ImageIO.read(bis);
  98. } catch (IOException e) {
  99. log.error("TbVmsSymbLibDto.getImage: IOException: {}, {}", this.symbLibNmbr, e.getMessage());
  100. }
  101. return null;
  102. }
  103. public TbVmsSymbLibDto clone(String symbLibNmbr) {
  104. TbVmsSymbLibDto obj = TbVmsSymbLibDto.builder()
  105. .memSymbLibNmbr(symbLibNmbr)
  106. .symbLibNmbr(this.symbLibNmbr)
  107. .rgstDt(this.rgstDt)
  108. .redData(this.redData)
  109. .greenData(this.greenData)
  110. .symbExpl(this.symbExpl)
  111. .imageData(this.imageData)
  112. .vmsTypeCd(this.vmsTypeCd)
  113. .symbImagType(this.symbImagType)
  114. .symbFileNm(this.symbFileNm)
  115. .symbType(this.symbType)
  116. .aviData(this.aviData)
  117. .imagSize(this.imagSize)
  118. .playTm(this.playTm)
  119. .delYn(this.delYn)
  120. .updtDt(this.updtDt)
  121. .posX(this.posX)
  122. .posY(this.posY)
  123. .imagType(this.imagType)
  124. .localFileName(this.localFileName)
  125. .ftpFileName(this.ftpFileName)
  126. .gradSymbLibNmbrList( new ArrayList<>())
  127. .cellMap(new HashMap<>())
  128. .build();
  129. obj.setSymbInfo();
  130. return obj;
  131. }
  132. }