diff options
author | Saleem Abdulrasool <compnerd@gentoo.org> | 2005-04-22 04:09:43 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@gentoo.org> | 2005-04-22 04:09:43 +0000 |
commit | f5f138c37c9a8eb1bb54beed0ca01229769b99e5 (patch) | |
tree | c8e30e3d77c2cc803964ef5bc58e2c96b90eeacc | |
parent | Preferences Management Code --- Tree is broken (diff) | |
download | java-config-f5f138c37c9a8eb1bb54beed0ca01229769b99e5.tar.gz java-config-f5f138c37c9a8eb1bb54beed0ca01229769b99e5.tar.bz2 java-config-f5f138c37c9a8eb1bb54beed0ca01229769b99e5.zip |
Updates to Preference Manager -- this may be all that is needed for the time being for 1.5 unmasking
svn path=/java-config-ng/trunk/; revision=144
-rw-r--r-- | PreferenceManager.py | 74 | ||||
-rw-r--r-- | PrefsFileParser.py | 2 |
2 files changed, 50 insertions, 26 deletions
diff --git a/PreferenceManager.py b/PreferenceManager.py index bb32eae..aec6c9c 100644 --- a/PreferenceManager.py +++ b/PreferenceManager.py @@ -19,6 +19,17 @@ class PreferenceManager: def __init__(self): self.database = os.path.join('/', 'var', 'db', 'java') self.java_versions = [ '1.0', '1.1', '1.2', '1.3', '1.4', '1.5' ] + self.prefs = {} + + load_database() + + def load_database(self): + if not os.path.exists(self.database): + create_database() + + for java_version in java_versions: + file = os.path.join(self.database, java_version) + self.prefs[version] = PrefsFileParser(file).get_prefs() def create_database(self): if not os.path.exists(self.database): @@ -35,48 +46,61 @@ class PreferenceManager: stream.close() def get_preferred_vm(self, version, level='0'): - file = os.path.join(self.database, version) - - if os.path.isfile(file): - prefs = PrefsFileParser(file).get_prefs() - return prefs[level] - else: + if not self.prefs.has_key(version): raise InvalidPrefsFileError + + if len(self.prefs[version]) is 0: + raise PrefsUndefinedError + + return self.prefs[version][level] def set_preferred_vm(self, version, vm): file = os.path.join(self.database, version) - prefs = {} - if os.path.isfile(file): - prefs = PrefsFileParser(file).get_prefs() + if not self.prefs.has_key(version): + raise InvalidPrefsFileError + + if len(self.prefs[version]) is 0: + raise PrefsUndefinedError - index = 0 - for key,value in prefs.iteritems(): - if value == vm: - index = key - break + prefs = self.prefs[version] + + index = get_index(prefs, vm) - while index > 0: - prefs[index+1] = prefs[index] - index -= 1 - prefs[0] = vm + if index not -1: + while index > 0: + prefs[index + 1] = prefs[index] + index -= 1 + prefs[0] = vm write_prefs(file, prefs) def remove_preferred_vm(self, version, vm): file = os.path.join(self.database, version) - prefs = {} - if os.path.isfile(file): - prefs = PrefsFileParser(file).get_prefs() + if not self.prefs.has_key(version): + raise InvalidPrefsFileError + + if len(self.prefs[version]) is 0: + raise PrefsUndefinedError + + prefs = self.prefs[version] - for key,value in prefs.iteritems(): - if value == vm: - del prefs[key] - break + index = get_index(prefs, vm) + + if index not -1: + while index < len(prefs) - 1: + prefs[index] = prefs[index + 1] + del prefs[len(prefs) - 1] write_prefs(file, prefs) + def get_index(self, prefs, key_value): + for key,value in prefs.iteritems(): + if value == key_value: + return key + return -1 + def write_prefs(self, file, prefs): stream = open(file, 'w') stream.write("# Java Virtual Machine Preferences") diff --git a/PrefsFileParser.py b/PrefsFileParser.py index b9b61fb..df607b3 100644 --- a/PrefsFileParser.py +++ b/PrefsFileParser.py @@ -21,7 +21,7 @@ class ConfigReader: if not os.path.isfile(self.file): raise InvalidPath(self.file) - + if not os.access(file, os.R_OK): raise PermissionError |