public void OnReadFromXmlNode(IXmlCodeReader serializer, XmlNode node) { _xpathNode = node; _name = XmlSerialization.GetAttribute(node, XmlSerialization.XMLATT_NAME); _type = (ObjectRefType)XmlSerialization.GetAttributeEnum(node, XMLATT_ObjRefType, typeof(ObjectRefType)); if (_type == ObjectRefType.XPath) { if (!string.IsNullOrEmpty(_name)) { _xpathNode = XmlSerialization.GetXmlNodeByPath(node.OwnerDocument, _name); if (_xpathNode == null) { throw new MathException(string.Format("XPath with an invalid path value {0} for {1}", _name, node.OwnerDocument.DocumentElement.Name)); } } } else { _owner = (ObjectRef)XmlSerialization.ReadFromChildXmlNode(serializer, node, "Owner", new object[] { null }); _value = (Data)XmlSerialization.ReadFromChildXmlNode(serializer, node, "Value"); } }
public ResultEnumeration Analyze(oval_results results) { if (!bAnalyzed) { var refTest = results.oval_definitions.tests.Single(x => x.id == test_id); if (!refTest.HasObjectReference) { return(ResultEnumeration.unknown); } var fi = refTest.GetType().GetProperty("object"); ObjectRefType objRef = fi.GetValue(refTest, null) as ObjectRefType; var sc = results.results[0].oval_system_characteristics; var colObject = sc.collected_objects.SingleOrDefault(x => x.id == objRef.object_ref); if (colObject == null) { result = ResultEnumeration.notevaluated; } else { // Copy all Referenced Items to result if (colObject.reference != null) { foreach (var itemKey in colObject.reference) { var item = sc.system_data.Single(x => x.id == itemKey.item_ref); var newMessageType = item.message == null ? new MessageType[] { } : item.message; var newTestedItemType = new TestedItemType() { item_id = item.id, message = newMessageType.ToList(), status = item.status, result = ResultEnumeration.notevaluated }; tested_item.Add(newTestedItemType); } } // Copy all Referenced Items to result if (colObject.variable_value != null) { foreach (var varKey in colObject.variable_value) { tested_variable.Add(new TestedVariableType() { variable_id = varKey.variable_id, Value = varKey.Value }); } } switch (colObject.flag) { case SystemCharacteristics.FlagEnumeration.error: result = ResultEnumeration.error; break; case SystemCharacteristics.FlagEnumeration.notapplicable: result = ResultEnumeration.notapplicable; break; case SystemCharacteristics.FlagEnumeration.notcollected: result = ResultEnumeration.unknown; break; case SystemCharacteristics.FlagEnumeration.doesnotexist: if ((check_existence == ExistenceEnumeration.none_exist) || (check_existence == ExistenceEnumeration.any_exist)) { result = ResultEnumeration.@true; } else { result = ResultEnumeration.@false; } break; case FlagEnumeration.complete: ResultEnumeration completeResult = GetCheckExistenceResult(); if (completeResult == ResultEnumeration.@true) { if (IsThereReferenceStateForTest(refTest)) { completeResult = GetCheckStateResult(results, refTest); } } result = completeResult; break; } } bAnalyzed = true; } return(result); }