- Timestamp:
- 01/26/18 15:12:14 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveProjectManagement/HeuristicLab.Services.Hive/3.3/HiveStatisticsGenerator.cs
r15641 r15659 37 37 public void GenerateStatistics() { 38 38 using (var pm = new PersistenceManager()) { 39 40 pm.UseTransaction(() => { 41 UpdateDimProjectTable(pm); 42 }); 43 39 44 pm.UseTransaction(() => { 40 45 UpdateDimUserTable(pm); 46 41 47 UpdateDimJobTable(pm); 42 48 UpdateDimClientsTable(pm); … … 53 59 pm.UseTransaction(() => { 54 60 UpdateFactClientInfoTable(time, pm); 61 UpdateFactProjectInfoTable(time, pm); // in progress 55 62 pm.SubmitChanges(); 56 63 }); … … 111 118 } 112 119 120 private void UpdateDimProjectTable(PersistenceManager pm) { 121 var projectDao = pm.ProjectDao; 122 var dimProjectDao = pm.DimProjectDao; 123 124 var projects = projectDao.GetAll().ToList(); 125 var dimProjects = dimProjectDao.GetAllOnlineProjects().ToList(); 126 127 var onlineProjects = dimProjects.Where(x => projects.Select(y => y.ProjectId).Contains(x.ProjectId)); 128 var addedProjects = projects.Where(x => !dimProjects.Select(y => y.ProjectId).Contains(x.ProjectId)); 129 var removedProjects = dimProjects.Where(x => !projects.Select(y => y.ProjectId).Contains(x.ProjectId)); 130 131 // set expiration time of removed projects 132 foreach (var p in removedProjects) { 133 p.DateExpired = DateTime.Now; 134 } 135 136 // add new projects 137 dimProjectDao.Save(addedProjects.Select(x => new DimProject { 138 ProjectId = x.ProjectId, 139 ParentProjectId = x.ParentProjectId, 140 Name = x.Name, 141 Description = x.Description, 142 OwnerUserId = x.OwnerUserId, 143 StartDate = x.StartDate, 144 EndDate = x.EndDate, 145 DateCreated = x.DateCreated, 146 DateExpired = null 147 })); 148 149 // if a project's parent has changed expire entry in DimProject and create a new entry 150 // else perform "normal" update 151 foreach (var dimP in onlineProjects) { 152 var p = projects.Where(x => x.ProjectId == dimP.ProjectId).SingleOrDefault(); 153 if (p != null) { 154 if (dimP.ParentProjectId != p.ParentProjectId) { 155 dimP.DateExpired = DateTime.Now; 156 dimProjectDao.Save(new DimProject { 157 ProjectId = p.ProjectId, 158 ParentProjectId = p.ParentProjectId, 159 Name = p.Name, 160 Description = p.Description, 161 OwnerUserId = p.OwnerUserId, 162 StartDate = p.StartDate, 163 EndDate = p.EndDate, 164 DateCreated = p.DateCreated, 165 DateExpired = null 166 }); 167 } else { 168 dimP.Name = p.Name; 169 dimP.Description = p.Description; 170 dimP.OwnerUserId = p.OwnerUserId; 171 dimP.StartDate = p.StartDate; 172 dimP.EndDate = p.EndDate; 173 } 174 } 175 } 176 } 177 113 178 private void UpdateDimJobTable(PersistenceManager pm) { 179 var dimProjectDao = pm.DimProjectDao; 114 180 var dimJobDao = pm.DimJobDao; 115 181 var jobDao = pm.JobDao; … … 123 189 JobName = x.Name ?? string.Empty, 124 190 DateCreated = x.DateCreated, 191 ProjectId = dimProjectDao.GetLastValidIdByProjectId(x.ProjectId), 125 192 TotalTasks = taskDao.GetAll().Count(y => y.JobId == x.JobId) 126 193 }) … … 132 199 UserName = GetUserName(x.UserId), 133 200 DateCreated = x.DateCreated, 201 ProjectId = x.ProjectId, 134 202 TotalTasks = x.TotalTasks, 135 203 CompletedTasks = 0, … … 139 207 140 208 private void UpdateExistingDimJobs(PersistenceManager pm) { 209 var dimProjectDao = pm.DimProjectDao; 141 210 var jobDao = pm.JobDao; 142 211 var dimJobDao = pm.DimJobDao; … … 156 225 } 157 226 } 227 var job = jobDao.GetById(dimJob.JobId); 158 228 if (totalTasks == completedTasks) { 159 229 var completeDate = factTaskDao.GetLastCompletedTaskFromJob(dimJob.JobId); 160 230 if (completeDate == null) { 161 if (job Dao.GetById(dimJob.JobId)== null) {231 if (job == null) { 162 232 completeDate = DateTime.Now; 163 233 } … … 165 235 dimJob.DateCompleted = completeDate; 166 236 } 237 if(job != null) { 238 dimJob.JobName = job.Name; 239 dimJob.ProjectId = dimProjectDao.GetLastValidIdByProjectId(job.ProjectId); 240 } 241 167 242 dimJob.TotalTasks = totalTasks; 168 243 dimJob.CompletedTasks = completedTasks; … … 178 253 } 179 254 255 // (1) for new slaves (not yet reported in Table DimClients) ... 256 // and modified slaves (name or parent resource changed) a new DimClient-entry is created 257 // (2) for already reported removed and modifid clients the expiration date is set 180 258 private void UpdateDimClientsTable(PersistenceManager pm) { 181 259 var dimClientDao = pm.DimClientDao; … … 274 352 } 275 353 354 private void UpdateFactProjectInfoTable(DimTime newTime, PersistenceManager pm) { 355 // TODO 356 } 357 276 358 private void UpdateTaskFactsTable(PersistenceManager pm) { 277 359 var factTaskDao = pm.FactTaskDao;
Note: See TracChangeset
for help on using the changeset viewer.