generateSawMatrix method

  1. @override
Future<List<SawMatrix>> generateSawMatrix({
  1. required List<SawAlternative> listAlternative,
  2. required List<SawCriteria> listCriteria,
})
override

MATRIX GENERATE SAW MATRIX

Implementation

@override
Future<List<SawMatrix>> generateSawMatrix({
  required List<SawAlternative> listAlternative,
  required List<SawCriteria> listCriteria,
}) async {
  startPerformanceProfiling('Generate SAW pairwise matrix');
  try {
    _validateInputs(listAlternative, listCriteria);

    final normalizedCriteria = _normalizeCriteriaWeights(listCriteria);
    final updateAlternative = _ensureIdsForAlternatives(listAlternative);
    final updateCriteria = _ensureIdsForCriteria(normalizedCriteria);

    List<SawMatrix> result = [];
    final canUseIsolate = !kIsWeb &&
        (updateAlternative.length > 80 || updateCriteria.length > 25);

    if (canUseIsolate) {
      result = await _generateMatrixWithIsolate(
        updateAlternative,
        updateCriteria,
      );
    } else {
      result = _generateMatrixDirectly(updateAlternative, updateCriteria);
    }

    return result;
  } catch (e, s) {
    debugPrint('SAW Matrix Error: $e\n$s');
    rethrow;
  } finally {
    endPerformanceProfiling('Generate SAW pairwise matrix');
  }
}