/// <summary> /// Retrieves all data necessary for the transfer of a DomainOfExpertise /// </summary> /// <param name="domain">The <see cref="DomainOfExpertise"/></param> /// <param name="siteDirectoryData">All SiteDirectory DTOs</param> /// <param name="siteDir">The <see cref="SiteDirectory"/> object</param> /// <returns>List of things contained by the particular srdl</returns> private List <Thing> RetrieveDomainOfExpertiseThings(CDP4Common.DTO.DomainOfExpertise domain, List <Thing> siteDirectoryData, CDP4Common.SiteDirectoryData.SiteDirectory siteDir) { var returned = new List <Thing>(); // wipe categories to avoide potential RDL irresolvable loop domain.Category.Clear(); returned.Add(domain); foreach (var refThing in domain.Alias.ToList()) { var thingDto = siteDirectoryData.FirstOrDefault(s => s.Iid.Equals(refThing)) as CDP4Common.DTO.Alias; if (thingDto != null) { thingDto.ExcludedPerson.Clear(); thingDto.ExcludedDomain.Clear(); returned.Add(thingDto); } else { domain.Alias.Remove(refThing); } } foreach (var refThing in domain.HyperLink.ToList()) { var thingDto = siteDirectoryData.FirstOrDefault(s => s.Iid.Equals(refThing)) as CDP4Common.DTO.HyperLink; if (thingDto != null) { thingDto.ExcludedPerson.Clear(); thingDto.ExcludedDomain.Clear(); returned.Add(thingDto); } else { domain.HyperLink.Remove(refThing); } } domain.ExcludedPerson.Clear(); domain.ExcludedDomain.Clear(); foreach (var refThing in domain.Definition.ToList()) { var thingDto = siteDirectoryData.FirstOrDefault(s => s.Iid.Equals(refThing)) as CDP4Common.DTO.Definition; if (thingDto != null) { thingDto.ExcludedDomain.Clear(); thingDto.ExcludedPerson.Clear(); // remove citation due to possible irresolvable loop of references thingDto.Citation.Clear(); returned.Add(thingDto); } else { domain.ExcludedPerson.Remove(refThing); } } return(returned); }
/// <summary> /// Instantiate and deserialize the properties of a <paramref name="DomainOfExpertise"/> /// </summary> /// <param name="jObject">The <see cref="JObject"/> containing the data</param> /// <returns>The <see cref="DomainOfExpertise"/> to instantiate</returns> public static CDP4Common.DTO.DomainOfExpertise FromJsonObject(JObject jObject) { var iid = jObject["iid"].ToObject <Guid>(); var revisionNumber = jObject["revisionNumber"].IsNullOrEmpty() ? 0 : jObject["revisionNumber"].ToObject <int>(); var domainOfExpertise = new CDP4Common.DTO.DomainOfExpertise(iid, revisionNumber); if (!jObject["alias"].IsNullOrEmpty()) { domainOfExpertise.Alias.AddRange(jObject["alias"].ToObject <IEnumerable <Guid> >()); } if (!jObject["category"].IsNullOrEmpty()) { domainOfExpertise.Category.AddRange(jObject["category"].ToObject <IEnumerable <Guid> >()); } if (!jObject["definition"].IsNullOrEmpty()) { domainOfExpertise.Definition.AddRange(jObject["definition"].ToObject <IEnumerable <Guid> >()); } if (!jObject["excludedDomain"].IsNullOrEmpty()) { domainOfExpertise.ExcludedDomain.AddRange(jObject["excludedDomain"].ToObject <IEnumerable <Guid> >()); } if (!jObject["excludedPerson"].IsNullOrEmpty()) { domainOfExpertise.ExcludedPerson.AddRange(jObject["excludedPerson"].ToObject <IEnumerable <Guid> >()); } if (!jObject["hyperLink"].IsNullOrEmpty()) { domainOfExpertise.HyperLink.AddRange(jObject["hyperLink"].ToObject <IEnumerable <Guid> >()); } if (!jObject["isDeprecated"].IsNullOrEmpty()) { domainOfExpertise.IsDeprecated = jObject["isDeprecated"].ToObject <bool>(); } if (!jObject["modifiedOn"].IsNullOrEmpty()) { domainOfExpertise.ModifiedOn = jObject["modifiedOn"].ToObject <DateTime>(); } if (!jObject["name"].IsNullOrEmpty()) { domainOfExpertise.Name = jObject["name"].ToObject <string>(); } if (!jObject["shortName"].IsNullOrEmpty()) { domainOfExpertise.ShortName = jObject["shortName"].ToObject <string>(); } if (!jObject["thingPreference"].IsNullOrEmpty()) { domainOfExpertise.ThingPreference = jObject["thingPreference"].ToObject <string>(); } return(domainOfExpertise); }