getRecommendation function
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);
}
}