updateConfigurationByTransaction static method

Future<void> updateConfigurationByTransaction(
  1. WardenType configurationWardenType,
  2. ConfigurationNameEnum configurationNameEnum,
  3. int? ordinal,
  4. int? valueNumber,
  5. String? valueString,
  6. bool writeTr,
  7. SchemaMetaData smd,
  8. SchemaMetaData smdSys,
  9. DbTransaction transaction,
  10. ConfigurationNameDefaults defaults,
)

Implementation

static Future<void> updateConfigurationByTransaction(
    WardenType configurationWardenType,
    ConfigurationNameEnum configurationNameEnum,
    int? ordinal,
    int? valueNumber,
    String? valueString,
    bool writeTr,
    SchemaMetaData smd,
    SchemaMetaData smdSys,
    DbTransaction transaction,
    ConfigurationNameDefaults defaults) async {
  if (defaults == null)
    throw ArgumentError(AbstractTableTransactions.C_MUST_PASS_DEFAULTS);
  if (ordinal == null) ordinal = 0;
  if (!writeTr) {
    // If local & remote Wardens are the same dont update WaterLine / HC for propagation
    ConfigurationDao configurationDao =
        ConfigurationDao(smd, transaction, defaults);
    await configurationDao.init(initTable: false);
    await configurationDao.insertDefaultValues();
    ConfigurationDto configurationDto = ConfigurationDto.sep(
        null,
        0,
        configurationWardenType,
        configurationNameEnum,
        ordinal,
        valueNumber,
        valueString,
        defaults);
    try {
      await configurationDao.setConfigurationDto(configurationDto);
    } on SqlException catch (e) {
      if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND ||
          e.sqlExceptionEnum == SqlExceptionEnum.FAILED_SELECT) {
        print("$e");
        return null;
      }
    }
  } else {
    TrDto trDto = TrDto.wee(ConfigurationMixin.C_TABLE_ID);
    trDto.sep(null, OperationType.UPDATE, 0, null, "Update by Script", null,
        ConfigurationMixin.C_TABLE_ID);
    ConfigurationTrDto configurationTrDto = ConfigurationTrDto.sep(
        null,
        0,
        configurationWardenType,
        configurationNameEnum,
        ordinal,
        valueNumber,
        valueString,
        trDto,
        defaults);

    ConfigurationTransactions configurationTransactions =
        ConfigurationTransactions.sep(configurationTrDto);
    await configurationTransactions.init(WardenType.WRITE_SERVER,
        WardenType.WRITE_SERVER, smd, smdSys, transaction,
        defaults: defaults);
    AbstractWarden abstractWarden = WardenFactory.getAbstractWarden(
        WardenType.WRITE_SERVER, WardenType.WRITE_SERVER);
    await abstractWarden.init(smd, smdSys, transaction);
    abstractWarden.initialize(configurationTransactions,
        passedWaterState: WaterState.SERVER_APPROVED);
    try {
      await abstractWarden.write();
    } on SqlException catch (e) {
      if (e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND ||
          e.sqlExceptionEnum == SqlExceptionEnum.FAILED_SELECT ||
          e.sqlExceptionEnum == SqlExceptionEnum.FAILED_UPDATE ||
          e.sqlExceptionEnum == SqlExceptionEnum.PARTITION_NOT_FOUND) {
        print("WS $e");
      }
    }
  }
}