package org.bbssh.model;
import net.rim.device.api.system.ControlledAccessException;
import net.rim.device.api.system.PersistentStore;
public class DataStoreCleaner {
public static final byte CONNECTIONS = 0;
public static final byte KEYS = 1;
public static final byte MACROS = 2;
public static final byte SETTINGS = 3;
public static final byte BINDINGS = 4;
public static int getCleanIteration() {
return 3;
}
/**
* Clean out-of-date data which is no longer valid.
*/
public static void cleanData() {
SettingsManager m = SettingsManager.getInstance();
Settings s = SettingsManager.getSettings();
int lastClean = s.getLastCleanupVersion();
switch (lastClean) {
case 0:
// cleanup on old persistent stores, from pre 1.2
clean(0x3b876f970927ae00L); // base guid, probably nothing.
clean(0x3b876f970927ae08L); // macros
clean(0x3b876f970927ae09L); // settings
clean(0x3b876f970927ae10L); // keystore
clean(0x3b876f970927ae14L); // Sessions
case 1:
clean(MacroManager.MACRO_GUID);
case 2:
clean(KeyBindingManager.KEYBIND_GUID);
// 3 is current, nothing to do.
}
s.setLastCleanupVersion(getCleanIteration());
m.commitData();
}
private static void clean(long id) {
try {
PersistentStore.destroyPersistentObject(id);
} catch (ControlledAccessException e) {
}
}
public static void cleanData(byte reposId) {
switch (reposId) {
case CONNECTIONS:
ConnectionManager.getInstance().purgePersistentContent();
break;
case KEYS:
KeyManager.getInstance().purgePersistentContent();
break;
case MACROS:
MacroManager.getInstance().purgePersistentContent();
break;
case BINDINGS:
KeyBindingManager.getInstance().purgePersistentContent();
break;
case SETTINGS:
SettingsManager.getInstance().purgePersistentContent();
break;
}
}
}