From dcd78a1cfa0c929403d51a347e43414f6aa5f0d8 Mon Sep 17 00:00:00 2001
From: panlinlin <648540858@qq.com>
Date: 星期一, 04 一月 2021 18:30:44 +0800
Subject: [PATCH] 存储部分使用sqlite代替redis-3

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java |  106 ++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 76 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index 06afc35..cab4a9b 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -10,6 +10,7 @@
 import javax.sip.message.Request;
 import javax.sip.message.Response;
 
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
@@ -47,6 +48,8 @@
 	private SIPCommander cmder;
 
 	private IVideoManagerStorager storager;
+
+	private IRedisCatchStorage redisCatchStorage;
 
 	private EventPublisher publisher;
 
@@ -184,10 +187,11 @@
 					DeviceChannel deviceChannel = new DeviceChannel();
 					deviceChannel.setName(channelName);
 					deviceChannel.setChannelId(channelDeviceId);
-					if (status.equals("ON") || status.equals("On")) {
+					// ONLINE OFFLINE  HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
+					if (status.equals("ON") || status.equals("On") || status.equals("ONLINE")) {
 						deviceChannel.setStatus(1);
 					}
-					if (status.equals("OFF") || status.equals("Off")) {
+					if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) {
 						deviceChannel.setStatus(0);
 					}
 
@@ -197,30 +201,57 @@
 					deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
 					deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
 					deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
-					deviceChannel.setParental(itemDevice.element("Parental") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
+					if (XmlUtil.getText(itemDevice, "Parental") == null || XmlUtil.getText(itemDevice, "Parental") == "") {
+						deviceChannel.setParental(0);
+					} else {
+						deviceChannel.setParental(Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
+					} 
 					deviceChannel.setParentId(XmlUtil.getText(itemDevice, "ParentID"));
-					deviceChannel.setSafetyWay(itemDevice.element("SafetyWay") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
-					deviceChannel.setRegisterWay(itemDevice.element("RegisterWay") == null ? 1
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+					if (XmlUtil.getText(itemDevice, "SafetyWay") == null || XmlUtil.getText(itemDevice, "SafetyWay")== "") {
+						deviceChannel.setSafetyWay(0);
+					} else {
+						deviceChannel.setSafetyWay(Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
+					}
+					if (XmlUtil.getText(itemDevice, "RegisterWay") == null || XmlUtil.getText(itemDevice, "RegisterWay") =="") {
+						deviceChannel.setRegisterWay(1);
+					} else {
+						deviceChannel.setRegisterWay(Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+					}
 					deviceChannel.setCertNum(XmlUtil.getText(itemDevice, "CertNum"));
-					deviceChannel.setCertifiable(itemDevice.element("Certifiable") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
-					deviceChannel.setErrCode(itemDevice.element("ErrCode") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
+					if (XmlUtil.getText(itemDevice, "Certifiable") == null || XmlUtil.getText(itemDevice, "Certifiable") == "") {
+						deviceChannel.setCertifiable(0);
+					} else {
+						deviceChannel.setCertifiable(Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
+					}
+					if (XmlUtil.getText(itemDevice, "ErrCode") == null || XmlUtil.getText(itemDevice, "ErrCode") == "") {
+						deviceChannel.setErrCode(0);
+					} else {
+						deviceChannel.setErrCode(Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
+					}
 					deviceChannel.setEndTime(XmlUtil.getText(itemDevice, "EndTime"));
 					deviceChannel.setSecrecy(XmlUtil.getText(itemDevice, "Secrecy"));
 					deviceChannel.setIpAddress(XmlUtil.getText(itemDevice, "IPAddress"));
-					deviceChannel.setPort(itemDevice.element("Port") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
+					if (XmlUtil.getText(itemDevice, "Port") == null || XmlUtil.getText(itemDevice, "Port") =="") {
+						deviceChannel.setPort(0);
+					} else {
+						deviceChannel.setPort(Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
+					}
 					deviceChannel.setPassword(XmlUtil.getText(itemDevice, "Password"));
-					deviceChannel.setLongitude(itemDevice.element("Longitude") == null ? 0.00
-							: Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
-					deviceChannel.setLatitude(itemDevice.element("Latitude") == null ? 0.00
-							: Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
-					deviceChannel.setPTZType(itemDevice.element("PTZType") == null ? 0
-							: Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
+					if (XmlUtil.getText(itemDevice, "Longitude") == null || XmlUtil.getText(itemDevice, "Longitude") == "") {
+						deviceChannel.setLongitude(0.00);
+					} else {
+						deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
+					}
+					if (XmlUtil.getText(itemDevice, "Latitude") == null || XmlUtil.getText(itemDevice, "Latitude") =="") {
+						deviceChannel.setLatitude(0.00);
+					} else {
+						deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
+					}
+					if (XmlUtil.getText(itemDevice, "PTZType") == null || XmlUtil.getText(itemDevice, "PTZType") == "") {
+						deviceChannel.setPTZType(0);
+					} else {
+						deviceChannel.setPTZType(Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
+					}
 					deviceChannel.setHasAudio(true); // 榛樿鍚湁闊抽锛屾挱鏀炬椂鍐嶆鏌ユ槸鍚︽湁闊抽鍙婃槸鍚AC
 					storager.updateChannel(device.getDeviceId(), deviceChannel);
 				}
@@ -266,7 +297,7 @@
 				device.setStreamMode("UDP");
 			}
 			storager.updateDevice(device);
-			cmder.catalogQuery(device);
+			cmder.catalogQuery(device, null);
 			// 鍥炲200 OK
 			responseAck(evt);
 			if (offLineDetector.isOnline(deviceId)) {
@@ -287,12 +318,16 @@
 		try {
 			Element rootElement = getRootElement(evt);
 			String deviceId = XmlUtil.getText(rootElement, "DeviceID");
-			// 鍥炲200 OK
-			responseAck(evt);
-			if (offLineDetector.isOnline(deviceId)) {
-				publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
-			} else {
+			// 妫�鏌ヨ澶囨槸鍚﹀瓨鍦紝 涓嶅瓨鍦ㄥ垯涓嶅洖澶�
+			if (storager.exists(deviceId)) {
+				// 鍥炲200 OK
+				responseAck(evt);
+				if (offLineDetector.isOnline(deviceId)) {
+					publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+				} else {
+				}
 			}
+
 		} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
 			e.printStackTrace();
 		}
@@ -313,7 +348,11 @@
 			String deviceId = deviceIdElement.getText().toString();
 			recordInfo.setDeviceId(deviceId);
 			recordInfo.setName(XmlUtil.getText(rootElement, "Name"));
-			recordInfo.setSumNum(Integer.parseInt(XmlUtil.getText(rootElement, "SumNum")));
+			if (XmlUtil.getText(rootElement, "SumNum")== null || XmlUtil.getText(rootElement, "SumNum") =="") {
+				recordInfo.setSumNum(0);
+			} else {
+				recordInfo.setSumNum(Integer.parseInt(XmlUtil.getText(rootElement, "SumNum")));
+			}
 			String sn = XmlUtil.getText(rootElement, "SN");
 			Element recordListElement = rootElement.element("RecordList");
 			if (recordListElement == null || recordInfo.getSumNum() == 0) {
@@ -415,10 +454,10 @@
 			String NotifyType =XmlUtil.getText(rootElement, "NotifyType");
 			if (NotifyType.equals("121")){
 				logger.info("濯掍綋鎾斁瀹屾瘯锛岄�氱煡鍏虫祦");
-				StreamInfo streamInfo = storager.queryPlaybackByDevice(deviceId, "*");
+				StreamInfo streamInfo = redisCatchStorage.queryPlaybackByDevice(deviceId, "*");
 				if (streamInfo != null) {
-					storager.stopPlayback(streamInfo);
-					cmder.streamByeCmd(streamInfo.getSsrc());
+					redisCatchStorage.stopPlayback(streamInfo);
+					cmder.streamByeCmd(streamInfo.getStreamId());
 				}
 			}
 		} catch (ParseException | SipException | InvalidArgumentException | DocumentException e) {
@@ -471,4 +510,11 @@
 		this.offLineDetector = offLineDetector;
 	}
 
+	public IRedisCatchStorage getRedisCatchStorage() {
+		return redisCatchStorage;
+	}
+
+	public void setRedisCatchStorage(IRedisCatchStorage redisCatchStorage) {
+		this.redisCatchStorage = redisCatchStorage;
+	}
 }

--
Gitblit v1.8.0