Ejemplo n.º 1
0
        public void AddIncomingRelation(IClassRelation relation)
        {
            if (_incomingRelations.Any(x => x.Name == relation.Name))
            {
                throw new DesignModelException(this, $"Design model already contains relation '{relation.Name}'");
            }

            _incomingRelations.Add(relation);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Returns an attribute with the given name. Throws an exception if not found.
        /// </summary>
        /// <param name="relation"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static IClassAttribute GetAttribute(this IClassRelation relation, string name)
        {
            var attribute = relation.Attributes.FirstOrDefault(x => x.Name == name);

            if (attribute == null)
            {
                throw new ParseException(((IDesignModel)relation).ParseLocation, $"Attribute '{name}' not found in relation '{relation.Name}'");
            }

            return(attribute);
        }
Ejemplo n.º 3
0
        public virtual IClassRelation CloneRelation(IClassRelation sourceRelation, IClassModel destinationClassModel, IParseLocationInfo parseLocation)
        {
            var relation = new ClassRelation(sourceRelation.Name, parseLocation: parseLocation);

            relation.CopyPropertiesFrom(sourceRelation, parseLocation);
            relation.Destination = destinationClassModel;
            AddOutgoingRelation(relation);
            destinationClassModel.AddIncomingRelation(relation);

            return(relation);
        }
Ejemplo n.º 4
0
        public static void Resolve(this ClassAttributeReference reference, IClassRelation relation)
        {
            if (reference.Target != null)
            {
                return;
            }

            var attribute = relation.Attributes.FirstOrDefault(x => x.Name == reference.Name);

            if (attribute == null)
            {
                throw new ParseException(reference.ParseLocation, $"Attribute '{reference.Name}' not found from relation '{relation.Name}'.");
            }

            reference.Target = attribute;
        }
Ejemplo n.º 5
0
 public static ClassAttributeReference CreateRelationAttributeReference(this IClassRelation classRelation, string attributeName, IParseLocationInfo parseLocation)
 {
     return(new ClassAttributeReference(attributeName, parseLocation));
 }