addEntry static method
Future<void>
addEntry(
- int table_id,
- String? csv,
- WaterState waterState,
- SchemaMetaData smd,
- SchemaMetaData smdSys,
Implementation
static Future<void> addEntry(int table_id, String? csv, WaterState waterState,
SchemaMetaData smd, SchemaMetaData smdSys) async {
WardenType localWardenType = WardenType.WRITE_SERVER;
WardenType remoteWardenType = WardenType.WRITE_SERVER;
switch (waterState) {
case WaterState.CLIENT_STORED:
case WaterState.CLIENT_REJECTED:
case WaterState.CLIENT_APPROVED:
remoteWardenType = WardenType.ADMIN;
break;
case WaterState.SERVER_PENDING:
remoteWardenType = WardenType.USER;
break;
case WaterState.SERVER_APPROVED:
case WaterState.SERVER_REJECTED:
break;
default:
throw ArgumentError("Invalid WaterState " + waterState.toString());
}
List<List<dynamic>> csvList = const CsvToListConverter().convert(csv,
fieldDelimiter: '|',
textDelimiter: "'",
textEndDelimiter: "'",
eol: '\n');
TableMetaData tmd = smd.getTableByTableId(table_id);
int offset = 0;
FieldData fieldData = FieldData.wee(table_id);
csvList.forEach((List<dynamic> list) {
list.forEach((dynamic element) {
FieldMetaData fmd = tmd.getFieldByIndex(offset + 1);
fieldData.set(fmd.fieldName, element);
offset++;
});
});
DbTransaction mysqlTransaction =
await DataBaseHelper.getDbTransaction(C_DATABASE_NAME);
try {
TrDto trDto = TrDto.sep(null, OperationType.INSERT, 0, null,
'Command Line Insert', null, table_id,
fieldData: fieldData);
TableTransactions tableTransactions = TableTransactions.sep(trDto);
await tableTransactions.init(
localWardenType, remoteWardenType, smd, smdSys, mysqlTransaction);
AbstractWarden warden =
WardenFactory.getAbstractWarden(localWardenType, remoteWardenType);
await warden.init(smd, smdSys, mysqlTransaction);
warden.initialize(tableTransactions, passedWaterState: waterState);
RemoteDto? remoteDto = null;
try {
remoteDto = await warden.write();
} on SqlException catch (e) {
if (e.sqlExceptionEnum == SqlExceptionEnum.PARTITION_NOT_FOUND ||
e.sqlExceptionEnum == SqlExceptionEnum.FAILED_UPDATE ||
e.sqlExceptionEnum == SqlExceptionEnum.ENTRY_NOT_FOUND ||
e.sqlExceptionEnum == SqlExceptionEnum.FAILED_SELECT) {
print("$e");
}
}
} finally {
await mysqlTransaction.connection.close();
await mysqlTransaction.endTransaction();
await mysqlTransaction.closePool();
}
}