def __init__(self,fil):
     self.logger = logger
     self._serverProperties = Properties()
     try:
         self._serverPropertiesFile = fil
         self._serverProperties.load(open(self._serverPropertiesFile,"rw"))
     except Exception as exception:
         self.logger.warn("Failed to load %s: %s" % (fil,exception))
         self.generateNewProperties()
class PropertyManager:

    def __init__(self,fil):
        self.logger = logger
        self._serverProperties = Properties()
        try:
            self._serverPropertiesFile = fil
            self._serverProperties.load(open(self._serverPropertiesFile,"rw"))
        except Exception as exception:
            self.logger.warn("Failed to load %s: %s" % (fil,exception))
            self.generateNewProperties()

    def generateNewProperties(self):
        self.logger.info("Generating new properties file")
        self.saveProperties()

    def saveProperties(self):
        try:
            self._serverProperties.store(open(self._serverPropertiesFile,"rw"), "Minecraft server properties")
        except Exception as ex:
            self.logger.warn("Failed to save %s: %s" % (fil,exception))
            self.generateNewProperties()            

    def getPropertiesFile(self):
        return open(self._serverPropertiesFile,"rw")

    def getStringProperty(self,key,default):
        if not self._serverProperties.containsKey(key):
            self._serverProperties.setProperty(key,default)
            self.saveProperties()

        return self._serverProperties.getProperty(key)


    def getIntProperty(self,key,default):
        if not self._serverProperties.containsKey(key):
            self._serverProperties.setProperty(key,default)
            self.saveProperties()
        try:
            val = self._serverProperties.getProperty(key)
            return int(val)
        except:
            self.logger.warn("invalid value for %s: %s" %(key,val))
            return default

    def getBooleanProperty(self,key,default):
        if not self._serverProperties.containsKey(key):
            self._serverProperties.setProperty(key,default)
            self.saveProperties()
        try:
            val = self._serverProperties.getProperty(key)
            return bool(val)
        except:
            self.logger.warn("invalid value for %s: %s" %(key,val))
            return default