public override bool ValidValue(object aValue) { Check.Require(aValue != null, string.Format(CommonStrings.XMustNotBeNull, "aValue")); if (this.AnyAllowed()) { return(true); } bool IsValidValue = true; DvOrdinal aValueDvOrdinal = aValue as DvOrdinal; if (aValueDvOrdinal != null) { bool foundInList = false; foreach (DvOrdinal dvOrdinal in this.List) { if (dvOrdinal == aValueDvOrdinal) { if (string.IsNullOrEmpty(aValueDvOrdinal.Symbol.DefiningCode.CodeString) || string.IsNullOrEmpty(aValueDvOrdinal.Symbol.DefiningCode.TerminologyId.Value)) { aValueDvOrdinal.Symbol.DefiningCode.CodeString = dvOrdinal.Symbol.DefiningCode.CodeString; aValueDvOrdinal.Symbol.DefiningCode.TerminologyId = new TerminologyId(dvOrdinal.Symbol.DefiningCode.TerminologyId.Value); } foundInList = true; break; } } if (!foundInList) { IsValidValue = false; this.ValidationContext.AcceptValidationError(this, string.Format(AmValidationStrings.XNotInCDvOrdinalList, aValueDvOrdinal)); } else { if (!ValidationUtility.ValidValueTermDef(aValueDvOrdinal.Symbol, this.Parent, ValidationContext.TerminologyService)) { IsValidValue = false; this.ValidationContext.AcceptValidationError(this, string.Format( AmValidationStrings.DvOrdinalSymbolXIncorrectForCodeY, aValueDvOrdinal.Symbol.Value, aValueDvOrdinal.Symbol.DefiningCode.CodeString)); } } } else { IsValidValue = false; this.ValidationContext.AcceptValidationError(this, string.Format(AmValidationStrings.InvalidDvOrdinalX, aValue)); } return(IsValidValue); }
private void ReadXml(CDvOrdinal cDomainType) { reader.ReadStartElement(); reader.MoveToContent(); this.ReadXmlBase((CObject)cDomainType); if (reader.LocalName == "assumed_value") { DvOrdinal assumedValue = new DvOrdinal(); assumedValue.ReadXml(reader); cDomainType.AssumedValue = assumedValue; } if (reader.LocalName == "list") { System.Collections.Generic.List<DvOrdinal> ordinalList = new System.Collections.Generic.List<DvOrdinal>(); do { DvOrdinal ordinal = new DvOrdinal(); ordinal.ReadXml(reader); ordinalList.Add(ordinal); } while (reader.LocalName == "list" && reader.NodeType== XmlNodeType.Element); Check.Assert(ordinalList.Count>0, "ordinalList may not be empty."); cDomainType.List = new Set<DvOrdinal>(ordinalList); } reader.ReadEndElement(); reader.MoveToContent(); }