You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

286 lines
12 KiB

package com.inspect.tcpserver.tcp;
import com.alibaba.fastjson.JSON;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
import com.thoughtworks.xstream.security.AnyTypePermission;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DownXml2Json {
private final Logger logger = LoggerFactory.getLogger(DownXml2Json.class);
/**
* 默认为对上级的客户端的别名
*/
private String alias;
private String deviceAlias = "PatrolDevice";
private XStream getXmlStreamInstance() {
return new XStream(new Xpp3Driver(new NoNameCoder()));
}
public DownXml2Json(String alias) {
this.alias = alias;
}
public <T> String DownStreamJson2Xml(String id, String xml, Class<T> clazz) {
try {
XStream xStream = getXmlStreamInstance();
xStream.alias(alias, clazz);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
T obj = (T) xStream.fromXML(xml);
return JSON.toJSONString(obj);
} catch (com.thoughtworks.xstream.XStreamException e) {
logger.error("################ 客户: {}, UP解析失败, 异常堆栈 [PatrolHost]: {} ################", id, e.getMessage());
try {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(deviceAlias, clazz);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
T obj = (T) xStream.fromXML(xml);
return JSON.toJSONString(obj);
} catch (com.thoughtworks.xstream.XStreamException ex) {
logger.error("################ 客户: {}, DOWN解析失败[PatrolDevice] ################", id);
logger.error("################ 客户: {}, DOWN异常堆栈 ################\n{}", id, ExceptionUtils.getStackTrace(ex));
return null;
}
}
}
//任务下发
public String TaskSendControlXml2Json(String xml) {
XStream xStream = getXmlStreamInstance();
xStream.alias(alias, TaskSendControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
TaskSendControl obj = (TaskSendControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//联动任务下发
public String LinkageTaskControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, LinkageTaskControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
LinkageTaskControl obj = (LinkageTaskControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//检修去下发
public String AreaControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, AreaControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
AreaControl obj = (AreaControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//机器人控制下发
public String RobotControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, RobotControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
RobotControl obj = (RobotControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//无人机控制下发
public String UavControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, RobotControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
RobotControl obj = (RobotControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//任务控制和同步指令
public String BaseControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, BaseControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
BaseControl obj = (BaseControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//上级查询巡视结果指令
public String ResultControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, ResultControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
ResultControl obj = (ResultControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//模型同步同步指令
public String ModelControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, ModelControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
BaseControl obj = (BaseControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//巡检设备状态数据
public String PatrolDeviceStateControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, PatrolDeviceStateControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
PatrolDeviceStateControl obj = (PatrolDeviceStateControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//巡检设备运行数据
public String PatrolDeviceRunningControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, PatrolDeviceRuningControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
PatrolDeviceRuningControl obj = (PatrolDeviceRuningControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//机巢状态数据
public String NestStateControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, NestStateControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
NestStateControl obj = (NestStateControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//机巢运行数据
public String NestRunningControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, NestRuningControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
NestRuningControl obj = (NestRuningControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//坐标数据
public String LocationControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, LocationControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
LocationControl obj = (LocationControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//巡视路线
public String RouteControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, RouteControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
RouteControl obj = (RouteControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//设备告警数据
public String AlarmControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
//xStream.alias(alias, AlarmControl.class);
logger.info("[XML] AlarmControlXml2Json alias: {}", alias);
xStream.alias(alias, AlarmControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
AlarmControl obj = (AlarmControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//环境数据
public String EnvironmentControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, EnvironmentControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
EnvironmentControl obj = (EnvironmentControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//任务状态
public String TaskStateControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, TaskStateControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
TaskStateControl obj = (TaskStateControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//巡视结果
public String TaskResultControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, TaskResultControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
TaskResultControl obj = (TaskResultControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
//巡检告警数据
public String AnalysisControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, AnalysisControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
AnalysisControl obj = (AnalysisControl) xStream.fromXML(xml);
String resultJson = JSON.toJSONString(obj);
return resultJson;
}
}