Implemented some of the import/export functionality. Major refactoring of datasource...
authorn.hoffmann <n.hoffmann@localhost>
Thu, 25 Jun 2009 17:47:31 +0000 (17:47 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 25 Jun 2009 17:47:31 +0000 (17:47 +0000)
27 files changed:
.gitattributes
taxeditor-store/META-INF/MANIFEST.MF
taxeditor-store/plugin.xml
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/wizard/CdmDataSourceTypeSelectionWizardPage.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractExportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractImportWizard.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelExportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelImportWizard.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/GenericConfiguratorWizardPage.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportDestinationWizardPage.java [moved from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportWizardPage.java with 95% similarity]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbImportSourceWizardPage.java [moved from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelExportWizardPage.java with 69% similarity]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LanguageUtil.java [deleted file]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ReferenceUtil.java [deleted file]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/DistributionStatusMenuPreferences.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeatureMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NameRelationshipTypeMenuPreferences.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalStatusTypeMenuPreferences.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java [new file with mode: 0644]
taxeditor-store/src/test/java/eu/etaxonomy/taxeditor/store/CdmStoreTest.java

index bdefcfc2e97377240ce3fa434802e290979e1e5f..2070ec57e7b0543533188b381abef0ecd33bfd26 100644 (file)
@@ -1007,10 +1007,13 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/handler/ShowDataSourceViewH
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractExcelExportWizard.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractExcelImportWizard.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractExportWizard.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractImportWizard.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelExportWizard.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelExportWizardPage.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelImportWizard.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/GenericConfiguratorWizardPage.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportDestinationWizardPage.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportWizard.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportWizardPage.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbImportSourceWizardPage.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbImportWizard.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/TcsExportWizard.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/TcsImportWizard.java -text
@@ -1022,9 +1025,7 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IDataChangeBehavior.j
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ImagesUtil.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IterableSynonymyList.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LanguageUtil.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/NameUtil.java -text
-taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ReferenceUtil.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/Resources.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/SynonymUtil.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonTransfer.java -text
@@ -1062,10 +1063,13 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/parser/CdmParserUtil.java -
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/AbstractMenuPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/DescriptionPreferences.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/DistributionStatusMenuPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/FeatureMenuPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitNomenclaturalCodePrefDialog.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/InitializeDbPreferences.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NameRelationshipTypeMenuPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalCodePreferences.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalStatusTypeMenuPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/TaxonomicPreferences.java -text
@@ -1074,6 +1078,7 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureW
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/wizards/FeatureWizardPage.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/StoreUtil.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/internal/TaxeditorStorePlugin.java -text
 taxeditor-store/src/main/resources/eu/etaxonomy/cdm/defaultApplicationContext.xml -text
 taxeditor-store/src/main/resources/log4j.properties -text
index 492018446602abee4fe5ed244fe20b9790a95e97..8d784f594d0e3b1960e926433e9fb7600bf49eff 100644 (file)
@@ -24,7 +24,10 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
  eu.etaxonomy.cdmLibrary;bundle-version="2.1.0",
  org.eclipse.ui.editors;bundle-version="3.4.0",
  org.eclipse.jface.text;bundle-version="3.4.1",
- org.eclipse.ui.ide;bundle-version="3.4.2"
+ org.eclipse.ui.ide;bundle-version="3.4.2",
+ org.eclipse.debug.core;bundle-version="3.4.1",
+ org.eclipse.jdt.launching;bundle-version="3.4.1",
+ org.eclipse.jdt.core;bundle-version="3.4.4"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Import-Package: junit.framework,org.junit
 Bundle-ActivationPolicy: lazy
index 333c70bf824d8c077958f5dc3b327fa915cfece6..8d2044070b0fc3a912206372f163292e24c9716e 100644 (file)
             category="eu.etaxonomy.taxeditor.preferences.description"
             class="eu.etaxonomy.taxeditor.preference.FeatureMenuPreferences"
             id="eu.etaxonomy.taxeditor.preferences.feature"
-            name="Preferred Features">
+            name="Features">
       </page>
       <page
             category="eu.etaxonomy.taxeditor.preferences.taxonomic"
             class="eu.etaxonomy.taxeditor.preference.RankMenuPreferences"
             id="eu.etaxonomy.taxeditor.preferences.ranks"
-            name="Preferred Ranks">
+            name="Ranks">
+      </page>
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.description"
+            class="eu.etaxonomy.taxeditor.preference.DistributionStatusMenuPreferences"
+            id="eu.etaxonomy.taxeditor.preferences.distributionStatus"
+            name="Distribution States">
+      </page>
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.taxonomic"
+            class="eu.etaxonomy.taxeditor.preference.NomenclaturalStatusTypeMenuPreferences"
+            id="eu.etaxonomy.taxeditor.preferences.nomenclaturalStatusType"
+            name="Nomenclatural Status Type">
+      </page>
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.taxonomic"
+            class="eu.etaxonomy.taxeditor.preference.NameRelationshipTypeMenuPreferences"
+            id="eu.etaxonomy.taxeditor.preferences.nameRelationshipType"
+            name="Name Relationship Type">
       </page>
       <page
             class="eu.etaxonomy.taxeditor.preference.TaxonomicPreferences"
             id="eu.etaxonomy.taxeditor.import.category.excel"
             name="Excel">
       </category>
+      <wizard
+            category="eu.etaxonomy.taxeditor.import.category.cdm"
+            class="eu.etaxonomy.taxeditor.io.BerlinModelImportWizard"
+            id="eu.etaxonomy.taxeditor.io.import.berlinModel"
+            name="Berlin Model">
+      </wizard>
    </extension>
    <extension
          point="org.eclipse.ui.exportWizards">
                        class="org.eclipse.ui.ExtensionFactory:progressView"  
                        id="org.eclipse.ui.views.ProgressView">  
                </view>  
-       </extension>  
+       </extension>
+ <extension
+       point="org.eclipse.debug.core.launchConfigurationTypes">
+    <launchConfigurationType
+          id="eu.etaxonomy.taxeditor.newInstance"
+          name="NewInstance">
+    </launchConfigurationType>
+ </extension>  
        
 </plugin>
index 7fc00189cd16aa24305d8d271e88f5f678aa3bbf..af5f6736602c2cb30d4e8aa87b5c104fd4966f33 100644 (file)
@@ -54,7 +54,7 @@ public class CdmDataSourceTypeSelectionWizardPage extends WizardPage implements
 
        private CdmDataSourceCredentialsWizardPage credentialsWizardPage;
        
-       protected CdmDataSourceTypeSelectionWizardPage(ICdmDataSource dataSource) {
+       public CdmDataSourceTypeSelectionWizardPage(ICdmDataSource dataSource) {
                super("DataSourceWizardPage");
                
                this.dataSource = dataSource;
index 2da7f1ae51b255eceebb44f0fdbec26739b74f56..0756f79a1df1a31359c78263d29cfd4dd9e06b7a 100644 (file)
@@ -20,19 +20,24 @@ import org.eclipse.ui.IExportWizard;
 
 import eu.etaxonomy.cdm.io.common.CdmDefaultExport;
 import eu.etaxonomy.cdm.io.common.IExportConfigurator;
+import eu.etaxonomy.cdm.io.common.IIoConfigurator;
 
 /**
  * @author n.hoffmann
  * @created 24.06.2009
  * @version 1.0
  */
-public abstract class AbstractExportWizard extends Wizard implements IExportWizard{
+public abstract class AbstractExportWizard<CONFIG extends IIoConfigurator> extends Wizard implements IExportWizard{
        private static final Logger logger = Logger
                        .getLogger(AbstractExportWizard.class);
        
+       protected final String CONFIGURATION_PAGE = "CONFIGURATION_PAGE"; 
+       
+       private GenericConfiguratorWizardPage pageConfiguration;
+       
        private CdmDefaultExport export;
        
-       public boolean export(final IExportConfigurator configurator){
+       public boolean doExport(final IExportConfigurator configurator){
                export = new CdmDefaultExport();
                
                Job exportJob = new Job("Export"){
@@ -46,4 +51,17 @@ public abstract class AbstractExportWizard extends Wizard implements IExportWiza
                
                return true;
        }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.wizard.Wizard#addPages()
+        */
+       @Override
+       public void addPages() {
+               super.addPages();
+               
+               pageConfiguration = new GenericConfiguratorWizardPage(CONFIGURATION_PAGE, getConfigurator());
+               this.addPage(pageConfiguration);
+       }
+       
+       public abstract CONFIG getConfigurator();
 }
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractImportWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/AbstractImportWizard.java
new file mode 100644 (file)
index 0000000..faade64
--- /dev/null
@@ -0,0 +1,163 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.io;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMInstallType;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IImportWizard;
+
+import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
+import eu.etaxonomy.cdm.io.common.IImportConfigurator;
+import eu.etaxonomy.cdm.io.common.IIoConfigurator;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ * @author n.hoffmann
+ * @created 24.06.2009
+ * @version 1.0
+ */
+public abstract class AbstractImportWizard<CONFIG extends IIoConfigurator> extends Wizard implements IImportWizard, IJavaLaunchConfigurationConstants{
+       private static final Logger logger = Logger
+                       .getLogger(AbstractImportWizard.class);
+       
+       protected final String CONFIGURATION_PAGE = "CONFIGURATION_PAGE"; 
+       
+       private GenericConfiguratorWizardPage pageConfiguration;
+       
+       private CdmDefaultImport<IImportConfigurator> importer;
+       
+       /**
+        * Performs an import into a new database. The application context has to be changed
+        * @param configurator
+        * @return
+        */
+       public boolean doImportExternal(IImportConfigurator configurator){
+               
+               
+//             try {
+//                     ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
+//                     ILaunchConfigurationType type = manager.getLaunchConfigurationType(ID_JAVA_APPLICATION);
+//                     ILaunchConfiguration[] configurations = manager.getLaunchConfigurations(type);
+//                     
+//                     // delete possible prior launch configurations
+//                     for (ILaunchConfiguration configuration : configurations) {
+//                             if (configuration.getName().equals("NewInstance")) {
+//                                     configuration.delete();
+//                                     break;
+//                             }
+//                     }
+//                     
+//                     ILaunchConfigurationWorkingCopy workingCopy = type.newInstance(null, "NewInstance");
+//                     
+//                     workingCopy.setAttribute(ATTR_MAIN_TYPE_NAME, "eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin");
+//                     
+//             
+//                     workingCopy.setAttribute(ATTR_VM_INSTALL_NAME, JavaRuntime.getDefaultVMInstall().getName());
+//                     workingCopy.setAttribute(ATTR_VM_INSTALL_TYPE, JavaRuntime.getDefaultVMInstall().getVMInstallType().getId());                   
+//                     
+//                     
+//                     workingCopy.launch(ILaunchManager.RUN_MODE, null);
+                       
+                       
+//                   IVMInstall vm = JavaRuntime.getDefaultVMInstall();//VMInstall(proj);
+//                   if (vm == null) vm = JavaRuntime.getDefaultVMInstall();
+//                   IVMRunner vmr = vm.getVMRunner(ILaunchManager.RUN_MODE);
+//                   String[] cp = JavaRuntime.computeDefaultRuntimeClassPath(proj);
+//                   VMRunnerConfiguration config = new VMRunnerConfiguration(main, cp);
+//                   ILaunch launch = new Launch(null, 
+//                      ILaunchManager.RUN_MODE, null);
+//                   vmr.run(config, launch, null);
+                     
+//                     IVMInstallType[] types = JavaRuntime.getVMInstallTypes();
+//                     
+//                     IVMInstall install = null;
+//                     for(IVMInstallType type : types){
+//                             install = type.createVMInstall(type.getId());
+//                             break;
+//                     }
+//                     
+//                     
+//                     IPath path = JavaRuntime.newJREContainerPath(install);
+//                     String jrePath = path.toPortableString();
+
+                       
+//                     
+//                        ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
+//                        ILaunchConfigurationType type = manager.getLaunchConfigurationType(ID_JAVA_APPLICATION);
+//                        ILaunchConfigurationWorkingCopy wc = type.newInstance(null, "NewInstance");
+//                        wc.setAttribute(ATTR_JRE_CONTAINER_PATH, jrePath);
+//                        wc.setAttribute(ATTR_MAIN_TYPE_NAME, "eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin");
+//                        ILaunchConfiguration config = wc.doSave();   
+//                        config.launch(ILaunchManager.RUN_MODE, null);
+//
+//                     
+//                        Process p = Runtime.getRuntime().exec(cmdarray);
+//                        
+//                     
+//             } catch (CoreException e) {
+//                     logger.error("Error launching import", e);
+//             }
+               
+               StoreUtil.notImplementedMessage();
+               
+               return true;
+       }
+       
+       /**
+        * Use when importing data into the current application context
+        * 
+        * @param configurator
+        * @return
+        */
+       public boolean doImportInternal(final IImportConfigurator configurator){
+               importer = new CdmDefaultImport();
+               
+               Job importJob = new Job("Import"){
+                       @Override
+                       protected IStatus run(IProgressMonitor monitor) {
+                               return importer.invoke(configurator) ? Status.OK_STATUS : Status.CANCEL_STATUS;
+                       }
+               };              
+               
+               importJob.schedule();
+               
+               return true;
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.wizard.Wizard#addPages()
+        */
+       @Override
+       public void addPages() {
+               super.addPages();
+               
+               pageConfiguration = new GenericConfiguratorWizardPage(CONFIGURATION_PAGE, getConfigurator());
+               this.addPage(pageConfiguration);
+       }
+       
+       public abstract CONFIG getConfigurator();
+}
index d968318e43122ecb1e299ef2abd93162248fc94e..ed3204bc7236e023d9a1504accfd9d5e43584393 100644 (file)
@@ -17,7 +17,6 @@ import org.eclipse.ui.IWorkbench;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.berlinModel.out.BerlinModelExportConfigurator;
 import eu.etaxonomy.cdm.io.common.Source;
-import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
 import eu.etaxonomy.taxeditor.datasource.wizard.CdmDataSourceSQLServerWizardPage;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -26,13 +25,23 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 23.06.2009
  * @version 1.0
  */
-public class BerlinModelExportWizard extends AbstractExportWizard {
+public class BerlinModelExportWizard extends AbstractExportWizard<BerlinModelExportConfigurator> {
        private static final Logger logger = Logger
                        .getLogger(BerlinModelExportWizard.class);
        
-       private CdmDataSourceSQLServerWizardPage page;
+       private CdmDataSourceSQLServerWizardPage pageDataSource;
 
 
+       private BerlinModelExportConfigurator configurator;
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+        */
+       public void init(IWorkbench workbench, IStructuredSelection selection) {
+               this.setWindowTitle("Berlin Model Export");
+               configurator = BerlinModelExportConfigurator.NewInstance(null, null);
+       }
+       
        /* (non-Javadoc)
         * @see org.eclipse.jface.wizard.Wizard#addPages()
         */
@@ -40,8 +49,10 @@ public class BerlinModelExportWizard extends AbstractExportWizard {
        public void addPages() {
                super.addPages();
                
-               page = new CdmDataSourceSQLServerWizardPage(null);
-               this.addPage(page);
+               pageDataSource = new CdmDataSourceSQLServerWizardPage(null);
+               this.addPage(pageDataSource);
+               
+
                
        }
        
@@ -51,26 +62,28 @@ public class BerlinModelExportWizard extends AbstractExportWizard {
        @Override
        public boolean performFinish() {
                
-               ICdmDataSource dataSource = page.getDataSource();
+               ICdmDataSource dataSource = pageDataSource.getDataSource();
                
                // FIXME use new constructor Source(ICdmDataSource)
-               Source source = new Source(Source.SQL_SERVER_2005, 
+               Source destination = new Source(Source.SQL_SERVER_2005, 
                                                                dataSource.getServer(),
                                                                dataSource.getDatabase(),
                                                                dataSource.getPort());
-               source.setUserAndPwd(dataSource.getUsername(), dataSource.getPassword());
+               destination.setUserAndPwd(dataSource.getUsername(), dataSource.getPassword());
                
-               BerlinModelExportConfigurator configurator = BerlinModelExportConfigurator.NewInstance(source, CdmDataSourceRepository.getDefault().getCurrentDataSource());
+               configurator.setDestination(destination);               
                configurator.setCdmAppController(CdmStore.getApplicationController());
                
-               return export(configurator);
+               
+               return doExport(configurator);
        }
 
        /* (non-Javadoc)
-        * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+        * @see eu.etaxonomy.taxeditor.io.AbstractExportWizard#getConfigurator()
         */
-       public void init(IWorkbench workbench, IStructuredSelection selection) {
-               this.setWindowTitle("Berlin Model Export");
+       @Override
+       public BerlinModelExportConfigurator getConfigurator() {
+               return configurator;
        }
 
 }
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelImportWizard.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelImportWizard.java
new file mode 100644 (file)
index 0000000..7f5b3d0
--- /dev/null
@@ -0,0 +1,82 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.io;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbench;
+
+import eu.etaxonomy.cdm.database.ICdmDataSource;
+import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
+import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
+import eu.etaxonomy.taxeditor.datasource.wizard.CdmDataSourceTypeSelectionWizardPage;
+
+/**
+ * @author n.hoffmann
+ * @created 24.06.2009
+ * @version 1.0
+ */
+public class BerlinModelImportWizard extends AbstractImportWizard<BerlinModelImportConfigurator> {
+       private static final Logger logger = Logger
+                       .getLogger(BerlinModelImportWizard.class);
+
+       CdmDataSourceTypeSelectionWizardPage dataSourceSelectionPage;
+       
+       BerlinModelImportConfigurator configurator;
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+        */
+       public void init(IWorkbench workbench, IStructuredSelection selection) {
+               configurator = BerlinModelImportConfigurator.NewInstance(null, null);
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.wizard.Wizard#performFinish()
+        */
+       @Override
+       public boolean performFinish() {
+
+               ICdmDataSource dataSource;
+               String dataSourceName = dataSourceSelectionPage.getDataSourceName();
+               if(dataSourceSelectionPage.getCredentialsWizardPage() != null){
+                       dataSource = dataSourceSelectionPage.getCredentialsWizardPage().getDataSource();
+               }else{
+                       throw new IllegalStateException("Expected a datasource credentials page to exist");
+               }
+               
+               // save the new dataSource to repository
+               CdmDataSourceRepository.getDefault().save(dataSourceName, dataSource);
+               
+               configurator.setDestination(dataSource);
+               
+               return doImportExternal(configurator);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.io.AbstractImportWizard#getConfigurator()
+        */
+       @Override
+       public BerlinModelImportConfigurator getConfigurator() {
+               return configurator;
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.io.AbstractImportWizard#addPages()
+        */
+       @Override
+       public void addPages() {
+               super.addPages();
+               
+               dataSourceSelectionPage = new CdmDataSourceTypeSelectionWizardPage(null);
+               addPage(dataSourceSelectionPage);
+       }
+}
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/GenericConfiguratorWizardPage.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/GenericConfiguratorWizardPage.java
new file mode 100644 (file)
index 0000000..ac19b0f
--- /dev/null
@@ -0,0 +1,175 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.io;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.io.common.IIoConfigurator;
+
+/**
+ * @author n.hoffmann
+ * @created 23.06.2009
+ * @version 1.0
+ */
+public class GenericConfiguratorWizardPage extends WizardPage {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(GenericConfiguratorWizardPage.class);
+       
+       private IIoConfigurator configurator;
+
+       /**
+        * @param pageName
+        * @param configurator 
+        */
+       protected GenericConfiguratorWizardPage(String pageName, IIoConfigurator configurator) {
+               super(pageName);
+               this.setTitle("Export Configuration");
+               
+               this.setDescription("Configure the export mechanism.");
+               
+               this.configurator = configurator;
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+        */
+       public void createControl(Composite parent) {
+               
+               Composite composite = new Composite(parent, SWT.NULL);
+               GridLayout gridLayout = new GridLayout();
+               gridLayout.numColumns = 2;
+               composite.setLayout(gridLayout);
+                               
+               List<Method> methods = getConfiguratorsBooleanSetMethods(configurator);
+               
+               for(Method method : methods){
+                       createCheckbox(composite, method, configurator);
+               }
+               
+               setControl(composite);
+       }
+       
+       private void createCheckbox(Composite parent, Method method, final IIoConfigurator configurator){
+       
+               String methodName = method.getName();
+               
+               final String methodNameValue = methodName.substring(3);
+       
+               CLabel label = new CLabel(parent, SWT.NULL);
+               label.setText(methodNameValue);
+               
+               final Button checkBox = new Button(parent, SWT.CHECK);
+               checkBox.setSelection(executeBooleanGetMethod(configurator,"is" + methodNameValue));
+               checkBox.addSelectionListener(new SelectionAdapter(){
+
+                       /* (non-Javadoc)
+                        * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+                        */
+                       @Override
+                       public void widgetSelected(SelectionEvent e) {
+                               executeBooleanSetMethod(configurator, "set" + methodNameValue, checkBox.getSelection());
+                       }
+                       
+               });
+               
+       }
+       
+       
+       private boolean executeBooleanGetMethod(IIoConfigurator configurator, String methodName){
+               
+               Class<? extends IIoConfigurator> configuratorClass = configurator.getClass();
+               
+               boolean result = false;
+               
+               Method[] methods = configuratorClass.getMethods();
+               
+               for(Method method : methods){
+                       if(!method.getName().equals(methodName)){
+                               continue;
+                       }
+                       
+                       try {
+                               Object returnType = method.invoke(configurator, null);
+                               if(returnType.getClass().equals(Boolean.class)){
+                                       result = ((Boolean) returnType).booleanValue();
+                               }
+                                       
+                               break;
+                       } catch (Exception e) {
+                               logger.warn("Could not invoke method");
+                       } 
+               }
+               
+               
+               return result;
+       }
+       
+       private void executeBooleanSetMethod(IIoConfigurator configurator, String methodName, boolean selected){
+               
+               Class<? extends IIoConfigurator> configuratorClass = configurator.getClass();
+               
+               
+               Method[] methods = configuratorClass.getMethods();
+               
+               for(Method method : methods){
+                       if(!method.getName().equals(methodName)){
+                               continue;
+                       }
+                       
+                       try {
+                               method.invoke(configurator, selected);
+                                       
+                               break;
+                       } catch (Exception e) {
+                               logger.warn("Could not invoke method");
+                       } 
+               }
+       }
+       
+       private List<Method> getConfiguratorsBooleanSetMethods(IIoConfigurator configurator){
+               List<Method> booleanMethods = new ArrayList<Method>();
+               
+               Class<? extends IIoConfigurator> configuratorClass = configurator.getClass();
+               
+               Method[] allMethods = configuratorClass.getMethods();
+               
+               for(Method method : allMethods){
+                       if(method.getName().startsWith("set")){
+                               
+                               Class<?>[] typeList = method.getParameterTypes();
+                               
+                               if(typeList.length > 1){
+                                       new IllegalStateException("Found a setter with parameter count > 1");
+                               }
+                               
+                               if(typeList[0].getName().equals("boolean")){
+                                       booleanMethods.add(method);
+                               }
+                       }
+               }
+               
+               return booleanMethods;
+       }
+}
similarity index 95%
rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportWizardPage.java
rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbExportDestinationWizardPage.java
index c968e3231bbd10f028d72e7b62f47219cdfb4cbc..88895ebeb0cf23e374819182c4b6eabf99411004 100644 (file)
@@ -33,12 +33,12 @@ import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
  * @created 15.06.2009
  * @version 1.0
  */
-public class JaxbExportWizardPage extends WizardPage{
+public class JaxbExportDestinationWizardPage extends WizardPage{
 
        public static final String DATE_FORMAT_NOW = "yyyyMMdd-HHmm";
        
        private static final Logger logger = Logger
-                       .getLogger(JaxbExportWizardPage.class);
+                       .getLogger(JaxbExportDestinationWizardPage.class);
        private DirectoryDialog folderDialog;
        private Text text_exportFileName;
 
@@ -49,7 +49,7 @@ public class JaxbExportWizardPage extends WizardPage{
         * @param pageName
         * @param selection
         */
-       protected JaxbExportWizardPage(String pageName) {
+       protected JaxbExportDestinationWizardPage(String pageName) {
                super(pageName);
                this.setTitle("JAXB Export");
                
index fe387c35fb8a323283edd0db828bb6507a738564..a15d8b7215462538ac15a3c4764a1cd6ee48b2ce 100644 (file)
@@ -17,7 +17,6 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IWorkbench;
 
 import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;
-import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -25,33 +24,36 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 15.06.2009
  * @version 1.0
  */
-public class JaxbExportWizard extends AbstractExportWizard {
+public class JaxbExportWizard extends AbstractExportWizard<JaxbExportConfigurator> {
        private static final Logger logger = Logger
                        .getLogger(JaxbExportWizard.class);
 
        public final String JAXB_EXPORT = "JAXB_EXPORT";
 
-       private JaxbExportWizardPage page;
+       private JaxbExportDestinationWizardPage page;
+
+       private JaxbExportConfigurator configurator;
 
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+        */
+       public void init(IWorkbench workbench, IStructuredSelection selection) {
+               this.setWindowTitle("JAXB Export");
+               this.configurator = JaxbExportConfigurator.NewInstance(null, null);
+       }
+       
        /* (non-Javadoc)
         * @see org.eclipse.jface.wizard.Wizard#performFinish()
         */
        @Override
        public boolean performFinish() {
                
-               String url = page.getFolderText() + File.pathSeparator + page.getExportFileName();
+               String urlString = page.getFolderText() + File.pathSeparator + page.getExportFileName();
                
-               JaxbExportConfigurator configurator = JaxbExportConfigurator.NewInstance(CdmDataSourceRepository.getDefault().getCurrentDataSource(), url);
+               configurator.setDestination(urlString);
                configurator.setCdmAppController(CdmStore.getApplicationController());
                
-               return export(configurator);
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
-        */
-       public void init(IWorkbench workbench, IStructuredSelection selection) {
-               this.setWindowTitle("JAXB Export");
+               return doExport(configurator);
        }
 
        /* (non-Javadoc)
@@ -60,12 +62,18 @@ public class JaxbExportWizard extends AbstractExportWizard {
        @Override
        public void addPages() {
                super.addPages();
-               
-               page = new JaxbExportWizardPage(JAXB_EXPORT);
-               
+                               
+               page = new JaxbExportDestinationWizardPage(JAXB_EXPORT);
                addPage(page);
        }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.io.AbstractExportWizard#getConfigurator()
+        */
+       @Override
+       public JaxbExportConfigurator getConfigurator() {
+               return configurator;
+       }
        
 
 }
similarity index 69%
rename from taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/BerlinModelExportWizardPage.java
rename to taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbImportSourceWizardPage.java
index dfa3d5d8282f7cac58fc249bcac6d26f250406a1..6cd9448f111d4a5e717482bf463b12e23d31440c 100644 (file)
@@ -16,25 +16,21 @@ import org.eclipse.swt.widgets.Composite;
 
 /**
  * @author n.hoffmann
- * @created 23.06.2009
+ * @created 24.06.2009
  * @version 1.0
  */
-public class BerlinModelExportWizardPage extends WizardPage {
-
-
-       private static final Logger logger = Logger
-                       .getLogger(BerlinModelExportWizardPage.class);
-
+public class JaxbImportSourceWizardPage extends WizardPage {
        /**
         * @param pageName
         */
-       protected BerlinModelExportWizardPage(String pageName) {
+       protected JaxbImportSourceWizardPage(String pageName) {
                super(pageName);
-               this.setTitle("Berlin Model Export");
-               
-               this.setDescription("Exports the contents of the currently selected database into a Berlin Model database");
+               // TODO Auto-generated constructor stub
        }
-       
+
+       private static final Logger logger = Logger
+                       .getLogger(JaxbImportSourceWizardPage.class);
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
         */
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LanguageUtil.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/LanguageUtil.java
deleted file mode 100644 (file)
index b2e9250..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// $Id$\r
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.taxeditor.model;\r
-\r
-import eu.etaxonomy.cdm.model.common.Language;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 03.04.2009\r
- * @version 1.0\r
- */\r
-public class LanguageUtil {\r
-       /**\r
-        * @param language\r
-        * @return\r
-        */\r
-       public static String getDescription(Language language) {\r
-               return language.getDescription();\r
-       }\r
-}\r
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ReferenceUtil.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/ReferenceUtil.java
deleted file mode 100644 (file)
index cdb32f6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// $Id$\r
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.taxeditor.model;\r
-\r
-import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
-import eu.etaxonomy.cdm.model.reference.Generic;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 02.04.2009\r
- * @version 1.0\r
- */\r
-public class ReferenceUtil {\r
-       /**\r
-        * Returns the entity's citation. If none exists, gives the\r
-        * entity a Generic citation.\r
-        *  \r
-        * @param entity \r
-        * @return\r
-        */\r
-       public static ReferenceBase<?> getOrCreateCitation(ReferencedEntityBase entity) {\r
-               ReferenceBase<?> citation = entity.getCitation();\r
-               if (citation == null) {\r
-                       citation = Generic.NewInstance();\r
-                       entity.setCitation(citation);\r
-               }\r
-               return citation;\r
-       }\r
-}\r
index 674eacd246df31876685c2ddf3c79ee5dc0047dc..e9c1f0727eea3624d8b358c086326530b9e039d9 100644 (file)
@@ -27,6 +27,8 @@ import org.eclipse.ui.editors.text.EditorsUI;
  * @author n.hoffmann
  * @created 18.03.2009
  * @version 1.0
+ * 
+ * @deprecated migrate to org.eclipse.ui.themes or at least handle this a little bit more eclipse like
  */
 public class Resources {
        
@@ -90,12 +92,6 @@ public class Resources {
        public static final String COLOR_COMPOSITE_SELECTED = "color_list_selection";
        public static final String COLOR_LIST_BACKGROUND = "color_list_background";
        
-       /* ***************************************************************************************
-       PREFERENCES
-       ************************************************************************************** */
-       public static final String FEATURE_PREFERENCE = "feature_preference";
-       public static final String RANK_PREFERENCE = "rank_preference";
-
 
        /***************************************************************************
         * FONT REGISTRY
index 1fc4a53e1ff2ef7dd43df46c98b4123b368cd657..5979372c3d7f4adaec5333709c2c45dd84781771 100644 (file)
@@ -10,6 +10,7 @@
 
 package eu.etaxonomy.taxeditor.preference;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Set;
@@ -30,6 +31,7 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
 
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 
@@ -38,14 +40,15 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
  * @created 12.06.2009
  * @version 1.0
  */
-public abstract class AbstractMenuPreferences extends PreferencePage{
+public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends PreferencePage implements
+               IWorkbenchPreferencePage{
 
        private Button toggleButton;
-       protected HashMap<DefinedTermBase, Button> menuButtons;
+       protected HashMap<DefinedTermBase<T>, Button> menuButtons;
        
-       protected Set<?> vocabulary;
+       protected Set<T> vocabulary;
        
-       private List preferedTerms;
+       private List<T> preferedTerms;
        
        protected CheckboxTableViewer tableViewer;
        
@@ -59,10 +62,10 @@ public abstract class AbstractMenuPreferences extends PreferencePage{
         * @param title the title of the page
         * @param description describing text for the preference page
         */
-       public AbstractMenuPreferences(Set<?> initialVocabulary, List preferedTerms, String title, String description) {
+       public AbstractMenuPreferences(Set<T> initialVocabulary, String title, String description) {
                super(title);
                vocabulary = initialVocabulary;
-               this.preferedTerms = preferedTerms;
+               preferedTerms = PreferencesUtil.getPreferredTerms(initialVocabulary);
                setDescription(description);
        }
 
@@ -117,12 +120,16 @@ public abstract class AbstractMenuPreferences extends PreferencePage{
 
 
        /**
+        * Default implementation 
+        * 
         * @param buttonContainer
         */
-       protected abstract void createButtons(Composite buttonContainer);
+       protected void createButtons(Composite buttonContainer){
+               // implement in client
+       }
 
        public void init(IWorkbench workbench) {
-               setPreferenceStore(PreferencesUtil.getPrefStore());
+               setPreferenceStore(PreferencesUtil.getPreferenceStore());
        }
 
        /*
@@ -152,6 +159,8 @@ public abstract class AbstractMenuPreferences extends PreferencePage{
                
        };
        
+       
+       
        /**
         * 
         * @author n.hoffmann
@@ -181,6 +190,21 @@ public abstract class AbstractMenuPreferences extends PreferencePage{
         */
        public CheckboxTableViewer getTableViewer() {
                return tableViewer;
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.preference.PreferencePage#performOk()
+        */
+       @Override
+       public boolean performOk() {
+               List<T> preferredTerms = new ArrayList<T>();
+               for (Object element : getTableViewer().getCheckedElements()){
+                       preferredTerms.add((T) element);
+               }
+               
+               PreferencesUtil.setPreferredTerms(preferredTerms, this.vocabulary);
+               
+               return true;
        }       
        
 }
\ No newline at end of file
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/DistributionStatusMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/DistributionStatusMenuPreferences.java
new file mode 100644 (file)
index 0000000..0037b88
--- /dev/null
@@ -0,0 +1,37 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.preference;
+
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.taxeditor.store.VocabularyStore;
+
+/**
+ * @author n.hoffmann
+ * @created 25.06.2009
+ * @version 1.0
+ */
+public class DistributionStatusMenuPreferences extends AbstractMenuPreferences<PresenceAbsenceTermBase<PresenceAbsenceTermBase<?>>> implements
+               IWorkbenchPreferencePage {
+
+
+       /**
+        * @param initialVocabulary
+        * @param preferedTerms
+        * @param title
+        * @param description
+        */
+       public DistributionStatusMenuPreferences() {
+               super(VocabularyStore.getPresenceAbsenceTerms(), "Distribution Status Preferences", "Choose which distribution states should be shown.");
+       }
+       
+}
index 899a1128b411ba6cadffd918b0d3276b7e98fc85..5945341bebe220e3cc416843d3ab0c7dd9d71ef3 100644 (file)
@@ -8,9 +8,6 @@
 */\r
 package eu.etaxonomy.taxeditor.preference;\r
 \r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
 import org.eclipse.jface.wizard.WizardDialog;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.events.MouseAdapter;\r
@@ -18,12 +15,11 @@ import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.layout.GridData;\r
 import org.eclipse.swt.widgets.Button;\r
 import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.ui.IWorkbenchPreferencePage;\r
 \r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.taxeditor.preference.wizards.FeatureWizard;\r
-import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -31,8 +27,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @version 1.0\r
  * @author n.hoffmann\r
  */\r
-public class FeatureMenuPreferences extends AbstractMenuPreferences implements\r
-               IWorkbenchPreferencePage {\r
+public class FeatureMenuPreferences extends AbstractMenuPreferences<Feature> {\r
 \r
        public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.feature";\r
        private Button newButton;\r
@@ -40,22 +35,7 @@ public class FeatureMenuPreferences extends AbstractMenuPreferences implements
        private Button removeButton;\r
        \r
        public FeatureMenuPreferences() {\r
-               super(CdmStore.getFeatures(), PreferencesUtil.getPreferredFeatures(), "Feature Preferences", "Choose which features you would like to use for descriptive elements.");\r
-       }\r
-\r
-       \r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.preference.PreferencePage#performOk()\r
-        */\r
-       public boolean performOk() {\r
-               List<Feature> preferredFeatures = new ArrayList<Feature>();\r
-               for (Object element : getTableViewer().getCheckedElements()){\r
-                       preferredFeatures.add((Feature) element);\r
-               }\r
-               \r
-               PreferencesUtil.setPreferredFeatures(preferredFeatures);\r
-               \r
-               return true;\r
+               super(VocabularyStore.getFeatures(), "Feature Preferences", "Choose which features you would like to use for descriptive elements.");\r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -79,7 +59,7 @@ public class FeatureMenuPreferences extends AbstractMenuPreferences implements
                                WizardDialog dialog = new WizardDialog(StoreUtil.getShell(), wizard);\r
                            dialog.open();\r
                            \r
-                           tableViewer.setInput(CdmStore.getFeatures());\r
+                           tableViewer.setInput(VocabularyStore.getFeatures());\r
                        }\r
                        \r
                });\r
index ead719f50b1d424535e38ea6d099d784a9a824c7..83cb5d5656bd60fe3ee66cf5afcde7fb568ada61 100644 (file)
@@ -85,7 +85,7 @@ public class InitializeDbPreferences extends PreferencePage implements
         * Initialize the preference page\r
         */\r
        public void init(IWorkbench workbench) {\r
-               setPreferenceStore(PreferencesUtil.getPrefStore());\r
+               setPreferenceStore(PreferencesUtil.getPreferenceStore());\r
        }\r
        \r
        @Override\r
@@ -100,7 +100,7 @@ public class InitializeDbPreferences extends PreferencePage implements
                boolean doReinitialize = !(btnInit.getSelection());\r
 //             boolean doInitTestdata = btnTestData.getSelection();\r
                \r
-               PreferencesUtil.getPrefStore().setValue(Resources.INITIALIZED, doReinitialize);\r
+               PreferencesUtil.getPreferenceStore().setValue(Resources.INITIALIZED, doReinitialize);\r
 //             UiUtil.getPrefStore().setValue(ITaxEditorConstants.INITIALIZE_W_TESTDATA, doInitTestdata);              \r
                return true;\r
        }\r
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NameRelationshipTypeMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NameRelationshipTypeMenuPreferences.java
new file mode 100644 (file)
index 0000000..8246762
--- /dev/null
@@ -0,0 +1,31 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.preference;
+
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.taxeditor.store.VocabularyStore;
+
+/**
+ * @author n.hoffmann
+ * @created 25.06.2009
+ * @version 1.0
+ */
+public class NameRelationshipTypeMenuPreferences extends
+               AbstractMenuPreferences<NameRelationshipType> {
+
+       
+       public NameRelationshipTypeMenuPreferences() {
+               super(VocabularyStore.getNameRelationshipTypes(), 
+                               "Name relationship types", 
+                               "Configure name relationship types");
+               
+       }
+}
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalStatusTypeMenuPreferences.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NomenclaturalStatusTypeMenuPreferences.java
new file mode 100644 (file)
index 0000000..84e3e2e
--- /dev/null
@@ -0,0 +1,30 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.preference;
+
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.taxeditor.store.VocabularyStore;
+
+/**
+ * @author n.hoffmann
+ * @created 25.06.2009
+ * @version 1.0
+ */
+public class NomenclaturalStatusTypeMenuPreferences extends
+               AbstractMenuPreferences<NomenclaturalStatusType> {
+
+       public NomenclaturalStatusTypeMenuPreferences() {
+               super(VocabularyStore.getNomenclaturalStatusTypes(), 
+                               "Nomenlcatural Status Type Preferences", 
+                               "Configure nomenclatural status types");
+       }
+       
+}
index 36f7d8e6cfb2d82e2e2b811f8bcd3b258ad2b4cb..3a0ee0487d454160e1cd0a39c1f53428dad1fc69 100644 (file)
@@ -11,51 +11,63 @@ package eu.etaxonomy.taxeditor.preference;
 \r
 import java.util.ArrayList;\r
 import java.util.List;\r
+import java.util.Set;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.eclipse.jface.preference.IPreferenceStore;\r
-import org.eclipse.ui.editors.text.EditorsUI;\r
-import org.eclipse.ui.texteditor.SourceViewerDecorationSupport;\r
 \r
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
 import eu.etaxonomy.taxeditor.model.Resources;\r
-import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;\r
 \r
 /**\r
  * @author p.ciardelli\r
  * @created 05.12.2008\r
  * @version 1.0\r
+ * @author n.hoffmann\r
  */\r
 public class PreferencesUtil {\r
        private static final Logger logger = Logger\r
                        .getLogger(PreferencesUtil.class);\r
 \r
-\r
-       private static final String FEATURE_PREFERENCE = "FEATURE_PREFERENCE";\r
-\r
-\r
-       private static SourceViewerDecorationSupport decorationSupport;\r
-\r
        /**\r
         * \r
         * @return\r
         */\r
-       public static IPreferenceStore getPrefStore() {\r
+       public static IPreferenceStore getPreferenceStore() {\r
                return TaxeditorStorePlugin.getDefault().getPreferenceStore();\r
        }\r
        \r
+       /**\r
+        * \r
+        * @return\r
+        */\r
+       private static String getNameCodePreference() {\r
+               try{\r
+                       return getPreferenceStore().getString(Resources.CODE_PREFERENCE);\r
+               }catch(NullPointerException e){\r
+                       logger.warn("PreferenceStore was not available. That is OK if you are running a unit test. Setting ICBN as default code.");\r
+                       return Resources.CODE_PREFERENCE_ICBN;\r
+               }\r
+       }\r
+       \r
        /**\r
         * \r
         * @param preferredCode\r
         */\r
        public static void setNomenclaturalCode(String preferredCode) {\r
-               getPrefStore().setValue(Resources.CODE_PREFERENCE, preferredCode);\r
+               getPreferenceStore().setValue(Resources.CODE_PREFERENCE, preferredCode);\r
        }\r
        \r
        /**\r
@@ -95,110 +107,7 @@ public class PreferencesUtil {
                return null;\r
        }\r
        \r
-       /**\r
-        * \r
-        * @return\r
-        */\r
-       private static String getNameCodePreference() {\r
-               try{\r
-                       return getPrefStore().getString(Resources.CODE_PREFERENCE);\r
-               }catch(NullPointerException e){\r
-                       logger.warn("PreferenceStore was not available. That is OK if you are running a unit test. Setting ICBN as default code.");\r
-                       return Resources.CODE_PREFERENCE_ICBN;\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Returns a <code>Set</code> of the <code>Feature</code>s that the user has chosen\r
-        * to have shown in preferences.\r
-        * </p>\r
-        * <p>\r
-        * <code>Feature</code>s are shown unless otherwise specified.\r
-        * </p>\r
-        * @return\r
-        */\r
-       public static List<Feature> getPreferredFeatures() {\r
-               \r
-               ArrayList<Feature> preferedFeatures = new ArrayList<Feature>();\r
-               \r
-               for (Feature feature : CdmStore.getFeatures()) {\r
-                       if(getPrefStore().getBoolean(getPreferenceKey(feature))){\r
-                               preferedFeatures.add(feature);\r
-                       }\r
-               }\r
-               \r
-               return preferedFeatures;\r
-       }\r
-\r
-       /**\r
-        * \r
-        * @param preferredFeatureList\r
-        */\r
-       public static void setPreferredFeatures(List<Feature> preferredFeatureList) {\r
-               \r
-               for (Feature feature : CdmStore.getFeatures()) {\r
-                       getPrefStore().setValue(getPreferenceKey(feature), preferredFeatureList.contains(feature));\r
-               }\r
-       }\r
-       \r
-       /**\r
-        * Construct a unique key using <code>Feature</code>'s <code>Uuid</code>\r
-        * \r
-        * @param feature\r
-        * @return\r
-        */\r
-       private static String getPreferenceKey(Feature feature) {\r
-               return FEATURE_PREFERENCE \r
-                               . concat(".")\r
-                               . concat(feature.getUuid().toString());\r
-       }\r
-\r
-       /**\r
-        * Returns a <code>Set</code> of the <code>Rank</code>s that the user has chosen\r
-        * to have shown in preferences.\r
-        * </p>\r
-        * <p>\r
-        * <code>Rank</code>s are shown unless otherwise specified.\r
-        * </p>\r
-        * @return\r
-        */\r
-       public static List<Rank> getPreferredRanks() {\r
-               \r
-               ArrayList<Rank> preferedRanks = new ArrayList<Rank>();\r
-               \r
-               for (Rank rank : CdmStore.getRanks()) {\r
-                       if(getPrefStore().getBoolean(getPreferenceKey(rank))){\r
-                               preferedRanks.add(rank);\r
-                       }\r
-               }\r
-               \r
-               return preferedRanks;\r
-       }\r
        \r
-       /**\r
-        * \r
-        * @param preferedRankList\r
-        */\r
-       public static void setPreferredRanks(List<Rank> preferedRankList) {\r
-               for (Rank rank : CdmStore.getRanks()) {\r
-                       getPrefStore().setValue(getPreferenceKey(rank), preferedRankList.contains(rank));\r
-               }\r
-       }\r
-\r
-\r
-\r
-       /**\r
-        * Construct a unique key using <code>Rank</code>'s <code>Uuid</code>\r
-        * \r
-        * @param feature\r
-        * @return\r
-        */\r
-       private static String getPreferenceKey(Rank rank) {\r
-               return Resources.RANK_PREFERENCE \r
-                               . concat(".")\r
-                               . concat(rank.getUuid().toString());\r
-       }\r
-\r
        /**\r
         * Returns a new name object that conforms to the nomenclatural\r
         * code specified in user preferences. \r
@@ -222,25 +131,61 @@ public class PreferencesUtil {
        }\r
 \r
        /**\r
-        * Appends the code (i.e. ICBN or ICZN) specified in the user preferences\r
-        * to a string. The result is separated by a period: "<code>key.ICBN</code>".\r
+        * Generic method to get term preferences for a term vocabulary\r
         * \r
-        * @param key\r
+        * @param <T>\r
+        * @param initialFeatures\r
         * @return\r
         */\r
-       public static String concatCodeMessageSuffix(String key) {\r
-               String code = getNameCodePreference();\r
-               return key + "." + code;\r
+       public static <T extends DefinedTermBase> List<T> getPreferredTerms(Set<T> initialFeatures){\r
+               List<T> preferredTerms = new ArrayList<T>();\r
+               \r
+               for (T term : initialFeatures){\r
+                       if(getPreferenceStore().getBoolean(getPreferenceKey(term))){\r
+                               preferredTerms.add(term);\r
+                       }\r
+               }\r
+               \r
+               return preferredTerms;          \r
        }\r
+       \r
+       /** @return a <code>List</code> containing user preferred <code>Feature</code> terms */\r
+       public static List<Feature> getPreferredFeatures() { return getPreferredTerms(VocabularyStore.getFeatures());}\r
 \r
+       /** @return a <code>List</code> containing user preferred <code>Rank</code> terms */\r
+       public static List<Rank> getPreferredRanks() { return getPreferredTerms(VocabularyStore.getRanks());}\r
+       \r
+       /** @return a <code>List</code> containing user preferred  <code>PresenceAbsenceTermBase</code> terms */\r
+       public static List<PresenceAbsenceTermBase<PresenceAbsenceTermBase<?>>> getPreferredPresenceAbsenceTerms(){ return getPreferredTerms(VocabularyStore.getPresenceAbsenceTerms());}\r
+       \r
+       /** @return a <code>List</code> containing user preferred  <code>NomenclaturalStatusType</code> terms */\r
+       public static List<NomenclaturalStatusType> getPreferredNomenclaturalStatusTypes(){     return getPreferredTerms(VocabularyStore.getNomenclaturalStatusTypes());}\r
+       \r
+       /** @return a <code>List</code> containing user preferred  <code>NameRelationshipType</code> terms */\r
+       public static List<NameRelationshipType> getPreferredNameRelationshipTypes(){ return getPreferredTerms(VocabularyStore.getNameRelationshipTypes());}\r
+       \r
+       \r
        /**\r
+        * Generic method to set term preferences\r
         * \r
-        * @return\r
+        * @param preferredTerms\r
+        * @param initalTerms\r
         */\r
-       public static SourceViewerDecorationSupport getDecorationSupport() {\r
-               if (decorationSupport == null) {\r
-                       decorationSupport = new SourceViewerDecorationSupport(null, null, null, EditorsUI.getSharedTextColors());\r
+       public static <T extends DefinedTermBase> void setPreferredTerms(List<T> preferredTerms, Set<T> initalTerms){\r
+               for(TermBase term : initalTerms){\r
+                       getPreferenceStore().setValue(getPreferenceKey(term), preferredTerms.contains(term));\r
                }\r
-               return decorationSupport;\r
+       }\r
+       \r
+       /**\r
+        * Construct a unique key using the terms uuid\r
+        * \r
+        * @param term\r
+        * @return\r
+        */\r
+       private static String getPreferenceKey(TermBase term) {\r
+               return term.getClass().getName()\r
+                               . concat(".")\r
+                               . concat(term.getUuid().toString());\r
        }\r
 }\r
index 58b12d421ca418b85b212c3e008200db39ae7259..475078656540d858981db550f4284ac3cb743641 100644 (file)
@@ -8,14 +8,10 @@
 */\r
 package eu.etaxonomy.taxeditor.preference;\r
 \r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.IWorkbenchPreferencePage;\r
 \r
 import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
 \r
 /**\r
  * Allows the user to choose which <code>Rank</code>s to display in the \r
@@ -26,35 +22,15 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @version 1.0\r
  * @author n.hoffmann\r
  */\r
-public class RankMenuPreferences extends AbstractMenuPreferences implements\r
+public class RankMenuPreferences extends AbstractMenuPreferences<Rank> implements\r
                IWorkbenchPreferencePage {\r
 \r
        public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks";\r
 \r
        public RankMenuPreferences() {\r
-               super(CdmStore.getRanks(), PreferencesUtil.getPreferredRanks(), "Rank Preferences", "Choose which ranks to display in the property sheet drop-down menu.");\r
-       }\r
-       \r
-       /* (non-Javadoc)\r
-        * @see org.eclipse.jface.preference.PreferencePage#performOk()\r
-        */\r
-       public boolean performOk() {\r
-               \r
-               List<Rank> preferredRanks = new ArrayList<Rank>();\r
-               for (Object element : getTableViewer().getCheckedElements()){\r
-                       preferredRanks.add((Rank) element);\r
-               }\r
-               \r
-               PreferencesUtil.setPreferredRanks(preferredRanks);\r
-               \r
-               return true;\r
+               super(VocabularyStore.getRanks(), \r
+                               "Rank Preferences", \r
+                               "Choose which ranks to display in the property sheet drop-down menu.");\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createButtons(org.eclipse.swt.widgets.Composite)\r
-        */\r
-       @Override\r
-       protected void createButtons(Composite buttonContainer) {\r
-               // not used\r
-       }\r
 }\r
index 2f38892db51f07f74ee752d0521722313b4012a9..11c22774db05ac49e54aab5a799e63c4604754f8 100644 (file)
@@ -14,8 +14,10 @@ import org.apache.log4j.Logger;
 import org.eclipse.jface.wizard.Wizard;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.model.common.VocabularyEnum;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.VocabularyStore;
 
 /**
  * @author n.hoffmann
@@ -62,9 +64,9 @@ public class FeatureWizard extends Wizard {
                ConversationHolder conversation = CdmStore.NewTransactionalConversation();
                
                if(editMode){
-                       CdmStore.updateFeature(feature);
+                       VocabularyStore.updateVocabulary(VocabularyEnum.Feature);
                }else{
-                       CdmStore.saveFeature(feature);
+                       VocabularyStore.saveTerm(feature, VocabularyEnum.Feature);
                }
                
                conversation.commit(true);
index 083de428acb2ba2d3477c8e58229a4b595cc5d6f..708e65c6542af0c0138a91bb8a76bdc0d72ced8e 100644 (file)
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.store;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Set;
-import java.util.SortedSet;
 import java.util.UUID;
 
 import org.apache.log4j.Logger;
@@ -25,22 +23,12 @@ import eu.etaxonomy.cdm.api.service.ILocationService;
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.IReferenceService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
-import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.config.impl.TaxonServiceConfiguratorImpl;
 import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;
-import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
-import eu.etaxonomy.cdm.model.name.Rank;
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.Article;
 import eu.etaxonomy.cdm.model.reference.Book;
@@ -48,7 +36,6 @@ import eu.etaxonomy.cdm.model.reference.BookSection;
 import eu.etaxonomy.cdm.model.reference.Generic;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
@@ -132,51 +119,16 @@ public class CdmStore{
                }
        }
 
-       public Set<TaxonRelationshipType> getConceptRelationshipTypes() {
-               Set<TaxonRelationshipType> conceptRelationshipTypes = getTaxonRelationshipTypes().getTerms();
-               // remove these two relations as they are considered standard taxon relations
-               conceptRelationshipTypes.remove(TaxonRelationshipType.MISAPPLIED_NAME_FOR());
-               conceptRelationshipTypes.remove(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN());
-       
-               return conceptRelationshipTypes;
-       }
 
        public ReferenceBase<?> getDefaultSec() {
                // TODO why is this returning null? and of course, replace w the real deal
                return applicationController.getReferenceService().getReferenceByUuid(
                                UUID.fromString("f3593c18-a8d2-4e51-bdad-0befbf8fb2d1"));
        }
-
-       private TermVocabulary<Feature> getFeaturesInternal() {
-               return applicationController.getTermService().getVocabulary(VocabularyEnum.Feature);
-       }
        
-       public static SortedSet<Feature> getFeatures() {
-               return getDefault().getFeaturesInternal().getTermsOrderedByLabels(getDefaultLanguage());
-       }
-
-       public SortedSet<NameRelationshipType> getNameRelationshipTypes() {
-               return applicationController.getTermService().getVocabulary(VocabularyEnum.NameRelationshipType).getTermsOrderedByLabels(Language.DEFAULT());
-       }
-
-       public TermVocabulary<NomenclaturalStatusType> getNomenclaturalStatusTypesInternal() {
-               return applicationController.getTermService().getVocabulary(VocabularyEnum.NomenclaturalStatusType);
-       }
-       
-       public static Set<NomenclaturalStatusType> getNomenclaturalStatusTypes(){
-               // TODO sort types
-               return getDefault().getNomenclaturalStatusTypesInternal().getTerms();
-       }
-       
-       private OrderedTermVocabulary<Rank> getRanksInternal(){
-               TermVocabulary<Rank> vocabulary = applicationController.getTermService().getVocabulary(VocabularyEnum.Rank);
-               return HibernateProxyHelper.deproxy(vocabulary, OrderedTermVocabulary.class);
-       }
-       
-       public static SortedSet<Rank> getRanks(){
-               return getDefault().getRanksInternal().getOrderedTerms(null);
-       }
-
+       /**
+        * @deprecated use taxonomic tree instead
+        */
        public List<Taxon> getRootTaxa() {
                boolean onlyWithChildren = false;
                boolean withMisapplications = true;
@@ -191,26 +143,7 @@ public class CdmStore{
        public List<TaxonomicTree> getTaxonomicTrees() {
                return applicationController.getTaxonService().getAllTaxonomicTrees(10000, 0);
        }
-
-       public OrderedTermVocabulary<TaxonRelationshipType> getTaxonRelationshipTypes() {
-               TermVocabulary vocabulary = HibernateProxyHelper.deproxy
-                               (applicationController.getTermService().getVocabulary(VocabularyEnum.TaxonRelationshipType), TermVocabulary.class);
-               return (OrderedTermVocabulary<TaxonRelationshipType>) vocabulary;
-       }
-       
-       public TermVocabulary<SpecimenTypeDesignationStatus> getSpecimenTypeDesignationStatus() {
-               return applicationController.getTermService().getVocabulary(VocabularyEnum.SpecimenTypeDesignationStatus);
-       }
-       
-
-       public UUID saveTaxon(Taxon taxon) {
-               return applicationController.getTaxonService().save(taxon);
-       }
-
-       public void setApplicationController(
-                       CdmApplicationController applicationController) {
-               this.applicationController = applicationController;
-       }
+               
        
        private CdmApplicationController getApplicationControllerInternal(){
                return applicationController;
@@ -262,25 +195,20 @@ public class CdmStore{
                return getDefault().getGlobalReadOnlyConversation();
        }
        
-       public static ITaxonService getTaxonService(){
-               return getDefault().getApplicationController().getTaxonService();
-       }
+
+       /*
+        * EXPOSING SERVICES
+        */
        
-       public static INameService getNameService(){
-               return getDefault().getApplicationController().getNameService();
-       }
+       public static ITaxonService getTaxonService(){ return getDefault().getApplicationControllerInternal().getTaxonService();}
        
-       public static IReferenceService getReferenceService(){
-               return getDefault().getApplicationController().getReferenceService();
-       }
+       public static INameService getNameService(){ return getDefault().getApplicationControllerInternal().getNameService();}
        
-       public static ILocationService getLocationService(){
-               return getDefault().getApplicationController().getLocationService();
-       }
+       public static IReferenceService getReferenceService(){ return getDefault().getApplicationControllerInternal().getReferenceService();}
+       
+       public static ILocationService getLocationService(){ return getDefault().getApplicationControllerInternal().getLocationService();}
 
-       public static ProviderManager getAuthenticationManager() {
-               return getDefault().getApplicationController().getAuthenticationManager();
-       }
+       public static ProviderManager getAuthenticationManager() { return getDefault().getApplicationControllerInternal().getAuthenticationManager();}
 
        
        /**
@@ -347,21 +275,6 @@ public class CdmStore{
                }
                return resultsList;
        }
-
-
-       public static List<Language> getLanguages() {
-               ITermService termService = getDefault().getApplicationController().getTermService();
-               ArrayList<Language> languages = new ArrayList<Language>();
-               for (Language language : termService.getLanguageVocabulary()) {
-                       languages.add(language);
-               }
-               
-               // TODO sort languages
-               
-//             languages.add(Language.ENGLISH());
-//             languages.add(Language.GERMAN());
-               return languages;
-       }
        
        /**
         * FIXME mock
@@ -372,13 +285,6 @@ public class CdmStore{
                return Language.ENGLISH();
        }
 
-       /**
-        * @return
-        */
-       private static String getApplicationContextBean() {
-               return DEFAULT_APPLICATION_CONTEXT;
-       }
-
        /**
         * @return
         */
@@ -394,25 +300,4 @@ public class CdmStore{
                return nomReferenceTypeMap;
        }
 
-       /**
-        * @param feature
-        */
-       public static void saveFeature(Feature feature) {
-               TermVocabulary<Feature> vocabulary = getDefault().getFeaturesInternal();
-               
-               vocabulary.addTerm(feature);
-               
-               getDefault().getApplicationController().getTermService().saveTermVocabulary(vocabulary);
-       }
-
-       /**
-        * TODO make this more generic
-        * 
-        * @param feature
-        */
-       public static void updateFeature(Feature feature) {
-               TermVocabulary<Feature> vocabulary = getDefault().getFeaturesInternal();
-
-               getDefault().getApplicationController().getTermService().saveTermVocabulary(vocabulary);
-       }
 }
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java
new file mode 100644 (file)
index 0000000..fd81cac
--- /dev/null
@@ -0,0 +1,205 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.store;
+
+import java.util.Set;
+import java.util.SortedSet;
+
+import org.apache.log4j.Logger;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationController;
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.OrderedTermBase;
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+
+/**
+ * All vocabularies may be accessed through this store.
+ * Note: This is for internal use. When using vocabularies in the UI, try to use the preferred terms from
+ * PreferenceUtil
+ * 
+ * @author n.hoffmann
+ * @created 25.06.2009
+ * @version 1.0
+ */
+public class VocabularyStore {
+       private static final Logger logger = Logger.getLogger(VocabularyStore.class);
+       
+       /**
+        * The singleton instance
+        */
+       private static VocabularyStore instance;
+       
+       /**
+        * Retrieve the singleton instance 
+        * 
+        * @return
+        */
+       private static synchronized VocabularyStore getDefault(){
+               if(instance == null){
+                       instance = new VocabularyStore();
+               }
+               return instance;
+       }
+       
+       /**
+        * 
+        * @return
+        */
+       public static SortedSet<SpecimenTypeDesignationStatus> getSpecimenTypeDesignationStatus() {
+               SortedSet specimenTypeDesignationStatus = getDefault().getTermVocabulary(VocabularyEnum.SpecimenTypeDesignationStatus).getTermsOrderedByLabels(getDefaultLanguage());
+               return specimenTypeDesignationStatus;
+       }
+       
+       /**
+        * 
+        * @return
+        */
+       public static SortedSet<TaxonRelationshipType> getTaxonRelationshipTypes(){
+               SortedSet taxonRelationshipTypes = getDefault().getOrderedTermVocabulary(VocabularyEnum.TaxonRelationshipType).getOrderedTerms();
+               return taxonRelationshipTypes;
+       }
+       
+       /**
+        * 
+        * @return
+        */
+       public static SortedSet<TaxonRelationshipType> getConceptRelationshipTypes() {
+               SortedSet<TaxonRelationshipType> conceptRelationshipTypes = getTaxonRelationshipTypes();
+               // remove these two relations as they are considered standard taxon relations
+               conceptRelationshipTypes.remove(TaxonRelationshipType.MISAPPLIED_NAME_FOR());
+               conceptRelationshipTypes.remove(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN());
+       
+               return conceptRelationshipTypes;
+       }
+       
+       /**
+        * 
+        * @return
+        */
+       public static SortedSet<Language> getLanguages(){
+               SortedSet languages = getDefault().getTermVocabulary(VocabularyEnum.Language).getTermsOrderedByLabels(getDefaultLanguage());
+               return languages;
+       }
+       
+       /**
+        * 
+        * @return
+        */
+       public static SortedSet<Feature> getFeatures() {
+               SortedSet features = getDefault().getTermVocabulary(VocabularyEnum.Feature).getTermsOrderedByLabels(getDefaultLanguage());
+               return features;
+
+       }
+       
+       /**
+        * 
+        * @return
+        */
+       public static SortedSet<NameRelationshipType> getNameRelationshipTypes() {
+               SortedSet nameRelationshipTypes = getDefault().getTermVocabulary(VocabularyEnum.NameRelationshipType).getTermsOrderedByLabels(getDefaultLanguage());
+               return nameRelationshipTypes;
+       }
+       
+       /**
+        * 
+        * @return
+        */
+       public static Set<NomenclaturalStatusType> getNomenclaturalStatusTypes(){
+               // TODO sort types
+               Set nomenclaturalStatusTypes = getDefault().getTermVocabulary(VocabularyEnum.NomenclaturalStatusType).getTermsOrderedByLabels(getDefaultLanguage());
+               return nomenclaturalStatusTypes;
+       }
+       
+       /**
+        * Retrieve all ranks from data store.
+        * 
+        * @return
+        */
+       public static SortedSet<Rank> getRanks(){
+               SortedSet ranks = getDefault().getOrderedTermVocabulary(VocabularyEnum.Rank).getOrderedTerms();
+               return ranks;
+       }
+       
+       
+       /**
+        * Retrieve all presence and absence terms from data store.
+        *  
+        * @return
+        */
+       public static SortedSet<PresenceAbsenceTermBase<PresenceAbsenceTermBase<?>>> getPresenceAbsenceTerms() {
+               SortedSet presenceAbsenceTerms = getDefault().getTermVocabulary(VocabularyEnum.PresenceTerm).getTermsOrderedByLabels(getDefaultLanguage());
+                       presenceAbsenceTerms.addAll(getDefault().getTermVocabulary(VocabularyEnum.AbsenceTerm).getTermsOrderedByLabels(getDefaultLanguage()));
+
+               return presenceAbsenceTerms;
+       }
+       
+       /*************** save methods ******************************/
+       /**
+        * Adds a term to a vocabulary
+        * 
+        * @param feature
+        */
+       public static void saveTerm(DefinedTermBase term, VocabularyEnum vocabularyType) {
+               TermVocabulary<DefinedTermBase> vocabulary = getDefault().getTermVocabulary(vocabularyType);
+               
+               vocabulary.addTerm(term);
+               
+               getDefault().getTermService().saveTermVocabulary(vocabulary);
+       }
+       
+       /**
+        * Save a vacabulary to data store
+        * 
+        * @param feature
+        */
+       public static void updateVocabulary(VocabularyEnum vocabularyType) {
+               TermVocabulary<DefinedTermBase> vocabulary = getDefault().getTermVocabulary(vocabularyType);
+
+               getDefault().getTermService().saveTermVocabulary(vocabulary);
+       }
+       
+       
+       
+       /*************** internal methods **************************/
+       
+       private static Language getDefaultLanguage(){
+               return CdmStore.getDefaultLanguage();
+       }
+       
+       private OrderedTermVocabulary<? extends OrderedTermBase> getOrderedTermVocabulary(VocabularyEnum vocabularyType){
+               TermVocabulary<DefinedTermBase> vocabulary = getTermVocabulary(vocabularyType);         
+               return HibernateProxyHelper.deproxy(vocabulary, OrderedTermVocabulary.class);
+       }
+       
+       private TermVocabulary<DefinedTermBase> getTermVocabulary(VocabularyEnum vocabularyType){
+               return getTermService().getVocabulary(vocabularyType);
+       }
+       
+       private ITermService getTermService(){
+               return getApplicationController().getTermService();
+       }
+       
+       private CdmApplicationController getApplicationController(){
+               return CdmStore.getApplicationController();
+       }
+}
index 4479208eb90e4ffb1a61e047fd264c794714bb1c..101de028db52b88815ea2491c45d83ccafe0935e 100644 (file)
@@ -57,10 +57,8 @@ public class CdmStoreTest /*extends CdmIntegrationTest */{
        @Test
        //@DataSet("CdmStoreTest.xml")
        @Ignore
-       public void testGetRootTaxa(){
-               List<Taxon> rootTaxa = cdmStore.getRootTaxa();
-               
-               Assert.assertNotNull(rootTaxa);
+       public void testGetTaxonomicTrees(){
+
        }
        
        /**
@@ -71,7 +69,7 @@ public class CdmStoreTest /*extends CdmIntegrationTest */{
        @Ignore
        public void testGetConceptRelationshipTypes(){
                conversation.bind();
-               Set<TaxonRelationshipType> conceptRelationshipTypes = cdmStore.getConceptRelationshipTypes();
+               Set<TaxonRelationshipType> conceptRelationshipTypes = VocabularyStore.getConceptRelationshipTypes();
                Assert.assertNotNull(conceptRelationshipTypes);
        }
 }