Beispiel #1
0
        private void SaveUpdates(ProjectUpdater projectUpdater)
        {
            using (var transaction = DbSession.BeginTransaction()) {
                //delete everything in the correct order (in case of dependencies)
                foreach (var prop in projectUpdater.GetRemovedProperties())
                    DbSession.Delete(prop);
                foreach (var type in projectUpdater.GetRemovedTypes())
                    DbSession.Delete(type);
                foreach (var ns in projectUpdater.GetRemovedNamespaces())
                    DbSession.Delete(ns);
                foreach (var ass in projectUpdater.GetRemovedAssemblies())
                    DbSession.Delete(ass);

                //save everything
                foreach (var ns in projectUpdater.CurrentNamespaces)
                    DbSession.Persist(ns);
                foreach (var ass in projectUpdater.CurrentAssemblies)
                    DbSession.Persist(ass);
                foreach (var type in projectUpdater.CurrentTypes)
                    DbSession.Persist(type);
                foreach (var prop in projectUpdater.CurrentProperties)
                    DbSession.Persist(prop);

                transaction.Commit();
                DbSession.Flush();
            }
        }
Beispiel #2
0
        public void UpdateProject(Project project, Action<ProjectUpdater> projectUpdaterAction)
        {
            //Create the ProjectUpdater
            var assemblies = DbSession.QueryOver<Assembly>().Where(x => x.Project == project).List<Assembly>();
            var namespaces = DbSession.QueryOver<Namespace>().Where(x => x.Project == project).List<Namespace>().Distinct();
            var types = DbSession.QueryOver<doCS.Models.Type>().JoinQueryOver<Assembly>(x => x.Assembly).Where(x => x.Project == project).List<doCS.Models.Type>();
            var properties = DbSession.QueryOver<Property>().JoinQueryOver(x => x.DeclaringType).JoinQueryOver(x => x.Assembly).Where(x => x.Project == project).List();
            ProjectUpdater projectUpdater = new ProjectUpdater(namespaces, assemblies, types, properties);

            projectUpdaterAction(projectUpdater);

            SaveUpdates(projectUpdater);
        }
Beispiel #3
0
 public ExtractorData(ProjectData projectData, Project project, ProjectUpdater projectUpdater)
 {
     ProjectData = projectData;
     Project = project;
     ProjectUpdater = projectUpdater;
 }