CtlrSttsTableModel.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.its.cctv.ui;
  2. import com.its.cctv.entity.TbCctvCtlr;
  3. import com.its.cctv.entity.TbCctvCtlrStts;
  4. import lombok.extern.slf4j.Slf4j;
  5. import javax.swing.table.AbstractTableModel;
  6. import java.util.ArrayList;
  7. import java.util.Collections;
  8. import java.util.List;
  9. @Slf4j
  10. public class CtlrSttsTableModel extends AbstractTableModel {
  11. private static final long serialVersionUID = 1331132425472559704L;
  12. private List<TbCctvCtlr> ctlrList = Collections.synchronizedList(new ArrayList<TbCctvCtlr>());
  13. private final String[] columnNames = {
  14. "#",
  15. "번호",
  16. "CCTV ID",
  17. "명칭",
  18. "IP",
  19. "PORT",
  20. "연결상태",
  21. "도어",
  22. "팬",
  23. "히터",
  24. "온도",
  25. "영상",
  26. "P / T / Z / F",
  27. "연결 시각",
  28. "연결종료 시각"
  29. };
  30. public static final String[] netStateStr = {
  31. "Close", "Login", "Connect",
  32. };
  33. public CtlrSttsTableModel(List<TbCctvCtlr> ctlrList) {
  34. this.ctlrList = ctlrList;
  35. int indexCount = 1;
  36. for (TbCctvCtlr obj : ctlrList) {
  37. obj.setIndex(indexCount++);
  38. }
  39. }
  40. @Override
  41. public int getColumnCount() {
  42. return columnNames.length;
  43. }
  44. @Override
  45. public int getRowCount() {
  46. int size = 0;
  47. synchronized (this.ctlrList) {
  48. size = this.ctlrList.size();
  49. }
  50. return size;
  51. }
  52. @Override
  53. public String getColumnName(int columnIndex) {
  54. if (columnIndex < columnNames.length) {
  55. return columnNames[columnIndex];
  56. }
  57. return super.getColumnName(columnIndex);
  58. }
  59. @Override
  60. public Class<?> getColumnClass(int columnIndex) {
  61. if (ctlrList.isEmpty()) {
  62. return Object.class;
  63. }
  64. return getValueAt(0, columnIndex).getClass();
  65. }
  66. public TbCctvCtlr getControllerInfo(int row) {
  67. TbCctvCtlr info = this.ctlrList.get(row);
  68. return info;
  69. }
  70. @Override
  71. public Object getValueAt(int rowIndex, int columnIndex) {
  72. Object returnValue = null;
  73. synchronized (this.ctlrList) {
  74. TbCctvCtlr info = this.ctlrList.get(rowIndex);
  75. if (info == null) {
  76. return "";
  77. }
  78. int netState = info.getNetState();
  79. TbCctvCtlrStts stts = info.getStts();
  80. String door = "-";
  81. String fan = "-";
  82. String heater = "-";
  83. String temper = "-";
  84. String video = "-";
  85. String sttsText = "----/----/----/----";
  86. if ("CMS0".equals(stts.getCMNC_STTS_CD())) {
  87. door = "-?-";
  88. fan = "-?-";
  89. heater = "-?-";
  90. temper = "-?-";
  91. video = "-?-";
  92. if ("CDS0".equals(stts.getCBOX_DOOR_STTS_CD())) {
  93. door = "닫힘";
  94. } else if ("CDS1".equals(stts.getCBOX_DOOR_STTS_CD())) {
  95. door = "열림";
  96. }
  97. if ("PAS0".equals(stts.getFAN_STTS_CD())) {
  98. fan = "중지";
  99. } else if ("PAS1".equals(stts.getFAN_STTS_CD())) {
  100. fan = "가동";
  101. }
  102. if ("HTS0".equals(stts.getHETR_STTS_CD())) {
  103. heater = "중지";
  104. } else if ("HTS1".equals(stts.getHETR_STTS_CD())) {
  105. heater = "가동";
  106. }
  107. if ("VDI0".equals(stts.getVIDEO_INPUT())) {
  108. video = "정상";
  109. } else if ("VDI1".equals(stts.getVIDEO_INPUT())) {
  110. video = "이상";
  111. }
  112. temper = String.valueOf(stts.getCBOX_TMPR());
  113. sttsText = String.format("%4d/%4d/%4d/%4d", stts.getPAN(), stts.getTILT(), stts.getZOOM(), stts.getFOCUS());
  114. }
  115. switch (columnIndex) {
  116. case 0:
  117. returnValue = info.getIndex();
  118. break;
  119. case 1:
  120. returnValue = info.getCCTV_CTLR_NMBR();
  121. break;
  122. case 2:
  123. returnValue = info.getCCTV_CTLR_ID();
  124. break;
  125. case 3:
  126. returnValue = info.getCCTV_NM();
  127. break;
  128. case 4:
  129. returnValue = info.getCCTV_CTLR_IP();
  130. break;
  131. case 5:
  132. returnValue = String.valueOf(info.getCCTV_CTLR_PORT());
  133. break;
  134. case 6:
  135. returnValue = netStateStr[netState];
  136. break;
  137. case 7: returnValue = door; break;
  138. case 8: returnValue = fan; break;
  139. case 9: returnValue = heater; break;
  140. case 10: returnValue = temper; break;
  141. case 11: returnValue = video; break;
  142. case 12: returnValue = sttsText; break;
  143. case 13:
  144. returnValue = info.getConnectTm();
  145. break;
  146. case 14:
  147. returnValue = info.getDisConnectTm();
  148. break;
  149. }
  150. }
  151. return returnValue;
  152. }
  153. @Override
  154. public void setValueAt(Object value, int rowIndex, int columnIndex) {
  155. synchronized (this.ctlrList) {
  156. TbCctvCtlr obj = ctlrList.get(rowIndex);
  157. if (columnIndex == 0) {
  158. obj.setIndex((int) value);
  159. }
  160. }
  161. }
  162. public void setValueAt(TbCctvCtlr obj, int rowIdx, int colIdx) {
  163. synchronized (this.ctlrList) {
  164. }
  165. fireTableCellUpdated(rowIdx, colIdx);
  166. fireTableDataChanged();
  167. }
  168. public void Add(TbCctvCtlr info) {
  169. int index = 0;
  170. synchronized (this.ctlrList) {
  171. index = this.ctlrList.size();
  172. this.ctlrList.add(info);
  173. }
  174. fireTableRowsInserted(index, index);
  175. }
  176. public void setValue(TbCctvCtlr obj, int viewRow, int modelRow) {
  177. fireTableDataChanged();
  178. }
  179. }