工作需要,需了解下物联网相关知识,此处学习记录下,jetlinks的metadata部分
前言
本篇主要理解下,jetlinks的Metadata部分的代码,
一、数据类型
jetlinks元数据主要有以下类型
从图上可以看出,相关抽象类和接口主要有AbstractType,DataType,Converter,FormatSupport,Metadata
1.FormatSupport
public interface FormatSupport {
Object format(Object value);
}
对应的ArrayType实现如下
@Override
public Object format(Object value) {
if (elementType != null && value instanceof Collection) {
Collection<?> collection = ((Collection<?>) value);
return new JSONArray(collection.stream()
.map(data -> elementType.format(data))
.collect(Collectors.toList()));
}
return JSON.toJSON(value);
}
2.Metadata
public interface Metadata {
String getId();
String getName();
String getDescription();
Map<String, Object> getExpands();
default Optional<Object> getExpand(String name) {
return Optional.ofNullable(getExpands())
.map(map -> map.get(name));
}
default void setExpands(Map<String, Object> expands) {
}
default void setName(String name) {
}
default void setDescription(String description) {
}
}
3.DataType
public interface DataType extends Metadata, FormatSupport {
ValidateResult validate(Object value);
default String getType() {
return getId();
}
@Override
default Map<String, Object> getExpands() {
return null;
}
}
二、单位类型
1.主要类型
主要类型
2.UML示例图
如上:主要实现了FormatSupport Metadata 及ValueUnit接口
public interface ValueUnit extends Metadata, FormatSupport, Serializable {
String getSymbol();
@Override
default Map<String, Object> getExpands() {
return null;
}
}
总结
本文主要介绍了,jetlinks元数据部分的知识,看到就是学到,思而不学则殆,学而不思则罔。一起学起来,感谢开源大佬们的贡献。