From: Katja Luther Date: Tue, 13 Sep 2016 09:56:48 +0000 (+0200) Subject: ref #5969: get the preference NC from db when initialize preference store and save... X-Git-Tag: 4.3.0^2~39 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/b9801dc05510c8708dd709ba0b9dafec4b43c7c3 ref #5969: get the preference NC from db when initialize preference store and save the changes in db --- diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java index c9f360f44..2cb31436b 100644 --- a/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java +++ b/eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationRemoteConfiguration.java @@ -59,6 +59,7 @@ import eu.etaxonomy.cdm.api.service.INameService; import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService; import eu.etaxonomy.cdm.api.service.IPolytomousKeyService; +import eu.etaxonomy.cdm.api.service.IPreferenceService; import eu.etaxonomy.cdm.api.service.IProgressMonitorService; import eu.etaxonomy.cdm.api.service.IReferenceService; import eu.etaxonomy.cdm.api.service.IService; @@ -413,6 +414,11 @@ public class CdmApplicationRemoteConfiguration implements ICdmApplicationConfigu public IGroupService getGroupService(){ return (IGroupService) getService(IGroupService.class, "/remoting/group.service", new CdmServiceRequestExecutor()); } + + @Override + public IPreferenceService getPreferenceService(){ + return (IPreferenceService) getService(IPreferenceService.class, "/remoting/preference.service", new CdmServiceRequestExecutor()); + } @Override diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCdmRepository.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCdmRepository.java index f3d17729b..efca74522 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCdmRepository.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientCdmRepository.java @@ -39,6 +39,7 @@ import eu.etaxonomy.cdm.api.service.INameService; import eu.etaxonomy.cdm.api.service.IOccurrenceService; import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService; import eu.etaxonomy.cdm.api.service.IPolytomousKeyService; +import eu.etaxonomy.cdm.api.service.IPreferenceService; import eu.etaxonomy.cdm.api.service.IProgressMonitorService; import eu.etaxonomy.cdm.api.service.IReferenceService; import eu.etaxonomy.cdm.api.service.IService; @@ -442,4 +443,10 @@ public class TransientCdmRepository implements ICdmApplicationConfiguration { public IMetadataService getMetadataService() { return defaultApplicationConfiguration.getMetadataService(); } + + @Override + public IPreferenceService getPreferenceService() { + + return defaultApplicationConfiguration.getPreferenceService(); + } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java index 0275cc471..ccdd5e285 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java @@ -174,7 +174,7 @@ public class CdmDataSourceRepository{ */ public static ICdmDataSource createDefaultH2DataSource() { ICdmDataSource h2DataSource = CdmDataSource.NewH2EmbeddedInstance( - DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode()); + DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode(true)); save(h2DataSource.getName(), h2DataSource); return h2DataSource; } @@ -188,7 +188,7 @@ public class CdmDataSourceRepository{ public static boolean setCurrentCdmSource(ICdmSource cdmSource) { currentCdmSource = cdmSource; NomenclaturalCode dataSourceNomenclaturalCode = cdmSource.getNomenclaturalCode(); - NomenclaturalCode applicationNomenclaturalCode = PreferencesUtil.getPreferredNomenclaturalCode(); + NomenclaturalCode applicationNomenclaturalCode = PreferencesUtil.getPreferredNomenclaturalCode(true); if( dataSourceNomenclaturalCode != null && ! dataSourceNomenclaturalCode.equals(applicationNomenclaturalCode)){ PreferencesUtil.setPreferredNomenclaturalCode(dataSourceNomenclaturalCode); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java index 04c9eb4b5..b225e7797 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceCredentialsWizardPage.java @@ -258,7 +258,7 @@ public abstract class CdmDataSourceCredentialsWizardPage extends WizardPage impl nomenclaturalCodeGroup = new Group(composite , SWT.NONE); nomenclaturalCodeGroup.setLayout(new GridLayout()); - nomenclaturalCode = dataSource != null ? dataSource.getNomenclaturalCode() : PreferencesUtil.getPreferredNomenclaturalCode(); + nomenclaturalCode = dataSource != null ? dataSource.getNomenclaturalCode() : PreferencesUtil.getPreferredNomenclaturalCode(true); for (final NomenclaturalCode code : NomenclaturalCodeHelper.getSupportedCodes()) { Button button = new Button(nomenclaturalCodeGroup, SWT.RADIO); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java index af287cab1..735885797 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/NomenclaturalCodeWizardPage.java @@ -73,7 +73,7 @@ public class NomenclaturalCodeWizardPage extends WizardPage { final Group group = new Group(container, SWT.NONE); group.setLayout(new GridLayout()); - NomenclaturalCode preferredCode = PreferencesUtil.getPreferredNomenclaturalCode(); + NomenclaturalCode preferredCode = PreferencesUtil.getPreferredNomenclaturalCode(false); // set preferred code as default configurator.setNomenclaturalCode(preferredCode); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java index fd3b21782..b52eee0aa 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java @@ -8,15 +8,25 @@ */ package eu.etaxonomy.taxeditor.preference; +import java.util.Iterator; import java.util.List; +import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.RadioGroupFieldEditor; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; +import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; +import eu.etaxonomy.cdm.api.service.IClassificationService; +import eu.etaxonomy.cdm.api.service.IPreferenceService; +import eu.etaxonomy.cdm.model.metadata.CdmPreference; +import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey; +import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; +import eu.etaxonomy.cdm.model.metadata.PreferenceSubject; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin; /** @@ -73,6 +83,23 @@ public class NomenclaturalCodePreferences extends FieldEditorPreferencePage setPreferenceStore(TaxeditorStorePlugin.getDefault() .getPreferenceStore()); setDescription("Choose which nomenclatural code you would like to use for scientific names unless otherwise specified."); + PreferencesUtil.setPreferredNomenclaturalCode(null); } + + @Override + public boolean performOk() { + + boolean result = super.performOk(); + if (result){ + String value = getPreferenceStore().getString(IPreferenceKeys.PREFERRED_NOMENCLATURAL_CODE_KEY); + CdmPreference pref = CdmPreference.NewDatabaseInstance( PreferencePredicate.NomenclaturalCode, value); + ICdmApplicationConfiguration controller = CdmStore.getCurrentApplicationConfiguration(); + IPreferenceService service = controller.getPreferenceService(); + service.set(pref); + } + return result; + } + + } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java index cf3a9d8a3..d6a8f6bf7 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java @@ -34,8 +34,10 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; +import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator; import eu.etaxonomy.cdm.api.service.IFeatureTreeService; +import eu.etaxonomy.cdm.api.service.IPreferenceService; import eu.etaxonomy.cdm.api.service.ITermService; import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl; import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator; @@ -48,6 +50,10 @@ import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.common.MarkerType; import eu.etaxonomy.cdm.model.common.TermBase; import eu.etaxonomy.cdm.model.description.FeatureTree; +import eu.etaxonomy.cdm.model.metadata.CdmPreference; +import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey; +import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; +import eu.etaxonomy.cdm.model.metadata.PreferenceSubject; import eu.etaxonomy.cdm.model.name.NomenclaturalCode; import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy; import eu.etaxonomy.cdm.strategy.match.IMatchStrategy; @@ -104,10 +110,29 @@ public class PreferencesUtil implements IPreferenceKeys { */ public static void setPreferredNomenclaturalCode( NomenclaturalCode preferredCode) { + ICdmApplicationConfiguration controller; + controller = CdmStore.getCurrentApplicationConfiguration(); + PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode); + CdmPreference preference = null; + if (preferredCode == null){ + preference = controller.getPreferenceService().find(key); + int index = StringUtils.lastIndexOf(preference.getValue(), "."); + UUID uuid = UUID.fromString(preference.getValue().substring(index +1, preference.getValue().length())); + preferredCode = NomenclaturalCode.getByUuid(uuid); + } else{ + preference = CdmPreference.NewInstance(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode, preferredCode.getKey()); + controller.getPreferenceService().set(preference); + } + + getPreferenceStore().setValue(PREFERRED_NOMENCLATURAL_CODE_KEY, - getPreferenceKey(preferredCode)); + getPreferenceKey(preferredCode)); } + public static NomenclaturalCode getPreferredNomenclaturalCode(){ + return getPreferredNomenclaturalCode(false); + } + /** *

