All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.testerum.web_backend.services.settings.SettingsFrontendService.kt Maven / Gradle / Ivy

package com.testerum.web_backend.services.settings

import com.testerum_api.testerum_steps_api.test_context.settings.model.Setting
import com.testerum.file_service.file.SettingsFileService
import com.testerum.settings.SettingsManager
import com.testerum.settings.getNonDefaultSettings
import com.testerum.web_backend.services.dirs.FrontendDirs
import com.testerum.web_backend.services.initializers.caches.CachesInitializer

class SettingsFrontendService(private val frontendDirs: FrontendDirs,
                              private val settingsManager: SettingsManager,
                              private val settingsFileService: SettingsFileService,
                              private val cachesInitializer: CachesInitializer) {

    fun getSettings(): List = settingsManager.getSettings()

    fun saveSettings(settingValues: Map): List {
        settingsManager.modify {
            setValues(settingValues)
        }

        saveSettingsToFile()
        cachesInitializer.initialize()

        return settingsManager.getSettings()
    }

    private fun saveSettingsToFile() {
        val settingsToSave = getSettingsToSave()
        val settingsDir = frontendDirs.getSettingsDir()

        settingsFileService.saveSettings(settingsToSave, settingsDir)
    }

    private fun getSettingsToSave(): Map {
        val result = mutableMapOf()

        for (setting in settingsManager.getNonDefaultSettings()) {
            result[setting.definition.key] = setting.unresolvedValue
        }

        return result
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy