Select Git revision
-
Robert Goldmann authoredRobert Goldmann authored
PropertiesSettingsHandler.scala 1.22 KiB
package de.tobias.playpad.server.settings
import java.io.IOException
import java.lang.reflect.Modifier
import java.nio.file.{Files, Path}
import java.util.Properties
/**
* Created by tobias on 05.02.17.
*/
class PropertiesSettingsHandler extends SettingsLoader with SettingsSaver {
@throws[IOException]
override def load(path: Path): Settings = {
val properties = new Properties()
properties.load(Files.newBufferedReader(path))
val settings = new Settings()
classOf[Settings].getDeclaredFields
.filter(f => !Modifier.isTransient(f.getModifiers))
.filter(f => properties.containsKey(f.getName))
.foreach(f => {
f.setAccessible(true)
if (f.getType == Integer.TYPE) {
f.setInt(settings, properties.getProperty(f.getName).toInt)
} else {
f.set(settings, properties.getProperty(f.getName))
}
})
settings
}
@throws[IOException]
override def save(settings: Settings, path: Path): Unit = {
val properties = new Properties()
classOf[Settings].getDeclaredFields
.filter(f => !Modifier.isTransient(f.getModifiers))
.foreach(f => {
f.setAccessible(true)
properties.setProperty(f.getName, f.get(settings).toString)
})
properties.store(Files.newOutputStream(path), "Settings")
}
}