public IPropertyValues GetPropertyValues(IEvidence evdnc) { Device deviceFound = null; Browser browserFound = null; OSModel.OperatingSystem osFound = null; bool deviceIdentified = false; bool browserIdentified = false; bool osIdentified = false; UserAgent deviceUA = null; UserAgent browserUA = null; ODDRPropertyValues ret = new ODDRPropertyValues(); Dictionary<String, Vocabulary> vocabularies = vocabularyHolder.GetVocabularies(); foreach (String vocabularyKey in vocabularies.Keys) { Vocabulary vocabulary = vocabularies[vocabularyKey]; Dictionary<String, VocabularyProperty> properties = vocabulary.properties; foreach (String propertyKey in properties.Keys) { IPropertyName propertyName = new ODDRPropertyName(propertyKey, vocabularyKey); VocabularyProperty vocabularyProperty = properties[propertyKey]; string[] aspects = vocabularyProperty.aspects; for (int i = 0; i < aspects.Length; i++) { IPropertyRef propertyRef = new ODDRPropertyRef(propertyName, aspects[i]); if (ASPECT_DEVICE.Equals(propertyRef.AspectName())) { if (!deviceIdentified) { if (deviceUA == null) { deviceUA = UserAgentFactory.newDeviceUserAgent(evdnc); } if (evdnc is BufferedODDRHTTPEvidence) { deviceFound = ((BufferedODDRHTTPEvidence)evdnc).deviceFound; } if (deviceFound == null) { deviceFound = deviceIdentificator.Get(deviceUA, this.threshold) as Device; } if (evdnc is BufferedODDRHTTPEvidence) { ((BufferedODDRHTTPEvidence)evdnc).deviceFound = deviceFound; } deviceIdentified = true; } String property = null; if (deviceFound != null) { property = deviceFound.Get(propertyRef.LocalPropertyName()); ret.addProperty(new ODDRPropertyValue(property, vocabularyProperty.type, propertyRef)); } else { ret.addProperty(new ODDRPropertyValue(null, vocabularyProperty.type, propertyRef)); } continue; } else if (ASPECT_WEB_BROWSER.Equals(propertyRef.AspectName())) { if (!browserIdentified) { if (browserUA == null) { browserUA = UserAgentFactory.newBrowserUserAgent(evdnc); } if (evdnc is BufferedODDRHTTPEvidence) { browserFound = ((BufferedODDRHTTPEvidence)evdnc).browserFound; } if (browserFound == null) { browserFound = browserIdentificator.Get(browserUA, this.threshold) as Browser; } if (evdnc is BufferedODDRHTTPEvidence) { ((BufferedODDRHTTPEvidence)evdnc).browserFound = browserFound; } browserIdentified = true; } String property = null; if (browserFound != null) { property = browserFound.Get(propertyRef.LocalPropertyName()); ret.addProperty(new ODDRPropertyValue(property, vocabularyProperty.type, propertyRef)); } else { ret.addProperty(new ODDRPropertyValue(null, vocabularyProperty.type, propertyRef)); } continue; } else if (ASPECT_OPERATIVE_SYSTEM.Equals(propertyRef.AspectName())) { if (!osIdentified) { if (deviceUA == null) { deviceUA = UserAgentFactory.newDeviceUserAgent(evdnc); } if (evdnc is BufferedODDRHTTPEvidence) { osFound = ((BufferedODDRHTTPEvidence)evdnc).osFound; } if (osFound == null) { osFound = osIdentificator.Get(deviceUA, this.threshold) as OSModel.OperatingSystem; } if (evdnc is BufferedODDRHTTPEvidence) { ((BufferedODDRHTTPEvidence)evdnc).osFound = osFound; } osIdentified = true; } String property = null; if (osFound != null) { property = osFound.Get(propertyRef.LocalPropertyName()); ret.addProperty(new ODDRPropertyValue(property, vocabularyProperty.type, propertyRef)); } else { ret.addProperty(new ODDRPropertyValue(null, vocabularyProperty.type, propertyRef)); } continue; } } } } return ret; }
public IPropertyRef[] ListPropertyRefs() { List<IPropertyRef> propertyRefsList = new List<IPropertyRef>(); Dictionary<String, Vocabulary> vocabularies = vocabularyHolder.GetVocabularies(); foreach (String vocabularyKey in vocabularies.Keys) { Vocabulary vocabulary = vocabularies[vocabularyKey]; Dictionary<String, VocabularyProperty> properties = vocabulary.properties; foreach (String propertyKey in properties.Keys) { VocabularyProperty vocabularyProperty = properties[propertyKey]; string[] aspects = vocabularyProperty.aspects; IPropertyName propertyName = new ODDRPropertyName(propertyKey, vocabularyKey); for (int i = 0; i < aspects.Length; i++) { IPropertyRef propertyRef = new ODDRPropertyRef(propertyName, aspects[i]); propertyRefsList.Add(propertyRef); } } } IPropertyRef[] propertyRefs = new IPropertyRef[propertyRefsList.Count]; propertyRefs = propertyRefsList.ToArray(); return propertyRefs; }
/// <exception cref="W3c.Ddr.Exceptions.NameException">Thrown when...</exception> public IPropertyValues GetPropertyValues(IEvidence evdnc, string localAspectName, string vocabularyIRI) { VocabularyProperty vocabularyProperty = vocabularyHolder.ExistProperty(localAspectName, null, vocabularyIRI, true); IPropertyName propertyName = new ODDRPropertyName(localAspectName, vocabularyIRI); IPropertyRef propertyRef = new ODDRPropertyRef(propertyName, vocabularyProperty.defaultAspect); return GetPropertyValues(evdnc, new IPropertyRef[] { propertyRef }); }