Skip to content

Commit 3a69f32

Browse files
committed
HomeSettingsConfiguration implemented.
Signed-off-by: Pavel Erokhin (MairwunNx) <MairwunNx@gmail.com>
1 parent bfa8dc9 commit 3a69f32

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.mairwunnx.projectessentials.home.configurations
2+
3+
import com.mairwunnx.projectessentials.core.api.v1.configuration.IConfiguration
4+
import com.mairwunnx.projectessentials.core.api.v1.helpers.jsonInstance
5+
import com.mairwunnx.projectessentials.core.api.v1.helpers.projectConfigDirectory
6+
import org.apache.logging.log4j.LogManager
7+
import java.io.File
8+
import java.io.FileNotFoundException
9+
10+
object HomeSettingsConfiguration : IConfiguration<HomeSettingsConfigurationModel> {
11+
private val logger = LogManager.getLogger()
12+
private var configurationData = HomeSettingsConfigurationModel()
13+
14+
override val name = "home-settings"
15+
override val version = 1
16+
override val configuration = take()
17+
override val path = projectConfigDirectory + File.separator + "home-settings.json"
18+
19+
override fun load() {
20+
try {
21+
val configRaw = File(path).readText()
22+
configurationData = jsonInstance.parse(
23+
HomeSettingsConfigurationModel.serializer(), configRaw
24+
)
25+
} catch (ex: FileNotFoundException) {
26+
logger.error("Configuration file ($path) not found!")
27+
logger.warn("The default configuration will be used")
28+
}
29+
}
30+
31+
override fun save() {
32+
File(path).parentFile.mkdirs()
33+
34+
logger.info("Saving configuration `${name}`")
35+
val raw = jsonInstance.stringify(
36+
HomeSettingsConfigurationModel.serializer(), configuration
37+
)
38+
try {
39+
File(path).writeText(raw)
40+
} catch (ex: SecurityException) {
41+
logger.error("An error occurred while saving $name configuration", ex)
42+
}
43+
}
44+
45+
override fun take() = configurationData
46+
}

0 commit comments

Comments
 (0)