fromJson static method

DeviceIngestionConfig? fromJson(
  1. dynamic value, [
  2. AssetsProtocolEnum? protocol
])

Returns a new DeviceIngestionConfig instance and imports its values from value if it's a Map, null otherwise.

Implementation

// ignore: prefer_constructors_over_static_methods
static DeviceIngestionConfig? fromJson(dynamic value,
    [AssetsProtocolEnum? protocol]) {
  if (value is Map) {
    final json = value.cast<String, dynamic>();

    // Ensure that the map contains the required keys.
    // Note 1: the values aren't checked for validity beyond being non-null.
    // Note 2: this code is stripped in release mode!
    assert(() {
      requiredKeys.forEach((key) {
        assert(json.containsKey(key),
            'Required key "DeviceIngestionConfig[$key]" is missing from JSON.');
        assert(json[key] != null,
            'Required key "DeviceIngestionConfig[$key]" has a null value in JSON.');
      });
      return true;
    }());

    AssetsConnection? connection;
    switch (protocol) {
      case AssetsProtocolEnum.S7:
        connection =
            json[r'connection'] == null || json[r'connection'].entries.isEmpty
                ? null
                : AssetsConnectionS7.fromJson(json[r'connection']);
        break;
      case AssetsProtocolEnum.MODBUSTCP:
        connection =
            json[r'connection'] == null || json[r'connection'].entries.isEmpty
                ? null
                : AssetsConnectionModbusTCP.fromJson(json[r'connection']);
        break;
      case AssetsProtocolEnum.MODBUSRTU:
        connection =
            json[r'connection'] == null || json[r'connection'].entries.isEmpty
                ? null
                : AssetsConnectionModbusRTU.fromJson(json[r'connection']);
        break;
      case AssetsProtocolEnum.OPCUA:
        connection =
            json[r'connection'] == null || json[r'connection'].entries.isEmpty
                ? null
                : AssetsConnectionOPCUA.fromJson(json[r'connection']);
        connection = json[r'connection'] == null
            ? null
            : AssetsConnectionS7.fromJson(json[r'connection']);

        break;
      case AssetsProtocolEnum.MODBUSTCP:
        connection =
            json[r'connection'] == null || json[r'connection'].entries.isEmpty
                ? null
                : AssetsConnectionModbusTCP.fromJson(json[r'connection']);
        break;
      case AssetsProtocolEnum.MODBUSRTU:
        connection =
            json[r'connection'] == null || json[r'connection'].entries.isEmpty
                ? null
                : AssetsConnectionModbusRTU.fromJson(json[r'connection']);
        break;
      case AssetsProtocolEnum.OPCUA:
        connection =
            json[r'connection'] == null || json[r'connection'].entries.isEmpty
                ? null
                : AssetsConnectionOPCUA.fromJson(json[r'connection']);
        break;
    }

    LogbotLogger().simple("CONNECTION: $connection");

    return DeviceIngestionConfig(
      protocol: protocol,
      connection: connection,
      staticTags: StaticTag.listFromJson(json[r'staticTags']),
    );
  }
  return null;
}