1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

More detailed API to allow for separate persistence of attributes and

entries
This commit is contained in:
Andrew Gvozdev 2011-08-13 08:28:19 -04:00
parent da2ab70bac
commit 6088b4e980
2 changed files with 50 additions and 34 deletions

View file

@ -807,15 +807,15 @@ public abstract class AbstractLanguageSettingsOutputScanner extends LanguageSett
} }
@Override @Override
public Element serialize(Element parentElement) { public Element serializeAttributes(Element parentElement) {
Element elementProvider = super.serialize(parentElement); Element elementProvider = super.serializeAttributes(parentElement);
elementProvider.setAttribute(ATTR_EXPAND_RELATIVE_PATHS, Boolean.toString(isResolvingPaths)); elementProvider.setAttribute(ATTR_EXPAND_RELATIVE_PATHS, Boolean.toString(isResolvingPaths));
return elementProvider; return elementProvider;
} }
@Override @Override
public void load(Element providerNode) { public void loadAttributes(Element providerNode) {
super.load(providerNode); super.loadAttributes(providerNode);
String expandRelativePathsValue = XmlUtil.determineAttributeValue(providerNode, ATTR_EXPAND_RELATIVE_PATHS); String expandRelativePathsValue = XmlUtil.determineAttributeValue(providerNode, ATTR_EXPAND_RELATIVE_PATHS);
if (expandRelativePathsValue!=null) if (expandRelativePathsValue!=null)

View file

@ -235,6 +235,12 @@ public class LanguageSettingsSerializable extends LanguageSettingsBaseProvider {
*/ */
// provider/configuration/language/resource/entry // provider/configuration/language/resource/entry
public Element serialize(Element parentElement) { public Element serialize(Element parentElement) {
Element elementProvider = serializeAttributes(parentElement);
serializeEntries(elementProvider);
return elementProvider;
}
public Element serializeAttributes(Element parentElement) {
Element elementProvider = XmlUtil.appendElement(parentElement, ELEM_PROVIDER, new String[] { Element elementProvider = XmlUtil.appendElement(parentElement, ELEM_PROVIDER, new String[] {
ATTR_ID, getId(), ATTR_ID, getId(),
ATTR_NAME, getName(), ATTR_NAME, getName(),
@ -248,10 +254,13 @@ public class LanguageSettingsSerializable extends LanguageSettingsBaseProvider {
XmlUtil.appendElement(elementProvider, ELEM_LANGUAGE_SCOPE, new String[] {ATTR_ID, langId}); XmlUtil.appendElement(elementProvider, ELEM_LANGUAGE_SCOPE, new String[] {ATTR_ID, langId});
} }
} }
return elementProvider;
}
public void serializeEntries(Element elementProvider) {
for (Entry<String, Map<String, List<ICLanguageSettingEntry>>> entryLang : fStorage.entrySet()) { for (Entry<String, Map<String, List<ICLanguageSettingEntry>>> entryLang : fStorage.entrySet()) {
serializeLanguage(elementProvider, entryLang); serializeLanguage(elementProvider, entryLang);
} }
return elementProvider;
} }
private void serializeLanguage(Element parentElement, Entry<String, Map<String, List<ICLanguageSettingEntry>>> entryLang) { private void serializeLanguage(Element parentElement, Entry<String, Map<String, List<ICLanguageSettingEntry>>> entryLang) {
@ -330,40 +339,47 @@ public class LanguageSettingsSerializable extends LanguageSettingsBaseProvider {
languageScope = null; languageScope = null;
if (providerNode!=null) { if (providerNode!=null) {
String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID); loadAttributes(providerNode);
String providerName = XmlUtil.determineAttributeValue(providerNode, ATTR_NAME); loadEntries(providerNode);
String providerParameter = XmlUtil.determineAttributeValue(providerNode, ATTR_PARAMETER); }
String providerStoreEntries = XmlUtil.determineAttributeValue(providerNode, ATTR_STORE_ENTRIES); }
this.setId(providerId); public void loadAttributes(Element providerNode) {
this.setName(providerName); String providerId = XmlUtil.determineAttributeValue(providerNode, ATTR_ID);
this.setCustomParameter(providerParameter); String providerName = XmlUtil.determineAttributeValue(providerNode, ATTR_NAME);
this.setEntriesStorageWithProject(VALUE_PROJECT.equals(providerStoreEntries)); String providerParameter = XmlUtil.determineAttributeValue(providerNode, ATTR_PARAMETER);
String providerStoreEntries = XmlUtil.determineAttributeValue(providerNode, ATTR_STORE_ENTRIES);
List<ICLanguageSettingEntry> settings = new ArrayList<ICLanguageSettingEntry>(); this.setId(providerId);
NodeList nodes = providerNode.getChildNodes(); this.setName(providerName);
for (int i=0;i<nodes.getLength();i++) { this.setCustomParameter(providerParameter);
Node elementNode = nodes.item(i); this.setEntriesStorageWithProject(VALUE_PROJECT.equals(providerStoreEntries));
if(elementNode.getNodeType() != Node.ELEMENT_NODE) }
continue;
if (ELEM_LANGUAGE_SCOPE.equals(elementNode.getNodeName())) { public void loadEntries(Element providerNode) {
loadLanguageScopeElement(elementNode); List<ICLanguageSettingEntry> settings = new ArrayList<ICLanguageSettingEntry>();
} else if (ELEM_LANGUAGE.equals(elementNode.getNodeName())) { NodeList nodes = providerNode.getChildNodes();
loadLanguageElement(elementNode, null); for (int i=0;i<nodes.getLength();i++) {
} else if (ELEM_RESOURCE.equals(elementNode.getNodeName())) { Node elementNode = nodes.item(i);
loadResourceElement(elementNode, null, null); if(elementNode.getNodeType() != Node.ELEMENT_NODE)
} else if (ELEM_ENTRY.equals(elementNode.getNodeName())) { continue;
ICLanguageSettingEntry entry = loadSettingEntry(elementNode);
if (entry!=null) { if (ELEM_LANGUAGE_SCOPE.equals(elementNode.getNodeName())) {
settings.add(entry); loadLanguageScopeElement(elementNode);
} } else if (ELEM_LANGUAGE.equals(elementNode.getNodeName())) {
loadLanguageElement(elementNode, null);
} else if (ELEM_RESOURCE.equals(elementNode.getNodeName())) {
loadResourceElement(elementNode, null, null);
} else if (ELEM_ENTRY.equals(elementNode.getNodeName())) {
ICLanguageSettingEntry entry = loadSettingEntry(elementNode);
if (entry!=null) {
settings.add(entry);
} }
} }
// set settings }
if (settings.size()>0) { // set settings
setSettingEntriesInternal(null, null, settings); if (settings.size()>0) {
} setSettingEntriesInternal(null, null, settings);
} }
} }