Esempio n. 1
0
        override public bool VisitCollection(QueryBuilderMappingParser.CollectionContext context)
        {
            if (Pass == 3)
            {
                MongoDBCollection collection = new MongoDBCollection(context.name.Text);

                List <MapRule> mapRules = new List <MapRule>();
                if (context.erRefs() != null)
                {
                    foreach (var er in context.erRefs().erRef())
                    {
                        try
                        {
                            var     erElement = EntityRelationshipModel.FindByName(er.refName.Text);
                            var     isMain    = er.main == null ? false : true;
                            MapRule mapRule   = new MapRule(erElement, collection, isMain);

                            mapRules.Add(mapRule);
                        }
                        catch (Exception)
                        {
                            Errors.Add($"Error 005: (line {er.refName.Line}:{er.refName.Column}): referenced ER element '{er.refName.Text}' not found!");
                        }
                    }
                }

                foreach (var f in context.field())
                {
                    VisitField("", f, collection, mapRules);
                }

                MongoDBSchema.Collections.Add(collection);

                foreach (var mr in mapRules)
                {
                    ERMongoMapping.Rules.Add(mr);
                }
            }
            return(true);
        }
 /// <summary>
 /// Visit a parse tree produced by <see cref="QueryBuilderMappingParser.collection"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitCollection([NotNull] QueryBuilderMappingParser.CollectionContext context)
 {
     return(VisitChildren(context));
 }
Esempio n. 3
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="QueryBuilderMappingParser.collection"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitCollection([NotNull] QueryBuilderMappingParser.CollectionContext context)
 {
 }