* getPreferredNomenclaturalCode @@ -115,11 +140,30 @@ public class PreferencesUtil implements IPreferenceKeys { * * @return a {@link eu.etaxonomy.cdm.model.name.NomenclaturalCode} object. */ - public static NomenclaturalCode getPreferredNomenclaturalCode() { - - for (NomenclaturalCode code : NomenclaturalCodeHelper.getAllCodes()) { - String preferredCode = getPreferenceStore().getString( + public static NomenclaturalCode getPreferredNomenclaturalCode(boolean preConnected) { + ICdmApplicationConfiguration controller; + CdmPreference pref = null; + if (!preConnected){ + try{ + controller = CdmStore.getCurrentApplicationConfiguration(); + PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewDatabaseInstance(), PreferencePredicate.NomenclaturalCode); + pref = controller.getPreferenceService().find(key); + }catch(Exception e){ + e.printStackTrace(); + } + } + + String preferredCode; + if(pref == null){ + preferredCode = getPreferenceStore().getString( PREFERRED_NOMENCLATURAL_CODE_KEY); + }else{ + preferredCode = pref.getValue(); + } + + for (NomenclaturalCode code : NomenclaturalCodeHelper.getAllCodes()) { +// String preferredCode = getPreferenceStore().getString( +// PREFERRED_NOMENCLATURAL_CODE_KEY); if (getPreferenceKey(code).equals(preferredCode)) { return code; } @@ -411,7 +455,7 @@ public class PreferencesUtil implements IPreferenceKeys { // First time Editor is opened, no nomenclatural code has been set - if (PreferencesUtil.getPreferredNomenclaturalCode() == null) { + if (PreferencesUtil.getPreferredNomenclaturalCode(true) == null) { PreferencesUtil.setPreferredNomenclaturalCode(NomenclaturalCode.ICNAFP); /*