提交 30981766 编写于 作者: J jurgen

Formatter profiles cache removed

上级 49a03b42
......@@ -45,15 +45,12 @@ public class DataFormatterProfile implements DBDDataFormatterProfile, DBPPrefere
private DBPPreferenceStore store;
private String name;
private Locale locale;
private Map<String, Map<Object, Object>> properties = new HashMap<String, Map<Object, Object>>();
DataFormatterProfile(String profileName, DBPPreferenceStore store)
{
this.name = profileName;
this.store = store;
loadProfile();
//store.addPropertyChangeListener(this);
}
private void loadProfile()
......@@ -72,21 +69,6 @@ public class DataFormatterProfile implements DBDDataFormatterProfile, DBPPrefere
this.locale = new Locale(language, country, variant);
}
}
properties.clear();
for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) {
Map<Object, Object> defaultProperties = formatter.getSample().getDefaultProperties(locale);
Map<Object, Object> formatterProps = new HashMap<Object, Object>();
for (DBPPropertyDescriptor prop : formatter.getProperties()) {
Object defaultValue = defaultProperties.get(prop.getId());
Object propValue = PrefUtils.getPreferenceValue(
store,
DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), prop.getDataType());
if (propValue != null && !CommonUtils.equalObjects(defaultValue, propValue)) {
formatterProps.put(prop.getId(), propValue);
}
}
properties.put(formatter.getId(), formatterProps);
}
}
@Override
......@@ -96,17 +78,6 @@ public class DataFormatterProfile implements DBDDataFormatterProfile, DBPPrefere
store.setValue(PROP_COUNTRY, locale.getCountry());
store.setValue(PROP_VARIANT, locale.getVariant());
for (DataFormatterDescriptor formatter : DataFormatterRegistry.getInstance().getDataFormatters()) {
Map<Object, Object> formatterProps = properties.get(formatter.getId());
for (DBPPropertyDescriptor prop : formatter.getProperties()) {
Object propValue = formatterProps == null ? null : formatterProps.get(prop.getId());
if (propValue != null) {
PrefUtils.setPreferenceValue(store, DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), propValue);
} else {
store.setToDefault(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId());
}
}
}
PrefUtils.savePreferenceStore(store);
}
......@@ -143,13 +114,33 @@ public class DataFormatterProfile implements DBDDataFormatterProfile, DBPPrefere
@Override
public Map<Object, Object> getFormatterProperties(String typeId)
{
return properties.get(typeId);
DataFormatterDescriptor formatter = DataFormatterRegistry.getInstance().getDataFormatter(typeId);
Map<Object, Object> defaultProperties = formatter.getSample().getDefaultProperties(locale);
Map<Object, Object> formatterProps = new HashMap<Object, Object>();
for (DBPPropertyDescriptor prop : formatter.getProperties()) {
Object defaultValue = defaultProperties.get(prop.getId());
Object propValue = PrefUtils.getPreferenceValue(
store,
DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), prop.getDataType());
if (propValue != null && !CommonUtils.equalObjects(defaultValue, propValue)) {
formatterProps.put(prop.getId(), propValue);
}
}
return formatterProps;
}
@Override
public void setFormatterProperties(String typeId, Map<Object, Object> properties)
public void setFormatterProperties(String typeId, Map<Object, Object> formatterProps)
{
this.properties.put(typeId, new HashMap<Object, Object>(properties));
DataFormatterDescriptor formatter = DataFormatterRegistry.getInstance().getDataFormatter(typeId);
for (DBPPropertyDescriptor prop : formatter.getProperties()) {
Object propValue = formatterProps == null ? null : formatterProps.get(prop.getId());
if (propValue != null) {
PrefUtils.setPreferenceValue(store, DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId(), propValue);
} else {
store.setToDefault(DATAFORMAT_TYPE_PREFIX + formatter.getId() + "." + prop.getId());
}
}
}
@Override
......
......@@ -364,20 +364,6 @@ public class PrefPageDataFormat extends TargetPrefPage
} catch (Exception e) {
log.warn(e);
}
// Update all derived profiles
if (formatterProfile == DataFormatterRegistry.getInstance().getGlobalProfile()) {
for (DBDDataFormatterProfile profile : DataFormatterRegistry.getInstance().getCustomProfiles()) {
profile.reset();
}
for (IProject project : DBeaverCore.getInstance().getLiveProjects()) {
if (project.isOpen()) {
DataSourceRegistry dsRegistry = DBeaverCore.getInstance().getProjectRegistry().getDataSourceRegistry(project);
for (DataSourceDescriptor ds : dsRegistry.getDataSources()) {
ds.getDataFormatterProfile().reset();
}
}
}
}
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册