getRecommendation function

Future getRecommendation()

Implementation

Future getRecommendation() async {
  try {
    var recommendationNode =
        await Storage.controller!.get(':Global:Recommendations');

    var getChildren = await recommendationNode.getChildren();

    var recoNodeIterator = getChildren.entries.iterator;

    while (recoNodeIterator.moveNext()) {
      var recommendationTypeNode =
          await recoNodeIterator.current.value.getValue('RecommendationType');

      var recommendationType = recommendationTypeNode!.getValue('en')!;

      var relatedThreatsWeightsNode = await recoNodeIterator.current.value
          .getValue('relatedThreatsWeights');
      var lists =
          relatedThreatsWeightsNode!.getValue('en')!.split(';'); //List<String>

      for (var node in lists) {
        var relatedThreatsWeights = node.split(',');

        Node impactNormal = NodeImpl(':in', '');
        await impactNormal
            .addOrUpdateValue(NodeValueImpl('impact', relatedThreatsWeights[1]));
        await impactNormal
            .addOrUpdateValue(NodeValueImpl('recuuid', recoNodeIterator.current.key));
        var shortNode = await recoNodeIterator.current.value.getValue('short');
        await impactNormal
            .addOrUpdateValue(NodeValueImpl('short', shortNode!.getValue('en')!));

        //RecommendationType == types.Devices ? coreValues.deviceRecommendation[relatedThreatsWeights[0]]!.add(impactNormal) : coreValues.userRecommendation[relatedThreatsWeights[0]]!.add(impactNormal);

        if (recommendationType == Types.devices.toLowerCase()) {
          try {
            CoreValues.deviceRecommendation[relatedThreatsWeights[0]]!
                .add(impactNormal);
          } catch (e) {
            var temp = <Node>[];
            temp.add(impactNormal);
            CoreValues.deviceRecommendation[relatedThreatsWeights[0]] = temp;
          }
        } else {
          try {
            CoreValues.userRecommendation[relatedThreatsWeights[0]]!
                .add(impactNormal);
          } catch (e) {
            var temp = <Node>[];
            temp.add(impactNormal);
            CoreValues.userRecommendation[relatedThreatsWeights[0]] = temp;
          }
        }
      }
    }
  } on StorageException {

      print("':Global:Recommendations' doesn't exist in storage'===========");
      print("Waiting ':Global:Recommendations'===========");
//      registerListener(Listener.recoGlobal,':Global:threats');
//
//      try{
//          List<Event> e = await Listener.recoGlobal.getNumEvents(1,5);
//          print("Length of the Event ${e.length}");
//            if (e.length > 0) {
//              getRecommendation();
//            }
//          } catch(e){
//          print(e);
//      }

  } catch (e) {
    // ignore: avoid_print
    print(e);
    return;
  }
}