aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@gentoo.org>2005-04-22 04:09:43 +0000
committerSaleem Abdulrasool <compnerd@gentoo.org>2005-04-22 04:09:43 +0000
commitf5f138c37c9a8eb1bb54beed0ca01229769b99e5 (patch)
treec8e30e3d77c2cc803964ef5bc58e2c96b90eeacc
parentPreferences Management Code --- Tree is broken (diff)
downloadjava-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.py74
-rw-r--r--PrefsFileParser.py2
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