Skip to content
Snippets Groups Projects
Select Git revision
  • 2ca197b0e7893b6bbaf39db5a2547aeffab6a048
  • master default
  • v1.34.0
  • v1.33.0
  • v1.32.1
  • v1.32.0
  • v1.31.2
  • v1.31.1
  • v1.31.0
  • v1.30.0
  • v1.29.0
  • v1.28.0
  • v1.27.0
  • v1.26.0
  • v1.25.0
  • v1.24.0
  • v1.23.1
  • v1.23.0
  • v1.22.0
  • v1.20.0
  • v1.19.1
  • v1.19.0
22 results

Pipfile

Blame
  • 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")
    	}
    }