public synchronized void saveState() throws CoreException {
XMLMemento rootElem = XMLMemento.createWriteRoot(ELEM_ROOT);
rootElem.putInteger(ATTRIB_COMPAT, COMPAT_VERSION);
for (ILogResource log : logSet) {
IMemento logElem = rootElem.createChild(ELEM_LOG_RESOURCE);
logElem.createChild(ELEM_NAME).putTextData(log.getName());
IMemento dialectElem = logElem.createChild(ELEM_DIALECT);
dialectElem.putString(ATTRIB_FACTORY,
log.getDialect().getFactory().getId());
// Save config options of dialect
saveConfigOptions(dialectElem, (IConfigurableObject) log.getDialect().getAdapter(IConfigurableObject.class));