private void registDevice()

in backup-core/src/main/java/org/apache/iotdb/backup/core/pipeline/out/sink/OutTsfileDataSink.java [293:330]


  private void registDevice(
      TsFileWriter tsFileWriter,
      Schema schema,
      ConcurrentMap<String, Pair<DeviceModel, List<TimeseriesModel>>> deviceInfoMap,
      String deviceId) {
    boolean needRegist = true;
    Pair<DeviceModel, List<TimeseriesModel>> pair = deviceInfoMap.get(deviceId);
    Path path = new Path(pair.getLeft().getDeviceName());
    synchronized (schema) {
      if (schema.getRegisteredTimeseriesMap().size() == 0) {
        needRegist = true;
      } else if (!schema.containsDevice(path)) {
        needRegist = true;
      } else {
        needRegist = false;
      }
    }

    if (needRegist) {
      synchronized (tsFileWriter) {
        List<TimeseriesModel> timeseriesModelList = pair.getRight();
        List<MeasurementSchema> measurementSchemaList =
            timeseriesModelList.stream()
                .map(
                    model -> {
                      String columnName =
                          model.getName().substring(pair.getLeft().getDeviceName().length() + 1);
                      TSDataType type = model.getType();
                      MeasurementSchema measurementSchema = new MeasurementSchema(columnName, type);
                      return measurementSchema;
                    })
                .collect(Collectors.toList());

        syncRegisterTimeseries(
            tsFileWriter, path, measurementSchemaList, pair.getLeft().isAligned());
      }
    }
  }