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)); }
/// <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) { }