SystemSanityCheckJob.ktКлассы: SystemSanityCheckJob
Супертип(ы): AbstractJob
Функции (2): executeJob, asString
Свойства (7): taskDao, tasks, taskMap, rootTask, abandonedTasks, ancestor, rootTaskFound
Импорты: 5 пакетов
Пакет: org.projectforge.business.jobs
package org.projectforge.business.jobs
import org.projectforge.business.task.TaskDO
import org.projectforge.business.task.TaskDao
import org.projectforge.business.task.TaskNode
import org.projectforge.jobs.AbstractJob
import org.projectforge.jobs.JobExecutionContext
class SystemSanityCheckJob(val taskDao: TaskDao) : AbstractJob("Проверка целостности системы") {
override fun executeJob() {
jobExecutionContext.addMessage("Целостность задач (заброшенные задачи)")
val tasks: List<TaskDO> = taskDao.selectAll(false)
jobExecutionContext.addMessage("Найдено ${tasks.size} задач(и).")
val taskMap: MutableMap<Long?, TaskDO> = HashMap()
for (task in tasks) {
taskMap[task.id] = task
}
var rootTask = false
var abandonedTasks = false
for (task in tasks) {
if (task.parentTask == null) {
if (rootTask) {
jobExecutionContext.addError("Найдена ещё одна корневая задача: ${asString(task)}")
} else {
jobExecutionContext.addMessage("Найдена корневая задача: ${asString(task)}")
rootTask = true
}
} else {
var ancestor = taskMap[task.parentTaskId]
var rootTaskFound = false
for (i in 0..49) { // Макс. глубина 50, иначе циклическая задача!
if (ancestor == null) {
break
}
if (ancestor.parentTaskId == null) {
// Корневая задача найдена, OK.
rootTaskFound = true
break
}
ancestor = taskMap[ancestor.parentTaskId]
}
if (!rootTaskFound) {
jobExecutionContext.addError("Найдена заброшенная задача (циклические задачи без пути к корню): ${asString(task)}")
abandonedTasks = true
}
}
taskMap[task.id] = task
}
if (!abandonedTasks) {
jobExecutionContext.addMessage("Тест пройден, заброшенных задач не обнаружено.")
} else {
jobExecutionContext.addError("Тест НЕ ПРОЙДЕН, обнаружены заброшенные задачи.")
}
}
private fun asString(task: TaskDO): String {
return "TaskNode[id=[${task.id}], created=[${task.created}] title=[${task.title}]]"
}
}
868d6abb7 2025 -> 2026 034eebd5d Обработка HTML и заданий. 63081666f Заголовки исходных файлов: 2024 -> 2025. 619985f48 Релиз 8.1 snapshot (#247)