public GraphSemanticModelForCodeMap(PXGraphEventSemanticModel graphEventSemanticModel, PXContext context) { graphEventSemanticModel.ThrowOnNull(nameof(graphEventSemanticModel)); context.ThrowOnNull(nameof(context)); GraphModel = graphEventSemanticModel; PXOverrides = GetPXOverrides(graphEventSemanticModel.Symbol, context).ToImmutableArray(); }
private void AnalyzeGraphEventsForEventType(EventType eventType, SymbolAnalysisContext context, PXContext pxContext, PXGraphEventSemanticModel graphOrGraphExtensionWithEvents) { var graphEventsOfEventType = graphOrGraphExtensionWithEvents.GetEventsByEventType(eventType); ThrowInGraphEventsWalker?walker = null; foreach (GraphEventInfoBase graphEvent in graphEventsOfEventType) { walker ??= new ThrowInGraphEventsWalker(context, pxContext, eventType, graphOrGraphExtensionWithEvents); graphEvent.Node.Accept(walker); } }
protected virtual bool TryToInferGraphOrGraphExtensionSemanticModel(INamedTypeSymbol graphSymbol, PXContext context, out ISemanticModel graphSemanticModel, CancellationToken cancellationToken = default) { var graphSimpleModel = PXGraphEventSemanticModel.InferModels(context, graphSymbol, cancellationToken).FirstOrDefault(); if (graphSimpleModel == null || graphSimpleModel.Type == GraphType.None) { graphSemanticModel = null; return(false); } graphSemanticModel = new GraphSemanticModelForCodeMap(graphSimpleModel, context); return(true); }
void IPXGraphAnalyzer.Analyze(SymbolAnalysisContext context, PXContext pxContext, PXGraphSemanticModel graphOrGraphExtension) { context.CancellationToken.ThrowIfCancellationRequested(); PXGraphEventSemanticModel graphOrGraphExtensionWithEvents = PXGraphEventSemanticModel.EnrichGraphModelWithEvents(graphOrGraphExtension, context.CancellationToken); foreach (EventType eventType in Enum.GetValues(typeof(EventType))) { if (eventType == EventType.None) { continue; } AnalyzeGraphEventsForEventType(eventType, context, pxContext, graphOrGraphExtensionWithEvents); } }
public ThrowInGraphEventsWalker(SymbolAnalysisContext context, PXContext pxContext, EventType eventType, PXGraphEventSemanticModel graphOrGraphExtension) : base(context, pxContext, eventType) { _graphOrGraphExtension = graphOrGraphExtension; }