コード例 #1
0
        public Result Execute(ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
        {
            try
            {
                m_app = commandData.Application;
                m_doc = m_app.ActiveUIDocument.Document;

                UserWindow userWindow = new UserWindow();
                if ((bool)userWindow.ShowDialog())
                {
                    string projectFileId = DataStorageUtil.GetProjectFileId(m_doc).ToString();
                    if (AppCommand.Instance.Configurations.ContainsKey(projectFileId))
                    {
                        DTMConfigurations config = AppCommand.Instance.Configurations[projectFileId];

                        AdminViewModel viewModel   = new AdminViewModel(config);
                        AdminWindow    adminWindow = new AdminWindow();
                        adminWindow.DataContext = viewModel;
                        if ((bool)adminWindow.ShowDialog())
                        {
                            config = adminWindow.ViewModel.Configuration;
                            AppCommand.Instance.Configurations.Remove(projectFileId);
                            AppCommand.Instance.Configurations.Add(projectFileId, config);
                            AppCommand.Instance.ApplyConfiguration(m_doc, config);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string exMessage = ex.Message;
                MessageBox.Show("Failed to execute Admin Command.\n" + ex.Message, "Admin Command", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(Result.Succeeded);
        }
コード例 #2
0
 public AdminViewModel(DTMConfigurations config)
 {
     configuration        = config;
     updaterSwitchCommand = new RelayCommand(param => this.UpdaterSwitchExecuted(param));
     applyCommand         = new RelayCommand(param => this.ApplyExecuted(param));
     acceptCommand        = new RelayCommand(param => this.AcceptExecuted(param));
     ignoreCommand        = new RelayCommand(param => this.IgnoreExecuted(param));
 }
コード例 #3
0
        public static bool GetConfiguration(string docGuid, out DTMConfigurations config)
        {
            bool found = false;

            config = new DTMConfigurations();
            try
            {
                List <ProjectFile> projectFiles = GetProjectFiles(docGuid.ToString());
                if (projectFiles.Count > 0)
                {
                    ProjectFile projectFile = projectFiles.First();
                    config.ProjectFileInfo = projectFile;
                    string         projectId = config.ProjectFileInfo.Project_Id;
                    List <Project> projects  = GetProjects(projectId);
                    if (projects.Count > 0)
                    {
                        config.ProjectFileInfo.ProjectInfo = projects.First();
                    }

                    List <ProjectUpdater> updaters = GetProjectUpdater("projectfileid/" + projectFile._id);
                    if (updaters.Count > 0)
                    {
                        for (int i = 0; i < updaters.Count; i++)
                        {
                            ProjectUpdater         updater  = updaters[i];
                            List <CategoryTrigger> triggers = GetCategoryTriggers("updaterid/" + updater._id);
                            for (int j = 0; j < triggers.Count; j++)
                            {
                                CategoryTrigger     trigger = triggers[j];
                                List <RequestQueue> queues  = GetRequestQueues("triggerid/" + trigger._id);
                                for (int k = 0; k < queues.Count; k++)
                                {
                                    RequestQueue queue = queues[k];
                                    trigger.Requests.Add(queue);
                                }
                                updater.CategoryTriggers.Add(trigger);
                            }

                            config.ProjectUpdaters.Add(updater);
                        }
                    }
                }

                found = true;
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                MessageBox.Show("Failed to get configuration. \n" + ex.Message, "Server Util: Get Configuration", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(found);
        }
コード例 #4
0
        private void RegisterElementUpdaterOnOpen(object source, DocumentOpenedEventArgs args)
        {
            try
            {
                if (null != args.Document)
                {
                    Document          doc    = args.Document;
                    DTMConfigurations config = GetConfiguration(doc);
                    if (!configurations.ContainsKey(config.ProjectFileInfo._id))
                    {
                        configurations.Add(config.ProjectFileInfo._id, config);
                    }

                    ApplyConfiguration(doc, config);
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                MessageBox.Show("Failed to register updaters on open.\n" + ex.Message, "Register Updater on Open", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
コード例 #5
0
 public void ApplyConfiguration(Document doc, DTMConfigurations config)
 {
     try
     {
         foreach (ProjectUpdater updater in config.ProjectUpdaters)
         {
             if (updater.UpdaterId == DTMUpdater.updaterGuid.ToString())
             {
                 if (updater.IsUpdaterOn)
                 {
                     if (!UpdaterRegistry.IsUpdaterRegistered(dtmUpdater.GetUpdaterId(), doc))
                     {
                         dtmUpdater.Register(doc, updater);
                         doc.DocumentClosing += UnregisterDTMUpdaterOnClose;
                     }
                     else
                     {
                         dtmUpdater.RefreshTriggers(doc, updater);
                     }
                 }
                 else
                 {
                     if (UpdaterRegistry.IsUpdaterRegistered(dtmUpdater.GetUpdaterId(), doc))
                     {
                         dtmUpdater.Unregister(doc);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         string message = ex.Message;
         MessageBox.Show("Failed to apply configuration.\n" + ex.Message, "Apply Configuration", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
 }
コード例 #6
0
        private DTMConfigurations GetConfiguration(Document doc)
        {
            DTMConfigurations config = new DTMConfigurations();

            try
            {
                string projectFileId = DataStorageUtil.GetProjectFileId(doc).ToString();
                string centralPath   = FileInfoUtil.GetCentralFilePath(doc);
                if (projectFileId == Guid.Empty.ToString())
                {
                    //first time use
                    List <ProjectFile> items = ServerUtil.GetProjectFiles("centralpath/" + centralPath);
                    if (items.Count > 0)
                    {
                        //import file info by central path
                        ProjectFile projectFile = items.First();
                        bool        found       = ServerUtil.GetConfiguration(projectFile._id, out config);
                        projectFileId = projectFile._id;
                    }
                    else
                    {
                        //create file info
                        projectFileId = Guid.NewGuid().ToString();

                        Project        projectInfo  = FileInfoUtil.GetProjectInfo(centralPath);
                        List <Project> projects     = ServerUtil.GetProjects("");
                        var            projectFound = from p in projects where p.ProjectNumber == projectInfo.ProjectNumber && p.ProjectName == projectInfo.ProjectName select p;
                        if (projectFound.Count() > 0)
                        {
                            projectInfo = projectFound.First();
                        }
                        else
                        {
                            projectInfo._id = Guid.NewGuid().ToString();
                        }

                        ProjectFile pFile = new ProjectFile(projectFileId, centralPath, projectInfo._id, projectInfo);
                        config.ProjectFileInfo = pFile;

                        ProjectUpdater pUpdater = new ProjectUpdater(Guid.NewGuid().ToString(), DTMUpdater.updaterGuid.ToString(), dtmUpdater.GetUpdaterName(), addInGuid.ToString(), addInName, false, pFile._id);
                        foreach (string categoryName in updaterCategories)
                        {
                            CategoryTrigger catTrigger = new CategoryTrigger(Guid.NewGuid().ToString(), categoryName, pUpdater._id, false, Environment.UserName, DateTime.Now);
                            pUpdater.CategoryTriggers.Add(catTrigger);
                        }
                        config.ProjectUpdaters.Add(pUpdater);

                        string         content = "";
                        string         errMsg  = "";
                        HttpStatusCode status  = ServerUtil.PostConfiguration(out content, out errMsg, config);
                    }

                    bool stored = DataStorageUtil.StoreProjectFileId(doc, new Guid(projectFileId));
                }
                else
                {
                    bool found = ServerUtil.GetConfiguration(projectFileId, out config);
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                MessageBox.Show("Failed to get configuration.\n" + ex.Message, "Get Configuration from Database", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            return(config);
        }
コード例 #7
0
        public static HttpStatusCode UpdateConfiguration(out string content, out string errorMessage, DTMConfigurations config)
        {
            HttpStatusCode status = HttpStatusCode.Unused;

            content      = "";
            errorMessage = "";
            try
            {
                foreach (ProjectUpdater updater in config.ProjectUpdaters)
                {
                    status = UpdateProjectUpdater(out content, out errorMessage, updater, updater._id.ToString());
                    foreach (CategoryTrigger trigger in updater.CategoryTriggers)
                    {
                        status = UpdateCategoryTrigger(out content, out errorMessage, trigger, trigger._id.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                MessageBox.Show("Failed to update configuration. \n" + ex.Message, "Server Util: Update Configuration", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(status);
        }
コード例 #8
0
        public static HttpStatusCode PostConfiguration(out string content, out string errorMessage, DTMConfigurations config)
        {
            HttpStatusCode status = HttpStatusCode.Unused;

            content      = "";
            errorMessage = "";
            try
            {
                status = PostProjectFile(out content, out errorMessage, config.ProjectFileInfo);
                status = UpdateProject(out content, out errorMessage, config.ProjectFileInfo.ProjectInfo, config.ProjectFileInfo.ProjectInfo._id);
                foreach (ProjectUpdater updater in config.ProjectUpdaters)
                {
                    status = PostProjectUpdater(out content, out errorMessage, updater);
                    foreach (CategoryTrigger trigger in updater.CategoryTriggers)
                    {
                        status = PostCategoryTrigger(out content, out errorMessage, trigger);
                        foreach (RequestQueue queue in trigger.Requests)
                        {
                            status = PostRequestQueues(out content, out errorMessage, queue);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                MessageBox.Show("Failed to post configuration. \n" + ex.Message, "Server Util: Post Configuration", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            return(status);
        }