Exemple #1
0
        private BusyMessage <Style> MapperOnMessage(object o, MapperEventArgs args)
        {
            try
            {
                var isOnBusy = args.MessageTarget.HasFlag(StatusMessageTarget.BusyIndicator);
                var isOnPane = args.Status == MapperStatus.Started && args.MessageTarget.HasFlag(StatusMessageTarget.LogPane);

                if (args.Status != MapperStatus.Started)
                {
                    Status.HideBusy(Dispatcher, BusyIndicator);
                }
                else
                {
                    if (isOnPane)
                    {
                        if (args.Exception == null)
                        {
                            Status.Update($"[Generator] " + $"{Regex.Replace(args.Message, "^>> ", "[DONE] ")}");
                        }
                        else
                        {
                            Status.Update($"!! [Generator] ![ERROR]!\r\n{args.Exception.BuildExceptionMessage()}");
                            return(null);
                        }
                    }

                    if (isOnBusy)
                    {
                        return(Status.ShowBusy(Dispatcher, BusyIndicator, args.Message, args.Progress));
                    }
                }
            }
            catch
            {
                // ignored
            }

            return(null);
        }
Exemple #2
0
        private void MapperOnStatusUpdate(object o, MapperEventArgs args)
        {
            try
            {
                switch (args.Status)
                {
                case MapperStatus.Cancelled:
                    UnregisterMapperEvents();
                    Status.Update("[Generator] [DONE] Cancelled generator!");
                    Status.HideBusy(Dispatcher, BusyIndicator);
                    StillOpen = false;
                    Dispatcher.Invoke(Close, DispatcherPriority.Send);
                    break;

                case MapperStatus.Error:
                    UnregisterMapperEvents();
                    Status.Update("[Generator] [ERROR] Generator failed!");

                    var message = args.Exception.Message;
                    var inner   = args.Exception?.InnerException;

                    if (inner?.Message.IsFilled() == true)
                    {
                        message += $" | {inner.Message}";
                    }

                    if (args.Exception is NullReferenceException)
                    {
                        message = $"Generator failed. Clear the cache and try again.";
                    }

                    Status.PopException(Dispatcher, message);
                    Status.HideBusy(Dispatcher, BusyIndicator);
                    break;

                case MapperStatus.Finished:
                    UnregisterMapperEvents();
                    Context                               = Mapper.Context;
                    Context.SplitFiles                    = settings.SplitFiles;
                    Context.SplitContractFiles            = settings.SplitContractFiles;
                    Context.UseDisplayNames               = settings.UseDisplayNames == true;
                    Context.IsUseCustomDictionary         = settings.IsUseCustomDictionary;
                    Context.IsUseCustomEntityReference    = settings.IsUseCustomEntityReference;
                    Context.IsAddEntityAnnotations        = settings.IsAddEntityAnnotations;
                    Context.IsAddContractAnnotations      = settings.IsAddContractAnnotations;
                    Context.IsGenerateLoadPerRelation     = settings.IsGenerateLoadPerRelation;
                    Context.IsGenerateEnumNames           = settings.IsGenerateEnumNames;
                    Context.IsGenerateEnumLabels          = settings.IsGenerateEnumLabels;
                    Context.IsGenerateFieldSchemaNames    = settings.IsGenerateFieldSchemaNames;
                    Context.IsGenerateFieldLabels         = settings.IsGenerateFieldLabels;
                    Context.IsGenerateRelationNames       = settings.IsGenerateRelationNames;
                    Context.IsImplementINotifyProperty    = settings.IsImplementINotifyProperty;
                    Context.GenerateGlobalActions         = settings.GenerateGlobalActions;
                    Context.PluginMetadataEntities        = settings.PluginMetadataEntitiesSelected.ToList();
                    Context.OptionsetLabelsEntities       = settings.OptionsetLabelsEntitiesSelected.ToList();
                    Context.LookupLabelsEntities          = settings.LookupLabelsEntitiesSelected.ToList();
                    Context.JsEarlyBoundEntities          = settings.JsEarlyBoundEntitiesSelected.ToList();
                    Context.EarlyBoundFilteredSelected    = settings.EarlyBoundFilteredSelected.ToList();
                    Context.SelectedActions               = settings.SelectedActions;
                    Context.ClearMode                     = settings.ClearMode;
                    Context.SelectedEntities              = settings.EntitiesSelected.ToArray();
                    Context.IsGenerateAlternateKeys       = settings.IsGenerateAlternateKeys;
                    Context.IsUseCustomTypeForAltKeys     = settings.IsUseCustomTypeForAltKeys;
                    Context.IsMakeCrmEntitiesJsonFriendly = settings.IsMakeCrmEntitiesJsonFriendly;
                    Context.CrmEntityProfiles             = settings.CrmEntityProfiles;
                    Context.EntityProfilesHeaderSelector  = settings.EntityProfilesHeaderSelector;

                    if (settings.LockNamesOnGenerate)
                    {
                        LockNames(Context);
                    }

                    MetadataCache.Context = Context;

                    Configuration.SaveSettings(settings);

                    Status.HideBusy(Dispatcher, BusyIndicator);
                    StillOpen = false;
                    Dispatcher.Invoke(Close, DispatcherPriority.Send);
                    break;
                }
            }
            catch (Exception ex)
            {
                Status.PopException(Dispatcher, ex);
                Status.HideBusy(Dispatcher, BusyIndicator);
            }
        }