Example #1
0
        internal override void Visit(IVisitable visitable)
        {
            var item = visitable as EFContainer;

            if (item == null)
            {
                return;
            }

            if (item.State != EFElementState.Normalized)
            {
                return;
            }

            try
            {
                item.Resolve(_artifactSet);
            }
            catch (Exception e)
            {
                // reset element state
                item.State = EFElementState.ResolveAttempted;

                string name     = null;
                var    nameable = item as EFNameableItem;
                if (nameable != null)
                {
                    name = nameable.LocalName.Value;
                }
                else
                {
                    var element = item.XObject as XElement;
                    if (element != null)
                    {
                        name = element.Name.LocalName;
                    }
                    else
                    {
                        name = item.SemanticName;
                    }
                }
                var message   = string.Format(CultureInfo.CurrentCulture, Resources.ErrorResolvingItem, name, e.Message);
                var errorInfo = new ErrorInfo(
                    ErrorInfo.Severity.ERROR, message, item, ErrorCodes.FATAL_RESOLVE_ERROR, ErrorClass.ResolveError);
                _artifactSet.AddError(errorInfo);
            }

            if (item.State != EFElementState.Resolved)
            {
                var efElement = item as EFElement;
                if (efElement != null)
                {
                    _missedCount++;
                    if (!_missed.Contains(efElement))
                    {
                        _missed.Add(efElement);
                    }
                }
            }
        }
Example #2
0
        protected override void DoResolve(EFArtifactSet artifactSet)
        {
            base.DoResolve(artifactSet);

            // a given condition can only have mapping to a property (E-Space) or a column (S-Space)
            // but not to both
            if (Name.Status == BindingStatus.Known &&
                ColumnName.Status == BindingStatus.Known)
            {
                var errorInfo = new ErrorInfo(
                    ErrorInfo.Severity.ERROR, Resources.RESOLVE_CONDITION_BOUND_TO_PROP_AND_COLUMN, this,
                    ErrorCodes.RESOLVE_CONDITION_BOUND_TO_PROP_AND_COLUMN, ErrorClass.ResolveError);
                artifactSet.AddError(errorInfo);
            }
            else if (Name.Status == BindingStatus.Known ||
                     ColumnName.Status == BindingStatus.Known)
            {
                State = EFElementState.Resolved;
            }
        }