예제 #1
0
 public void Visit(ReferenceFrom referenceFrom)
 {
     if (_innerVisitor != null)
     {
         referenceFrom.Accept(_innerVisitor);
     }
 }
예제 #2
0
 public void Visit(ReferenceFrom from)
 {
     Write(GetJoinType(from.Join));
     Visit(from.Name);
     WriteAlias(from.Alias);
     WriteTableHints(from.Hints);
     WriteOnClause(from.OnClause);
 }
예제 #3
0
        public BeanDefine(Document doc, XmlElement self, BeanDefine parent = null)
        {
            this.Document = doc;
            this.Parent   = parent;
            this.Self     = self;

            EnumDefines    = new ReadOnlyDictionary <string, EnumDefine>(_EnumDefines);
            BeanDefines    = new ReadOnlyDictionary <string, BeanDefine>(_BeanDefines);
            Variables      = new ReadOnlyCollection <VarDefine>(_Variables);
            ReferenceFroms = new ReadOnlyDictionary <string, ReferenceFrom>(_ReferenceFroms);

            _Name = self.GetAttribute("name");
            if (Name.Length == 0)
            {
                _Name = doc.Name;
            }
            string tmp = self.GetAttribute("Locked");

            _Locked = tmp.Length > 0 ? bool.Parse(tmp) : false;

            XmlNodeList childNodes = self.ChildNodes;

            foreach (XmlNode node in childNodes)
            {
                if (XmlNodeType.Element != node.NodeType)
                {
                    continue;
                }

                XmlElement e = (XmlElement)node;

                switch (e.Name)
                {
                case "BeanDefine":
                    var bdnew = new BeanDefine(Document, e, this);
                    _BeanDefines.Add(bdnew.Name, bdnew);
                    break;

                case "variable":
                    _Variables.Add(new VarDefine(this, e));
                    break;

                case "enum":
                    var enew = new EnumDefine(this, e);
                    _EnumDefines.Add(enew.Name, enew);
                    break;

                case "ReferenceFrom":
                    var rf = new ReferenceFrom(e);
                    _ReferenceFroms.Add($"{rf.FullName}:{rf.VarName}", rf);
                    break;

                default:
                    throw new Exception("node=" + e.Name);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Attempts to resolves this forward reference.
        /// </summary>
        /// <param name="mapModel">The map model that should now contain the relevant features.</param>
        internal override void Resolve(CadastralMapModel mapModel)
        {
            Feature f = mapModel.Find <Feature>(InternalId);

            if (f == null)
            {
                throw new ApplicationException("Cannot locate forward reference " + InternalId);
            }

            ReferenceFrom.ApplyFeatureRef(Field, f);
        }
예제 #5
0
        internal override void Resolve(CadastralMapModel mapModel)
        {
            foreach (ForwardRefArrayItem item in Items)
            {
                item.Feature = mapModel.Find <Feature>(item.InternalId);
                if (item.Feature == null)
                {
                    throw new ApplicationException("Cannot locate forward reference " + item.InternalId);
                }
            }

            ReferenceFrom.ApplyFeatureRefArray(Field, Items);
        }
예제 #6
0
 public void Visit(ReferenceFrom referenceFrom)
 {
 }