|
...
|
...
|
@@ -11,6 +11,9 @@ import com.zhonglai.luhui.device.protocol.factory.analysis.ProtocolParserFactory |
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceHostDto;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.ParserDeviceInfoDto;
|
|
|
|
import com.zhonglai.luhui.device.protocol.factory.dto.ProtocolPurificationModel;
|
|
|
|
import com.zhonglai.luhui.device.protocol.xinjie.analysis.topic.PubData;
|
|
|
|
import com.zhonglai.luhui.device.protocol.xinjie.analysis.topic.WriteData;
|
|
|
|
import com.zhonglai.luhui.device.protocol.xinjie.analysis.topic.WriteReply;
|
|
|
|
import com.zhonglai.luhui.device.protocol.xinjie.dto.Variant;
|
|
|
|
import com.zhonglai.luhui.device.protocol.xinjie.dto.XinJieDto;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
...
|
...
|
@@ -20,52 +23,29 @@ import java.util.List; |
|
|
|
|
|
|
|
@Service
|
|
|
|
public class ProtocolParserServiceImpl implements ProtocolParserFactory<byte[]> {
|
|
|
|
private static final String topicModel = "/{{roleid}}/{{username}}/{{clientid}}/{{payloadtype}}/{{imei}}/{{topicType}}";
|
|
|
|
private static final String topicModel = "/{{roleid}}/{{username}}/{{password}}/{{payloadtype}}/{{clientid}}/{{topicType}}";
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Topic analysisTopic(String topicStr) {
|
|
|
|
// /13/jiulin/476210165B365166812345678Userdata/Json/476210165B365166812345678/pub_data
|
|
|
|
Topic topic = TopicUtil.initTopicFromModelStr(topicStr,topicModel);
|
|
|
|
topic.setClientid(topic.getClientid().replace("12345678",""));
|
|
|
|
return topic;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public JsonObject analysisPayload(Topic topic, byte[] payload) {
|
|
|
|
String data = new String(payload);
|
|
|
|
XinJieDto xinJieDto = GsonConstructor.get().fromJson(data, XinJieDto.class);
|
|
|
|
if(null != xinJieDto.getVariant() && xinJieDto.getVariant().size()!=0)
|
|
|
|
switch (topic.getTopicType())
|
|
|
|
{
|
|
|
|
JsonObject rj = new JsonObject();
|
|
|
|
|
|
|
|
analysisHost(rj,xinJieDto);
|
|
|
|
analysisDeviceInfo(rj,xinJieDto);
|
|
|
|
|
|
|
|
return rj;
|
|
|
|
}
|
|
|
|
return GsonConstructor.get().fromJson(data, JsonObject.class);
|
|
|
|
case "pub_data":
|
|
|
|
return new PubData().analysisPayload(topic,payload);
|
|
|
|
case "write_data":
|
|
|
|
return new WriteData().analysisPayload(topic,payload);
|
|
|
|
case "write_reply":
|
|
|
|
return new WriteReply().analysisPayload(topic,payload);
|
|
|
|
default:
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void analysisHost(JsonObject rj,XinJieDto xinJieDto)
|
|
|
|
{
|
|
|
|
Variant variant = xinJieDto.getVariant().get(0);
|
|
|
|
JsonObject data = new JsonObject();
|
|
|
|
|
|
|
|
JsonObject summary = new JsonObject();
|
|
|
|
summary.addProperty("Unix",variant.getUnix());
|
|
|
|
summary.addProperty("Version",variant.getVersion());
|
|
|
|
data.add("summary",summary);
|
|
|
|
rj.add("0",data);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void analysisDeviceInfo(JsonObject rj,XinJieDto xinJieDto )
|
|
|
|
{
|
|
|
|
Variant variant = xinJieDto.getVariant().get(0);
|
|
|
|
|
|
|
|
int i =1;
|
|
|
|
for (String key:variant.getPub_Data().keySet())
|
|
|
|
{
|
|
|
|
rj.add(ByteUtil.changerTwoStr(i+""),variant.getPub_Data().get(key).getAsJsonObject());
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|