getRecommendation function

Future getRecommendation()

Making Map<String, List

Implementation

Future getRecommendation() async {

  const path = ':Global:Recommendations';

  try {

    ///Get all global recommendation List
    ///this is static from cloud
    var recommendationNode = await Storage.controller.get(path);
    var getChildren = await recommendationNode.getChildren();
    var recoStrList = await recommendationNode.getChildNodesCsv();
    var recoList = recoStrList.split(',');
    logger.d('reco List => $recoList');

    var recoNodeIterator = getChildren.entries.iterator;


    ///loop each recommendation Node
    while (recoNodeIterator.moveNext()) {

      var recommendationTypeNode = await recoNodeIterator.current.value.getValue('RecommendationType');
      var recommendationType = recommendationTypeNode!.getValue('en')!;
  logger.d('a$recommendationType');

  var relatedThreatsWeightsNode = await recoNodeIterator.current.value.getValue('relatedThreatsWeights');
  //logger.d('b$relatedThreatsWeightsNode');
  var metricThreats = relatedThreatsWeightsNode!.getValue('en')!.split(';'); //List<String>
  logger.d('c$metricThreats');
//      var shortNode = await recoNodeIterator.current.value.getValue('shorts');
//      logger.d('>>>$shortNode');

  for (var metricNode in metricThreats) {

  ///{'threatUUID,metricValue({'high', 'medium', 'low'})
  ///metric[0] =>  threatUUID
  ///metric[1] =>  metric {'high' or 'medium' or 'low'}
  var metric = metricNode.split(',');
  logger.d('>>>$metric');

  var metricRecoUUID = {};
  metricRecoUUID['metric'] = metric[1];
  metricRecoUUID['recoUUID'] = recoNodeIterator.current.key;

  //Node impactNormal = NodeImpl(':reco', '');
  //await impactNormal.addValue(NodeValueImpl('impact', metric[1]));
  //await impactNormal.addValue(NodeValueImpl('recuuid', recoNodeIterator.current.key));
  //await impactNormal.addValue(NodeValueImpl('short', shortNode!.getValue('en')!));
  //var longNode = await recoNodeIterator.current.value.getValue('long');
  //await impactNormal.addValue(NodeValueImpl('long', longNode!.getValue('en')!));


  if (recommendationType == Types.recoTypeDevice) {
  try {
  if(metric[0].isNotEmpty) CoreValues.deviceRecommendation[metric[0]]!.add(metricRecoUUID);
//            CoreValues.deviceRecommendation[relatedThreatsWeights[0]]!.add(impactNormal);
  } catch (e) {
  var temp = <Map>[];
  temp.add(metricRecoUUID);
  CoreValues.deviceRecommendation[metric[0]] = temp;
  }
  } else {
  try {
  if(metric[0].isNotEmpty) CoreValues.userRecommendation[metric[0]]!.add(metricRecoUUID);
  //CoreValues.userRecommendation[relatedThreatsWeights[0]]!.add(impactNormal);
  } catch (e) {
  var temp = <Map>[];
  temp.add(metricRecoUUID);
  CoreValues.userRecommendation[metric[0]] = temp;
  }
  }
  }
  }
  logger.d('userRecommendation => ${CoreValues.userRecommendation}');
  logger.d('deviceRecommendation => ${CoreValues.deviceRecommendation}');


  } on StorageException{
  logger.e('$path does not exist, please check your global data');

  }
  catch (e) {
  logger.e(e);
  }
}