getImplementedRecommendations function
Prepare metric between threatWeight and recommendation parameter UUID is implemented recommendations uuid on GEIGER toolbox (UI) by user
Implementation
Future getImplementedRecommendations(var uuid) async {
try {
var recommendationNode = await Storage.controller.get(':Global:Recommendations:$uuid');
var recommendationTypeNode = await recommendationNode.getValue('RecommendationType');
var recommendationType = recommendationTypeNode!.getValue('en')!;
var relatedThreatsWeightsNode = await recommendationNode.getValue('relatedThreatsWeights');
///metricThreats for recommendation
var metricThreats = relatedThreatsWeightsNode!.getValue('en')!.split(';'); //List<String>
logger.d("indiC - getImpleReco device ${CoreValues.deviceImplementedRecommendation}");
logger.d("indiC - getImpleReco user ${CoreValues.userImplementedRecommendation}");
///loop all metricThreats in this implemented recommendation
for (var metricNode in metricThreats) {
///{'threatUUID, metric({'high', 'medium', 'low'})
///metric [0] => threatUUID
///metric [1] => metric {'high' or 'medium' or 'low'}
var metric = metricNode.split(',');
logger.d('>>>$metric');
// Node impactNormal = NodeImpl(':ireco', '');
// await impactNormal.addValue(NodeValueImpl('impact', relatedThreatsWeights[1]));
// await impactNormal.addValue(NodeValueImpl('recuuid', uuid));
// var shortNode = await recommendationNode.getValue('short');
// await impactNormal.addValue(NodeValueImpl('short', shortNode!.getValue('en')!));
// var longNode = await recommendationNode.getValue('long');
// await impactNormal.addValue(NodeValueImpl('long', longNode!.getValue('en')!));
///Convert to double metric {'high': 1.0, 'medium': 0.5, 'low': 0.1}
var impact = CoreValues.impactValues[metric[1].toLowerCase()];
logger.d('indiC ImpleRECO $impact');
logger.d('indiC ImpleRECO $recommendationType');
if (recommendationType == Types.recoTypeDevice.toLowerCase()) {
try {
//if(relatedThreatsWeights[0].isNotEmpty)
///{threatUUID : metric}
CoreValues.deviceImplementedRecommendation[metric[0]]!.add(impact!);
//logger.d('indiC ImpleRECO-device ${CoreValues.deviceImplementedRecommendation}');
//CoreValues.deviceImplementedRecommendation[relatedThreatsWeights[0]]!.add(impactNormal);
} catch (e) {
//logger.d("indiA - getReco 361 ${e.toString()}");
// var temp = <Node>[];
// temp.add(impactNormal);
//CoreValues.deviceImplementedRecommendation[relatedThreatsWeights[0]]?.add(CoreValues.impactValues[relatedThreatsWeights[1].toLowerCase()]!);
var temp = <double>[];
temp.add(impact!);
CoreValues.deviceImplementedRecommendation[metric[0]] = temp;
logger.d('indiA ImpleRECO-device ${CoreValues.deviceImplementedRecommendation}');
}
} else {
try {
//if(relatedThreatsWeights[0].isNotEmpty)
CoreValues.userImplementedRecommendation[metric[0]]!.add(impact!);
//logger.d('indiC ImpleRECO ${CoreValues.userImplementedRecommendation}');
//CoreValues.userImplementedRecommendation[relatedThreatsWeights[0]]!.add(impactNormal);
} catch (e) {
//logger.d("indiA - getReco 361 ${e.toString()}");
var temp = <double>[];
temp.add(impact!);
CoreValues.userImplementedRecommendation[metric[0]] = temp;
logger.d('indiA ImpleRECO-user ${CoreValues.userImplementedRecommendation}');
}
}
}
} catch (e) {
logger.d("indiA - getReco ${e.toString()}");
return;
}
}