validateDiagram method

Future<void> validateDiagram({
  1. RegulatoryStandard? standard,
})

Triggers calculation and validation

Implementation

Future<void> validateDiagram({RegulatoryStandard? standard}) async {
  final root = state.root;
  if (root == null) {
    emit(state.copyWith(
        status: DiagramStatus.error, errorMessage: "No root defined"));
    return;
  }

  emit(state.copyWith(status: DiagramStatus.calculating));

  try {
    // 1. Calculate Engine
    final calcResult = await _calculateDiagramUseCase(
      params: CalculateDiagramParams(root),
    );

    final calculatedRoot = calcResult.root;

    // 2. Standard Validation
    if (standard != null) {
      await _validateDiagramUseCase(
        params: ValidateDiagramParams(calculatedRoot, standard),
      );
      // Map ValidationResult to Error/Warning in state if needed
    }

    emit(state.copyWith(
      status: DiagramStatus.validated,
      root: calculatedRoot,
      validationErrors: calcResult.errors,
    ));
  } catch (e) {
    emit(state.copyWith(
        status: DiagramStatus.error, errorMessage: "Calculation Failed: $e"));
  }
}