generatePairwiseAlternative method

  1. @override
Future<List<PairwiseAlternativeInput>> generatePairwiseAlternative(
  1. List<AhpHierarchy> nodes
)
override

GENERATE PAIRWISE ALTERNATIVE INPUTS

Implementation

/// GENERATE PAIRWISE ALTERNATIVE INPUTS
@override
Future<List<PairwiseAlternativeInput>> generatePairwiseAlternative(
  List<AhpHierarchy> nodes,
) async {
  try {
    const computeThreshold = 15;

    final hierarchyList =
        nodes.map((e) => AhpHierarchyMapper.fromEntity(e).toMap()).toList();

    if (kIsWeb) {
      final result = await generateInputPairwiseAlternative({
        "data": hierarchyList,
      });

      return result
          .map((e) => PairwiseAlternativeInputDto.fromMap(e).toEntity())
          .toList();
    } else {
      List<Map<String, dynamic>> result = [];

      if (nodes.length < computeThreshold) {
        result = await generateInputPairwiseAlternative({
          "data": hierarchyList,
        });
      } else {
        _useIsolate = true;
        result = await _isolateMain.runTask(
          DecisionAlgorithm.ahp,
          AhpProcessingCommand.generateInputPairwiseAlternative,
          {
            "data": hierarchyList,
          },
        );
      }

      return result
          .map((e) => PairwiseAlternativeInputDto.fromMap(e).toEntity())
          .toList();
    }
  } catch (e) {
    _useIsolate = false;
    rethrow;
  }
}