Exemplo n.º 1
0
        public PersonalView(IPersonalArtefactManager parentContainer, Entity entity)
        {
            if (parentContainer == null)
            {
                throw new ArgumentNullException("parentContainer", "Artefact must be instantiated with reference to its original manager instance");
            }

            Container = parentContainer;
            Entity    = entity;
        }
        /// <summary>
        /// Factory method for returning the apropriate manager instance for the specified type
        /// </summary>
        /// <param name="typeName"></param>
        /// <returns></returns>
        public IPersonalArtefactManager GetManager(string typeName)
        {
            IPersonalArtefactManager instance = null;

            switch (typeName)
            {
            case PersonalArtefactType.UserQuery:
                if (!ManagerInstances.ContainsKey(typeName))
                {
                    var viewManager = new PersonalViewManager(_pluginContext);
                    viewManager.PersonalViewsListUpdated += (object sender, EventArgs evt) =>
                    {
                        ArtefactListUpdated?.Invoke(this, new ArtefactListUpdatedEventArgs(viewManager.Views));
                    };
                    ManagerInstances.Add(typeName, viewManager);
                }
                instance = ManagerInstances[typeName];
                break;

            case "userform":
                if (!ManagerInstances.ContainsKey(typeName))
                {
                    var dashboardManager = new PersonalDashboardManager(_pluginContext);
                    dashboardManager.PersonalDashboardsListUpdated += (object sender, EventArgs evt) =>
                    {
                        ArtefactListUpdated?.Invoke(this, new ArtefactListUpdatedEventArgs(dashboardManager.Dashboards));
                    };
                    ManagerInstances.Add(typeName, dashboardManager);
                }
                instance = ManagerInstances[typeName];
                break;

            case "userqueryvisualization":
                if (!ManagerInstances.ContainsKey(typeName))
                {
                    var diagramManager = new PersonalDiagramManager(_pluginContext);
                    diagramManager.PersonalDiagramsListUpdated += (object sender, EventArgs evt) =>
                    {
                        ArtefactListUpdated?.Invoke(this, new ArtefactListUpdatedEventArgs(diagramManager.Diagrams));
                    };
                    ManagerInstances.Add(typeName, diagramManager);
                }
                instance = ManagerInstances[typeName];
                break;

            default:
                throw new UnknownArtefactTypeError(typeName, $"Unknown artefact type \"{typeName}\"");
                break;
            }

            return(instance);
        }