From 2e778e342afe67cd9f2e40ceec326732fa1730c1 Mon Sep 17 00:00:00 2001
From: songww <songww@inspur.com>
Date: 星期六, 09 五月 2020 08:10:52 +0800
Subject: [PATCH] Merge branch 'master' of https://github.com/swwheihei/wvp.git
---
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 156 +++++++++++++++++++++++++++++++++++++--------------
1 files changed, 113 insertions(+), 43 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 9a5551b..453420a 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
@@ -2,8 +2,10 @@
import java.io.ByteArrayInputStream;
import java.text.ParseException;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import javax.sip.InvalidArgumentException;
@@ -24,9 +26,14 @@
import com.genersoft.iot.vmp.gb28181.SipLayer;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+import com.genersoft.iot.vmp.gb28181.bean.RecordInfo;
+import com.genersoft.iot.vmp.gb28181.bean.RecordItem;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
+import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
+import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
import com.genersoft.iot.vmp.gb28181.transmit.request.ISIPRequestProcessor;
+import com.genersoft.iot.vmp.gb28181.utils.DateUtil;
import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
@@ -51,6 +58,9 @@
@Autowired
private EventPublisher publisher;
+ @Autowired
+ private DeferredResultHolder deferredResultHolder;
+
/**
* 澶勭悊MESSAGE璇锋眰
*
@@ -74,8 +84,40 @@
processMessageDeviceInfo(evt);
} else if (new String(request.getRawContent()).contains("<CmdType>Alarm</CmdType>")) {
processMessageAlarm(evt);
+ } else if (new String(request.getRawContent()).contains("<CmdType>recordInfo</CmdType>")) {
+ processMessageRecordInfo(evt);
}
+ }
+
+ /**
+ * 鏀跺埌deviceInfo璁惧淇℃伅璇锋眰 澶勭悊
+ * @param evt
+ */
+ private void processMessageDeviceInfo(RequestEvent evt) {
+ try {
+ Element rootElement = getRootElement(evt);
+ Element deviceIdElement = rootElement.element("DeviceID");
+ String deviceId = deviceIdElement.getText().toString();
+
+ Device device = storager.queryVideoDevice(deviceId);
+ if (device == null) {
+ return;
+ }
+ device.setName(XmlUtil.getText(rootElement,"DeviceName"));
+ device.setManufacturer(XmlUtil.getText(rootElement,"Manufacturer"));
+ device.setModel(XmlUtil.getText(rootElement,"Model"));
+ device.setFirmware(XmlUtil.getText(rootElement,"Firmware"));
+ storager.update(device);
+
+ RequestMessage msg = new RequestMessage();
+ msg.setDeviceId(deviceId);
+ msg.setType(DeferredResultHolder.CALLBACK_CMD_DEVICEINFO);
+ msg.setData(device);
+ deferredResultHolder.invokeResult(msg);
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ }
}
/***
@@ -84,11 +126,7 @@
*/
private void processMessageCatalogList(RequestEvent evt) {
try {
- Request request = evt.getRequest();
- SAXReader reader = new SAXReader();
- reader.setEncoding("GB2312");
- Document xml = reader.read(new ByteArrayInputStream(request.getRawContent()));
- Element rootElement = xml.getRootElement();
+ Element rootElement = getRootElement(evt);
Element deviceIdElement = rootElement.element("DeviceID");
String deviceId = deviceIdElement.getText().toString();
Element deviceListElement = rootElement.element("DeviceList");
@@ -152,36 +190,12 @@
}
// 鏇存柊
storager.update(device);
+ RequestMessage msg = new RequestMessage();
+ msg.setDeviceId(deviceId);
+ msg.setType(DeferredResultHolder.CALLBACK_CMD_CATALOG);
+ msg.setData(device);
+ deferredResultHolder.invokeResult(msg);
}
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- }
-
- /***
- * 鏀跺埌deviceInfo璁惧淇℃伅璇锋眰 澶勭悊
- * @param evt
- */
- private void processMessageDeviceInfo(RequestEvent evt) {
- try {
- Request request = evt.getRequest();
- SAXReader reader = new SAXReader();
- // reader.setEncoding("GB2312");
- Document xml = reader.read(new ByteArrayInputStream(request.getRawContent()));
- Element rootElement = xml.getRootElement();
- Element deviceIdElement = rootElement.element("DeviceID");
- String deviceId = deviceIdElement.getText().toString();
-
- Device device = storager.queryVideoDevice(deviceId);
- if (device == null) {
- return;
- }
- device.setName(XmlUtil.getText(rootElement,"DeviceName"));
- device.setManufacturer(XmlUtil.getText(rootElement,"Manufacturer"));
- device.setModel(XmlUtil.getText(rootElement,"Model"));
- device.setFirmware(XmlUtil.getText(rootElement,"Firmware"));
- storager.update(device);
- cmder.catalogQuery(device);
} catch (DocumentException e) {
e.printStackTrace();
}
@@ -193,11 +207,7 @@
*/
private void processMessageAlarm(RequestEvent evt) {
try {
- Request request = evt.getRequest();
- SAXReader reader = new SAXReader();
- // reader.setEncoding("GB2312");
- Document xml = reader.read(new ByteArrayInputStream(request.getRawContent()));
- Element rootElement = xml.getRootElement();
+ Element rootElement = getRootElement(evt);
Element deviceIdElement = rootElement.element("DeviceID");
String deviceId = deviceIdElement.getText().toString();
@@ -224,10 +234,7 @@
try {
Request request = evt.getRequest();
Response response = layer.getMessageFactory().createResponse(Response.OK,request);
- SAXReader reader = new SAXReader();
- Document xml = reader.read(new ByteArrayInputStream(request.getRawContent()));
- // reader.setEncoding("GB2312");
- Element rootElement = xml.getRootElement();
+ Element rootElement = getRootElement(evt);
Element deviceIdElement = rootElement.element("DeviceID");
transaction.sendResponse(response);
publisher.onlineEventPublish(deviceIdElement.getText(), VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
@@ -235,5 +242,68 @@
e.printStackTrace();
}
}
+
+ /***
+ * 鏀跺埌catalog璁惧鐩綍鍒楄〃璇锋眰 澶勭悊
+ * @param evt
+ */
+ private void processMessageRecordInfo(RequestEvent evt) {
+ try {
+ RecordInfo recordInfo = new RecordInfo();
+ Element rootElement = getRootElement(evt);
+ Element deviceIdElement = rootElement.element("DeviceID");
+ String deviceId = deviceIdElement.getText().toString();
+ recordInfo.setDeviceId(deviceId);
+ recordInfo.setName(XmlUtil.getText(rootElement,"Name"));
+ recordInfo.setSumNum(Integer.parseInt(XmlUtil.getText(rootElement,"SumNum")));
+ Element recordListElement = rootElement.element("RecordList");
+ if (recordListElement == null) {
+ return;
+ }
+
+ Iterator<Element> recordListIterator = recordListElement.elementIterator();
+ if (recordListIterator != null) {
+
+ List<RecordItem> recordList = new ArrayList<RecordItem>();
+ RecordItem record = new RecordItem();
+ // 閬嶅巻DeviceList
+ while (recordListIterator.hasNext()) {
+ Element itemRecord = recordListIterator.next();
+ Element recordElement = itemRecord.element("DeviceID");
+ if (recordElement == null) {
+ continue;
+ }
+ record.setDeviceId(XmlUtil.getText(itemRecord,"DeviceID"));
+ record.setName(XmlUtil.getText(itemRecord,"Name"));
+ record.setFilePath(XmlUtil.getText(itemRecord,"FilePath"));
+ record.setAddress(XmlUtil.getText(itemRecord,"Address"));
+ record.setStartTime(DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(XmlUtil.getText(itemRecord,"StartTime")));
+ record.setEndTime(DateUtil.ISO8601Toyyyy_MM_dd_HH_mm_ss(XmlUtil.getText(itemRecord,"EndTime")));
+ record.setSecrecy(itemRecord.element("Secrecy") == null? 0:Integer.parseInt(XmlUtil.getText(itemRecord,"Secrecy")));
+ record.setType(XmlUtil.getText(itemRecord,"Type"));
+ record.setRecordId(XmlUtil.getText(itemRecord,"RecordID"));
+ recordList.add(record);
+ }
+ recordInfo.setRecordList(recordList);
+ }
+
+
+ RequestMessage msg = new RequestMessage();
+ msg.setDeviceId(deviceId);
+ msg.setType(DeferredResultHolder.CALLBACK_CMD_RECORDINFO);
+ msg.setData(recordInfo);
+ deferredResultHolder.invokeResult(msg);
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private Element getRootElement(RequestEvent evt) throws DocumentException {
+ Request request = evt.getRequest();
+ SAXReader reader = new SAXReader();
+ reader.setEncoding("GB2312");
+ Document xml = reader.read(new ByteArrayInputStream(request.getRawContent()));
+ return xml.getRootElement();
+ }
}
--
Gitblit v1.8.0