TbVmsSymbLibDto.java 5.2 KB

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