#1043: AbstractScriptDao.kt

projectforge-business/src/main/kotlin/org/projectforge/business/scripting/AbstractScriptDao.kt Abstract Script DAO, projectforge-business/src/main/kotlin/org/projectforge/business/scripting/AbstractScriptDao.kt 101 lines · 61 code · 31 comments · 9 blank
Abstract base class for script DAOs (ScriptDao and MyScriptDao). Extends BaseDao providing script execution infrastructure: script lookup by name/ID, variable resolution, effective script generation, and executor creation.

Architecture

Script Execution Pipeline

  1. loadByNameOrId(name): Resolves a script by numeric ID or name pattern (case-insensitive LIKE search).
  2. execute(script, parameters, variables, imports, logger): Entry point for script execution. Creates executor via createScriptExecutor, then calls executor.execute().
  3. createScriptExecutor(...): Factory method using ScriptExecutor.createScriptExecutor(script, scriptLogger) to instantiate the correct executor type (Groovy or Kotlin), then initializes with script, DAO, variables, parameters, and imports.

Script Introspection

getScriptVariableNames() and getEffectiveScript() create a temporary executor to inspect compiled script variables and the final script text (with auto-imports and bindings prepended), useful for debugging and IDE-like features.

Git History

868d6abb7 2025 -> 2026
63081666f Source file headers: 2024-> 2025.
aeff942b5 Script execution improved (logging for end user).
1b50060c3 BaseDao: renamed: get -> find.
87aaf6a5a Migration stuff in progress...
9d8b94352 Migration stuff in progress...
e33c8b9c2 Migration stuff in progress...
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
ea7ec2556 Security: PFUserDO.password -> UserPasswordDO.passwordHash
72ef68a28 WIP: sudo scripting and executable scripts by normal users.
aa0a497c6 WIP: sudo scripting
47aec0fc2 WIP: sudo scripting
456f86d97 WIP: sudo scripting
061f11d59 WIP: sudo scripting
bebba9753 WIP: sudo scripting
2ba9c104f WIP: scripting: download all backups and effective script.
d37760c3e Scripting refactored.
9e7810a92 WIP: Scripting #INCLUDE is now supported.
0bd431bd9 WIP scripting...
97e4bd526 Scripting: pantha rein. ACE editor added.