ref #6794 change FeatureTree to TermTree
authorAndreas Müller <a.mueller@bgbm.org>
Thu, 7 Mar 2019 12:31:08 +0000 (13:31 +0100)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 19 Jul 2019 16:14:01 +0000 (18:14 +0200)
44 files changed:
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/word/out/WordExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/word/out/WordExportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/CdmIDResolver.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/DataSet.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDataSet.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDocumentBuilder.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx2013/TaxonXTreatmentExtractor.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/jaxb/FeatureTest.java
cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/out/OwlExportTest.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/package-info.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptiveDataSet.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/DescriptiveSystemRole.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Feature.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTree.java [moved from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/FeatureTree.java with 79% similarity]
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/generate/PolytomousKeyGenerator.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/term/FeatureTreeTest.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/data/FullCoverageDataGenerator.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v36_40/ReferencedObjTypeUpdater.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureTreeDao.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureTreeDaoImpl.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/PostMergeEntityListener.java
cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/DescriptionController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/FeatureTreeController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/FeatureTreeListController.java
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/FeatureTreePortalController.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DescriptiveDataSetService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureTreeServiceImpl.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IDescriptionService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IFeatureTreeService.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/INaturalLanguageGenerator.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/util/CacheUpdater.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/util/CacheUpdaterWithNewCacheStrategy.java
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/validation/batch/BatchValidationUtil.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImplTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java
cdmlib-services/src/test/java/eu/etaxonomy/cdm/test/function/TestModelUpdate.java

index d6486423a9ef363a69795684419a586e568366b9..7e09941fcd3ac135dcabee15b741b3c8607a4361 100644 (file)
@@ -21,7 +21,7 @@ import eu.etaxonomy.cdm.io.common.CdmExportBase;
 import eu.etaxonomy.cdm.io.common.mapping.out.IExportTransformer;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 
 /**
  *
@@ -44,7 +44,7 @@ public class WordExport extends CdmExportBase<WordExportConfigurator, WordExport
 
         TransactionStatus txStatus = startTransaction(true);
 
-        FeatureTree featureTree = state.getConfig().getFeatureTree();
+        TermTree featureTree = state.getConfig().getFeatureTree();
         featureTree = getFeatureTreeService().load(featureTree.getUuid());
         TermTreeNode rootNode = featureTree.getRoot();
 
index 2f64c3b80f2e99334a4f142276190cd60838e184..fc97431b0cb9c4e9ccfa70c4915fa161c72c9fed 100644 (file)
@@ -15,7 +15,7 @@ import org.apache.log4j.Logger;
 
 import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.io.common.XmlExportConfiguratorBase;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 
 
 /**
@@ -31,15 +31,15 @@ public class WordExportConfigurator extends XmlExportConfiguratorBase<WordExport
     @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(WordExportConfigurator.class);
 
-    private FeatureTree featureTree;
+    private TermTree featureTree;
 
 
-    private WordExportConfigurator(ICdmDataSource source, File destinationFolder, FeatureTree featureTree) {
+    private WordExportConfigurator(ICdmDataSource source, File destinationFolder, TermTree featureTree) {
         super(destinationFolder, source, null);
         this.featureTree = featureTree;
     }
 
-    public static WordExportConfigurator NewInstance(ICdmDataSource source, File destinationFolder, FeatureTree featureTree) {
+    public static WordExportConfigurator NewInstance(ICdmDataSource source, File destinationFolder, TermTree featureTree) {
         return new WordExportConfigurator(source, destinationFolder, featureTree);
     }
 
@@ -55,7 +55,7 @@ public class WordExportConfigurator extends XmlExportConfiguratorBase<WordExport
         };
     }
 
-    public FeatureTree getFeatureTree() {
+    public TermTree getFeatureTree() {
         return featureTree;
     }
 
index 20e59468be9bfc0a00f0105b8ab9029e5a38f6ff..2ba20986b730ee322e53b47f77eaf30a496ee036 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.reference.Reference;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 \r
 public class CdmIDResolver extends IDResolver {\r
@@ -168,7 +168,7 @@ public class CdmIDResolver extends IDResolver {
                                          return resolveObject(uuid, targetType, vocabularyService);\r
                                  } else if(DescriptionBase.class.isAssignableFrom(targetType)) {\r
                                          return resolveObject(uuid, targetType, descriptionService);\r
-                                 } else if(FeatureTree.class.isAssignableFrom(targetType)) {\r
+                                 } else if(TermTree.class.isAssignableFrom(targetType)) {\r
                                          return resolveObject(uuid, targetType, featureTreeService);\r
                                  } else if(Media.class.isAssignableFrom(targetType)) {\r
                                          return resolveObject(uuid, targetType, mediaService);\r
index 24d8144533a7a4850c656afa85d3b524a29cee02..cf5a1428ab9b0084b79508b94f3616f6ae9871b0 100644 (file)
@@ -83,7 +83,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
 import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 \r
@@ -183,9 +183,9 @@ public class DataSet implements IExportData {
 \r
     @XmlElementWrapper(name = "FeatureTrees")\r
     @XmlElements({\r
-      @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class)\r
+      @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TermTree.class)\r
     })\r
-    protected List<FeatureTree> featureTrees = new ArrayList<>();\r
+    protected List<TermTree> featureTrees = new ArrayList<>();\r
 \r
     @XmlElementWrapper(name = "PolytomousKeys")\r
     @XmlElements({\r
@@ -334,7 +334,7 @@ public class DataSet implements IExportData {
         this.references = value;\r
     }\r
 \r
-    public List<FeatureTree> getFeatureTrees() {\r
+    public List<TermTree> getFeatureTrees() {\r
         return featureTrees;\r
     }\r
 \r
@@ -356,7 +356,7 @@ public class DataSet implements IExportData {
         return taxonNodes;\r
     }\r
 \r
-    public void setFeatureTrees(List<FeatureTree> value) {\r
+    public void setFeatureTrees(List<TermTree> value) {\r
        this.featureTrees = value;\r
     }\r
 \r
index 51d53e6f0c7a659f59478962664bb6d0fddad0f3..6b7e6df9fe2da759a22ee6cd4fe34948be7dcebd 100644 (file)
@@ -39,7 +39,7 @@ import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 
 /**
  * @author a.babadshanjan
@@ -51,14 +51,10 @@ public class JaxbExport
             implements ICdmExport<JaxbExportConfigurator, JaxbExportState> {
 
     private static final long serialVersionUID = -525533131708894145L;
-
     private static final Logger logger = Logger.getLogger(JaxbExport.class);
 
     private DataSet dataSet;
 
-    /**
-     *
-     */
     public JaxbExport() {
         super();
     }
@@ -120,9 +116,7 @@ public class JaxbExport
         }
 
         commitTransaction(txStatus);
-
         return;
-
     }
 
     public static void writeToFile(File file, DataSet dataSet) throws UnsupportedEncodingException, FileNotFoundException {
@@ -164,11 +158,9 @@ public class JaxbExport
             logger.info("# User");
             List<User> users = getUserService().list(null, UserRows, 0, null, null);
 
-
             for (User user: users){
                 dataSet.addUser(HibernateProxyHelper.deproxy(user));
             }
-
         }
         if (jaxbExpConfig.isDoTermVocabularies() == true) {
             if (termVocabularyRows == 0) { termVocabularyRows = MAX_ROWS; }
@@ -176,8 +168,6 @@ public class JaxbExport
             dataSet.setTermVocabularies((List)getVocabularyService().list(null,termVocabularyRows, 0, null, null));
         }
 
-
-
         //             if (jaxbExpConfig.isDoLanguageData() == true) {
         //                     if (languageDataRows == 0) { languageDataRows = MAX_ROWS; }
         //                     logger.info("# Representation, Language String");
@@ -199,8 +189,6 @@ public class JaxbExport
             dataSet.setAgents(getAgentService().list(null,agentRows, 0,null,null));
         }
 
-
-
         if (jaxbExpConfig.getDoReferences() != IExportConfigurator.DO_REFERENCES.NONE) {
             if (referenceBaseRows == 0) { referenceBaseRows = getReferenceService().count(Reference.class); }
             logger.info("# Reference: " + referenceBaseRows);
@@ -220,8 +208,6 @@ public class JaxbExport
             dataSet.setTaxonomicNames(getNameService().list(null,taxonNameRows, 0,null,null));
         }
 
-
-
         if (jaxbExpConfig.isDoTaxa() == true) {
             if (taxonBaseRows == 0) { taxonBaseRows = getTaxonService().count(TaxonBase.class); }
             logger.info("# TaxonBase: " + taxonBaseRows);
@@ -265,8 +251,6 @@ public class JaxbExport
             dataSet.addTypeDesignations(getNameService().getAllTypeDesignations(MAX_ROWS, 0));
         }
 
-
-
         if (jaxbExpConfig.isDoMedia() == true) {
             if (mediaRows == 0) { mediaRows = MAX_ROWS; }
             logger.info("# Media");
@@ -278,21 +262,19 @@ public class JaxbExport
         if (jaxbExpConfig.isDoFeatureData() == true) {
             if (featureDataRows == 0) { featureDataRows = MAX_ROWS; }
             logger.info("# Feature Tree, Feature Node");
-            List<FeatureTree> featureTrees = new ArrayList<FeatureTree>();
+            List<TermTree> featureTrees = new ArrayList<>();
             featureTrees= getFeatureTreeService().list(null,featureDataRows, 0, null, null);
-            List<FeatureTree> taxTreesdeproxy = new ArrayList<FeatureTree>();
-            for (FeatureTree featureTree : featureTrees){
+            List<TermTree> taxTreesdeproxy = new ArrayList<>();
+            for (TermTree featureTree : featureTrees){
                 HibernateProxyHelper.deproxy(featureTree);
                 taxTreesdeproxy.add(featureTree);
             }
-
             dataSet.setFeatureTrees(getFeatureTreeService().list(null,null,null,null,null));
         }
         if (jaxbExpConfig.isDoClassificationData() == true) {
             if (classificationDataRows == 0) { classificationDataRows = MAX_ROWS; }
             logger.info("# Classification");
 
-
             List<Classification> taxTrees = new ArrayList<Classification>();
             taxTrees= getClassificationService().list(null,classificationDataRows, 0, null, null);
 
@@ -301,9 +283,9 @@ public class JaxbExport
                 HibernateProxyHelper.deproxy(taxTree);
                 taxTreesdeproxy.add(taxTree);
             }
-            List<TaxonNode> taxNodes = new ArrayList<TaxonNode>();
+            List<TaxonNode> taxNodes = new ArrayList<>();
             taxNodes= getClassificationService().getAllNodes();
-            List<TaxonNode> taxNodesdeproxy = new ArrayList<TaxonNode>();
+            List<TaxonNode> taxNodesdeproxy = new ArrayList<>();
             for (TaxonNode taxNode : taxNodes){
                 HibernateProxyHelper.deproxy(taxNode);
                 taxNodesdeproxy.add(taxNode);
@@ -316,7 +298,6 @@ public class JaxbExport
         dataSet.setLanguageStrings(null);
     }
 
-
     @Override
     protected boolean doCheck(JaxbExportState state) {
         boolean result = true;
@@ -324,12 +305,8 @@ public class JaxbExport
         return result;
     }
 
-
     @Override
     protected boolean isIgnore(JaxbExportState state) {
         return false;
     }
-
-
-
 }
index e3d729c4bc1f163316673647cfbdf5e5bdbb7cb4..2262ef50918fe9ae2d0a19a661321a1b2378497d 100644 (file)
@@ -38,7 +38,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 \r
 /**\r
@@ -117,7 +117,7 @@ public class JaxbImport
                List<DescriptionBase> descriptions;\r
                List<TypeDesignationBase<?>> typeDesignations;\r
                List<SpecimenOrObservationBase> occurrences;\r
-               List<FeatureTree> featureTrees;\r
+               List<TermTree> featureTrees;\r
                List<TermTreeNode> featureNodes;\r
                List<Media> media;\r
                List<LanguageStringBase> languageData;\r
index 4c67f9b397fe39d2b739472d60ad549922bf5aa1..6572ead49217f63bf21b9354b8ea141c2c720396 100644 (file)
@@ -83,9 +83,9 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
 import eu.etaxonomy.cdm.model.term.Representation;\r
 import eu.etaxonomy.cdm.model.term.TermBase;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
 import eu.etaxonomy.cdm.model.term.TermType;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
@@ -142,7 +142,7 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
 \r
        private Set<StatisticalMeasure> statisticalMeasures = new HashSet<>();\r
        private Set<VersionableEntity> featureData = new HashSet<>();\r
-       private Set<FeatureTree> featureTrees = new HashSet<>();\r
+       private Set<TermTree> featureTrees = new HashSet<>();\r
        private Set<Classification> classifications = new HashSet<>();\r
 \r
        private final UUID uuidAnnotationTypeLocation = UUID.fromString("a3737e07-72e3-46d2-986d-fa4cf5de0b63");\r
@@ -675,7 +675,7 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                        getReferenceService().save(source);\r
                }\r
 \r
-               for (FeatureTree featureTree : featureTrees) {\r
+               for (TermTree featureTree : featureTrees) {\r
                        getFeatureTreeService().save(featureTree);\r
                }\r
                getDescriptiveDataSetService().save(descriptiveDataSet);\r
@@ -1751,7 +1751,7 @@ public class SDDImport extends XmlImportBase<SDDImportConfigurator, SDDImportSta
                                        String label = (String)ImportHelper.getXmlInputValue(elRepresentation,"Label",sddNamespace);\r
                                        //Element elDesignedFor = elCharacterTree.getChild("DesignedFor",sddNamespace);//TODO ?\r
 \r
-                                       FeatureTree featureTree =  FeatureTree.NewInstance();\r
+                                       TermTree featureTree =  TermTree.NewInstance();\r
                                        importRepresentation(elCharacterTree, sddNamespace, featureTree, "", cdmState);\r
                                        TermTreeNode<Feature> root = featureTree.getRoot();\r
                                        List<Element> listeOfNodes = elCharacterTree.getChildren("Nodes", sddNamespace);\r
index b4ba35741c1f342bcad25229eab3df7c73b93faa..f771143d750a65e341b7cdbf5efdd7a3c60cf975 100644 (file)
@@ -80,7 +80,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.Representation;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 \r
@@ -134,7 +134,7 @@ public class SDDDataSet {
     @XmlElementWrapper(name = "FeatureData")\r
         @XmlElements({\r
         @XmlElement(name = "FeatureNode", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TermTreeNode.class),\r
-        @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = FeatureTree.class)\r
+        @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TermTree.class)\r
     })\r
 //    protected List<VersionableEntity> featureData;\r
     protected List<VersionableEntity> featureData;\r
index 143450f0926224175b8a91e6a778119c13f5b0a7..73e44e79ab012676c242002f7ef85ae7106fc199 100644 (file)
@@ -79,7 +79,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.Representation;\r
 import eu.etaxonomy.cdm.model.term.TermBase;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
@@ -1189,8 +1189,8 @@ public class SDDDocumentBuilder {
 \r
                        for (int i = 0; i < cdmSource.getFeatureData().size(); i++) {\r
                                VersionableEntity featu = cdmSource.getFeatureData().get(i);\r
-                               if (featu instanceof FeatureTree) {\r
-                                       FeatureTree ft = (FeatureTree) featu;\r
+                               if (featu instanceof TermTree) {\r
+                                       TermTree ft = (TermTree) featu;\r
                                        ElementImpl elChartree = new ElementImpl(document,\r
                                                        CHARACTER_TREE);\r
                                        chartreeCount = buildReference(featu, featuretrees, ID,\r
index 38c4c484cf6f83b37e34a1fba12af4a3828eee55..46d075b64868acde8c975fdd05c13113aa850b4f 100644 (file)
@@ -63,7 +63,7 @@ import eu.etaxonomy.cdm.model.taxon.SynonymType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
@@ -94,7 +94,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
 
     private  String treatmentMainName,originalTreatmentName;
 
-    private final HashMap<String,Map<String,String>> namesMap = new HashMap<String, Map<String,String>>();
+    private final HashMap<String,Map<String,String>> namesMap = new HashMap<>();
 
 
     private final Pattern keypattern = Pattern.compile("^(\\d+.*|-\\d+.*)");
@@ -142,7 +142,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
     @SuppressWarnings({ "rawtypes", "unused" })
 
     protected void extractTreatment(Node treatmentnode, Reference refMods, URI sourceName) {        logger.info("extractTreatment");
-        List<TaxonName> namesToSave = new ArrayList<TaxonName>();
+        List<TaxonName> namesToSave = new ArrayList<>();
         NodeList children = treatmentnode.getChildNodes();
         Taxon acceptedTaxon =null;
         boolean hasRefgroup=false;
@@ -304,21 +304,21 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
      */
     private void buildFeatureTree() {
         logger.info("buildFeatureTree");
-        FeatureTree proibiospheretree = importer.getFeatureTreeService().find(proIbioTreeUUID);
+        TermTree proibiospheretree = importer.getFeatureTreeService().find(proIbioTreeUUID);
         if (proibiospheretree == null){
-            List<FeatureTree> trees = importer.getFeatureTreeService().list(FeatureTree.class, null, null, null, null);
+            List<TermTree> trees = importer.getFeatureTreeService().list(TermTree.class, null, null, null, null);
             if (trees.size()==1) {
-                FeatureTree<Feature> ft = trees.get(0);
+                TermTree<Feature> ft = trees.get(0);
                 if (featuresMap==null) {
-                    featuresMap=new HashMap<String, Feature>();
+                    featuresMap=new HashMap<>();
                 }
-                for (Feature feature: ft.getDistinctFeatures()){
+                for (Feature feature: ft.getDistinctTerms()){
                     if(feature!=null) {
                         featuresMap.put(feature.getTitleCache(), feature);
                     }
                 }
             }
-            proibiospheretree = FeatureTree.NewInstance();
+            proibiospheretree = TermTree.NewInstance();
             proibiospheretree.setUuid(proIbioTreeUUID);
         }
 
@@ -550,8 +550,8 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
         logger.info("extractDistribution");
         //        logger.info("acceptedTaxon: "+acceptedTaxon);
         NodeList children = distribution.getChildNodes();
-        Map<Integer,List<MySpecimenOrObservation>> specimenOrObservations = new HashMap<Integer, List<MySpecimenOrObservation>>();
-        Map<Integer,String> descriptionsFulltext = new HashMap<Integer,String>();
+        Map<Integer,List<MySpecimenOrObservation>> specimenOrObservations = new HashMap<>();
+        Map<Integer,String> descriptionsFulltext = new HashMap<>();
 
         for (int i=0;i<children.getLength();i++){
             if (children.item(i).getNodeName().equalsIgnoreCase("tax:p")){
@@ -1099,7 +1099,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
      * @param refMods: the current reference extracted from the MODS
      * @param featureName: the feature name
      */
-    @SuppressWarnings({ "unused", "rawtypes" })
+    @SuppressWarnings({ "unused"})
     private String extractSpecificFeatureNotStructured(Node description, Taxon acceptedTaxon, Taxon defaultTaxon,
             List<TaxonName> nameToSave, Reference refMods, String featureName ) {
         logger.info("extractSpecificFeatureNotStructured " + featureName);
@@ -2352,7 +2352,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
         String fullName = "";
         String newName="";
         String identifier="";
-        HashMap<String, String> atomisedMap = new HashMap<String, String>();
+        HashMap<String, String> atomisedMap = new HashMap<>();
         List<String> atomisedName= new ArrayList<String>();
 
         String rankStr = "";
@@ -2498,8 +2498,8 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
         String fullName = "";
         String newName = "";
         String identifier = "";
-        HashMap<String, String> atomisedMap = new HashMap<String, String>();
-        List<String> atomisedNameList= new ArrayList<String>();
+        HashMap<String, String> atomisedMap = new HashMap<>();
+        List<String> atomisedNameList= new ArrayList<>();
 
         String status= extractStatus(children);
 
@@ -3667,7 +3667,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                             classification.addChildTaxon((Taxon)tmpTaxonBase, refMods, null);
                         }
                     } else{
-                        hierarchy = new HashMap<Rank, Taxon>();
+                        hierarchy = new HashMap<>();
                         //System.out.println("LOOK FOR PARENT "+taxonname.toString()+", "+tmptaxonbase.toString());
                         if (!isSynonym){
                             lookForParentNode(taxonName,(Taxon)tmpTaxonBase, refMods,this);
@@ -4931,7 +4931,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
         return costs[s2.length()];
     }
 
-    Map<Rank, Taxon> hierarchy = new HashMap<Rank, Taxon>();
+    Map<Rank, Taxon> hierarchy = new HashMap<>();
     /**
      * @param taxonName
      */
index 7eb3919ed50b273946c6c71a532047abcaaf0cca..3685a43fea3d9d1baf620833700cdecb11108111 100644 (file)
@@ -19,7 +19,7 @@ import org.junit.Test;
 \r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 \r
 //@Ignore  //does not work anymore since FeatureNode + Tree was moved to term package\r
 public class FeatureTest {\r
@@ -32,7 +32,7 @@ public class FeatureTest {
                URI uri = new URI(URIEncoder.encode(this.getClass().getResource(resource).toString()));\r
                DataSet dataSet = cdmDocumentBuilder.unmarshal(DataSet.class, new InputStreamReader(this.getClass().getResourceAsStream(resource)),uri.toString());\r
 \r
-                       FeatureTree<Feature> featureTree = dataSet.getFeatureTrees().get(0);\r
+                       TermTree<Feature> featureTree = dataSet.getFeatureTrees().get(0);\r
                        Feature feature = (Feature)dataSet.getTerms().get(1);\r
 \r
                        assertNotNull("FeatureTree must not be null", featureTree);\r
index cdb23a0bb95946a86d11f2ea7b5d9b35feef3a1e..54a8e9cb28904adea67d80d364fc6a5b5d6a6c90 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.io.common.IExportConfigurator.TARGET;
 import eu.etaxonomy.cdm.io.descriptive.owl.out.StructureTreeOwlExportConfigurator;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
@@ -75,8 +75,8 @@ public class OwlExportTest  extends CdmTransactionalIntegrationTest{
     }
 
     public List<UUID> createFeatureTree() {
-        FeatureTree tree = FeatureTree.NewInstance();
-        TermVocabulary voc = TermVocabulary.NewInstance(TermType.Feature, "voc description", "vocabulary", "voc", URI.create("http://test.voc"));
+        TermTree<Feature> tree = TermTree.NewInstance();
+        TermVocabulary<Feature> voc = TermVocabulary.NewInstance(TermType.Feature, "voc description", "vocabulary", "voc", URI.create("http://test.voc"));
 
 
         Feature featureA = Feature.NewInstance("A", "A", "A");
index 5cbbf415e8757c05c60a75460fe53c9b3b991ef6..e8c463f30c810cf4bf1fe18b711750c822af2c68 100644 (file)
         @MetaValue(value = "Synonym", targetEntity = Synonym.class),
         @MetaValue(value = "Taxon", targetEntity = Taxon.class),
 
-        @MetaValue(value = "FeatureTree", targetEntity = FeatureTree.class),
+        @MetaValue(value = "TermTree", targetEntity = TermTree.class),
         @MetaValue(value = "PhylogeneticTree", targetEntity = PhylogeneticTree.class),
         @MetaValue(value = "MediaSpecimen", targetEntity = MediaSpecimen.class),
         @MetaValue(value = "TermVocabulary", targetEntity = TermVocabulary.class),
@@ -297,9 +297,9 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.term.OrderedTerm;
 import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
 import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 
index 5c9240ee78fb8a17e19f2a908fbd69b620ee9a62..3494d219192800ffeb06222d106bafeabefe175c 100644 (file)
@@ -41,7 +41,7 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.strategy.cache.description.DescriptiveDataSetDefaultCacheStrategy;
 
@@ -83,7 +83,7 @@ public class DescriptiveDataSet extends IdentifiableEntity<DescriptiveDataSetDef
        @XmlSchemaType(name = "IDREF")
        @ManyToOne(fetch = FetchType.LAZY)
        @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE})
-       private FeatureTree<Character> descriptiveSystem;
+       private TermTree<Character> descriptiveSystem;
 
        @XmlElementWrapper(name = "Descriptions")
        @XmlElement(name = "Description")
@@ -307,10 +307,10 @@ public class DescriptiveDataSet extends IdentifiableEntity<DescriptiveDataSetDef
                }
        }
 
-       public FeatureTree<Character> getDescriptiveSystem() {
+       public TermTree<Character> getDescriptiveSystem() {
                return descriptiveSystem;
        }
-       public void setDescriptiveSystem(FeatureTree<Character> descriptiveSystem) {
+       public void setDescriptiveSystem(TermTree<Character> descriptiveSystem) {
                this.descriptiveSystem = descriptiveSystem;
        }
 
index c7733d8d39874e883baac3a23162111e6cb62130..36304377d491da4bc2b22c6d5a0f76e0e9c18efd 100644 (file)
@@ -14,10 +14,10 @@ import javax.xml.bind.annotation.XmlEnum;
 import javax.xml.bind.annotation.XmlEnumValue;\r
 \r
 import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 \r
 /**\r
- * The role of the descriptive system of type {@link FeatureTree}.<BR>\r
+ * The role of the descriptive system of type {@link TermTree}.<BR>\r
  * A descriptive systeme may play different roles within a working set. \r
  * The roles may be \r
  * <li>\r
index 0b6d21aee4d4c3be8bdf78ac8a20bfaa39fff005..1bed76fc93db195f000de9e688776935ac9f75e4 100644 (file)
@@ -45,7 +45,7 @@ import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
@@ -67,7 +67,7 @@ import eu.etaxonomy.cdm.model.term.TermVocabulary;
  * ("generalization of") features. "Kind of" / "generalization of" relations
  * are bidirectional (a feature F1 is a "Kind of" a feature F2 if and only
  * if the feature F2 is a "generalization of" the feature F1. This hierarchical
- * structure has nothing in common with {@link FeatureTree feature trees} used for determination.
+ * structure has nothing in common with {@link TermTree feature trees} used for determination.
  * <P>
  * A standard set of feature instances will be automatically
  * created as the project starts. But this class allows to extend this standard
similarity index 79%
rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/FeatureTree.java
rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTree.java
index d60bf7b919b2ca1f09200ab89f26f0a13ca337f4..be360ee06b0a55dc6e4bede416ca24cc86c2ed8a 100644 (file)
@@ -36,11 +36,8 @@ import org.hibernate.annotations.CascadeType;
 import org.hibernate.annotations.Type;
 import org.hibernate.envers.Audited;
 
-import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.MediaKey;
-import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 
 /**
  * The class to arrange {@link Feature features} (characters) in a tree structure.
@@ -57,30 +54,34 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
  * nothing in common with the possible hierarchical structure of features
  * depending on their grade of precision.
  *
- * @see                MediaKey
- *
  * @author  m.doering
  * @since 08-Nov-2007 13:06:16
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "FeatureTree", propOrder = {
+@XmlType(name = "TermTree", propOrder = {
     "root",
     "termType",
     "allowDuplicates",
     "representations"
 
 })
-@XmlRootElement(name = "FeatureTree")
+@XmlRootElement(name = "TermTree")
 @Entity
 //@Indexed disabled to reduce clutter in indexes, since this type is not used by any search
-//@Indexed(index = "eu.etaxonomy.cdm.model.term.FeatureTree")
+//@Indexed(index = "eu.etaxonomy.cdm.model.term.TermTree")
 @Audited
-public class FeatureTree <T extends DefinedTermBase>
-            extends IdentifiableEntity<IIdentifiableEntityCacheStrategy>
-            implements IHasTermType, Cloneable{
+public class TermTree <T extends DefinedTermBase>
+            extends TermGraphBase<T, TermTreeNode> {
 
        private static final long serialVersionUID = -6713834139003172735L;
-       private static final Logger logger = Logger.getLogger(FeatureTree.class);
+       private static final Logger logger = Logger.getLogger(TermTree.class);
+
+
+    // TODO representations needed? FeatureTree was a TermBase until v3.3 but was removed from
+    //it as TermBase got the termType which does not apply to FeatureTree.
+    //We need to check how far representations and uri is still required
+    //or can be deleted. Current implementations seem all to use the title cache
+    //instead of representation. This may not be correct.
 
        @XmlElement(name = "Root")
        @OneToOne(fetch = FetchType.LAZY, targetEntity=TermTreeNode.class)
@@ -125,8 +126,8 @@ public class FeatureTree <T extends DefinedTermBase>
      * with an empty {@link #getRoot() root node}.
      * @param termType the {@link TermType term type}, must not be null
      */
-    public static <T extends DefinedTermBase<T>> FeatureTree<T> NewInstance(@NotNull TermType termType){
-        return new FeatureTree<>(termType);
+    public static <T extends DefinedTermBase<T>> TermTree<T> NewInstance(@NotNull TermType termType){
+        return new TermTree<>(termType);
     }
 
     /**
@@ -135,8 +136,8 @@ public class FeatureTree <T extends DefinedTermBase>
         * @see #NewInstance(UUID)
         * @see #NewInstance(List)
         */
-       public static FeatureTree<Feature> NewInstance(){
-               return new FeatureTree<>(TermType.Feature);
+       public static TermTree<Feature> NewInstance(){
+               return new TermTree<>(TermType.Feature);
        }
 
        /**
@@ -148,8 +149,8 @@ public class FeatureTree <T extends DefinedTermBase>
         * @see                         #NewInstance()
         * @see                         #NewInstance(List)
         */
-       public static <T extends DefinedTermBase<T>> FeatureTree<T> NewInstance(UUID uuid){
-               FeatureTree<T> result =  new FeatureTree<>(TermType.Feature);
+       public static <T extends DefinedTermBase<T>> TermTree<T> NewInstance(UUID uuid){
+               TermTree<T> result =  new TermTree<>(TermType.Feature);
                result.setUuid(uuid);
                return result;
        }
@@ -165,8 +166,8 @@ public class FeatureTree <T extends DefinedTermBase>
         * @see                                 #NewInstance()
         * @see                                 #NewInstance(UUID)
         */
-       public static FeatureTree<Feature> NewInstance(List<Feature> featureList){
-               FeatureTree<Feature> result =  new FeatureTree<>(TermType.Feature);
+       public static TermTree<Feature> NewInstance(List<Feature> featureList){
+               TermTree<Feature> result =  new TermTree<>(TermType.Feature);
                TermTreeNode<Feature> root = result.getRoot();
 
                for (Feature feature : featureList){
@@ -181,13 +182,13 @@ public class FeatureTree <T extends DefinedTermBase>
 
     //for JAXB only, TODO needed?
     @Deprecated
-    protected FeatureTree(){}
+    protected TermTree(){}
 
        /**
         * Class constructor: creates a new feature tree instance with an empty
         * {@link #getRoot() root node}.
         */
-       protected FeatureTree(TermType termType) {
+       protected TermTree(TermType termType) {
         this.termType = termType;
         checkTermType(this);  //check not null
                root = new TermTreeNode<>(termType);
@@ -211,7 +212,7 @@ public class FeatureTree <T extends DefinedTermBase>
        }
 
     /**
-     * @deprecated this method is only for internal use when deleting a {@link FeatureTree}
+     * @deprecated this method is only for internal use when deleting a {@link TermTree}
      * from a database. It should never be called for other reasons.
      */
     @Deprecated
@@ -230,44 +231,40 @@ public class FeatureTree <T extends DefinedTermBase>
                return result;
        }
 
-    public boolean isAllowDuplicates() {
-        return allowDuplicates;
-    }
-    public void setAllowDuplicates(boolean allowDuplicates) {
-        this.allowDuplicates = allowDuplicates;
-    }
 
-    /**
-     * Throws {@link IllegalArgumentException} if the given
-     * term has not the same term type as this term or if term type is null.
-     * @param term
-     */
-    private void checkTermType(IHasTermType term) {
-        IHasTermType.checkTermTypes(term, this);
-    }
 
 //******************** METHODS ***********************************************/
 
        /**
-        * Computes a set of distinct terms that are present in this feature tree
+        * Computes a set of distinct terms that are present in this term tree
         *
         * @return
         */
-       @Transient
-       public Set<T> getDistinctFeatures(){
+    @Override
+    @Transient
+       public Set<T> getDistinctTerms(){
            Set<T> features = new HashSet<>();
-           return root.getDistinctFeaturesRecursive(features);
+           return root.getDistinctTermsRecursive(features);
        }
 
+    public List<T> asTermList() {
+        List<T> result = new ArrayList<>();
+        for (TermTreeNode<T> node : getRootChildren()){
+            result.add(node.getTerm());
+            result.addAll(node.asTermListRecursive(result));
+        }
+        return result;
+    }
+
 //*********************** CLONE ********************************************************/
 
        /**
-        * Clones <i>this</i> {@link FeatureTree}. This is a shortcut that enables to create
+        * Clones <i>this</i> {@link TermTree}. This is a shortcut that enables to create
         * a new instance that differs only slightly from <i>this</i> tree by
         * modifying only some of the attributes.
         * {@link TermTreeNode tree nodes} always belong only to one tree, so all
         * {@link TermTreeNode tree nodes} are cloned to build
-        * the new {@link FeatureTree}
+        * the new {@link TermTree}
         *
         *
         * @see eu.etaxonomy.cdm.model.term.TermBase#clone()
@@ -275,9 +272,9 @@ public class FeatureTree <T extends DefinedTermBase>
         */
        @Override
        public Object clone() {
-               FeatureTree<T> result;
+               TermTree<T> result;
                try {
-                       result = (FeatureTree<T>)super.clone();
+                       result = (TermTree<T>)super.clone();
                }catch (CloneNotSupportedException e) {
                        logger.warn("Object does not implement cloneable");
                        e.printStackTrace();
index ad2c9ba147fc940872637b7dcb0cad9c95eafec6..7069f2f634e771b4a2d1ed7258646861d937915c 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 
 /**
  * @author m.venin
@@ -37,7 +37,7 @@ public class PolytomousKeyGenerator {
 
        private boolean merge=true; // if this boolean is set to true, branches of the tree will be merged if the corresponding states can be used together without decreasing their score
 
-       private FeatureTree dependenciesTree; // the tree containing the dependencies between states and features (InapplicableIf and OnlyApplicableIf)
+       private TermTree dependenciesTree; // the tree containing the dependencies between states and features (InapplicableIf and OnlyApplicableIf)
        private Map<State,Set<Feature>> iIdependencies = new HashMap<>(); // map of a set of Features (value) inapplicables if a State (key) is present
        private Map<State,Set<Feature>> oAIdependencies = new HashMap<>(); // map of a set of Features (value) only applicables if a State (key) is present
        private Map<Feature,Set<Feature>> featureDependencies = new HashMap<>(); // map of all the sets of features (values) which have dependencies with states of other features (keys)
@@ -74,7 +74,7 @@ public class PolytomousKeyGenerator {
         *
         * @param tree
         */
-       public void setDependencies(FeatureTree tree){
+       public void setDependencies(TermTree tree){
                this.dependenciesTree = tree;
        }
 
index c5817c8f7cc8c3da449a74a02771d803e5630975..03d4239375b8676d964a0b9d0b2f7429bd2ce7c4 100644 (file)
@@ -18,11 +18,11 @@ public class FeatureTreeTest {
        @SuppressWarnings("unused")
        private static final Logger logger = Logger.getLogger(FeatureTreeTest.class);
 
-       private FeatureTree testTree;
-       private TermTreeNode node1;
-       private TermTreeNode node2;
-       private TermTreeNode node3;
-       private TermTreeNode node4;
+       private TermTree<Feature> testTree;
+       private TermTreeNode<Feature> node1;
+       private TermTreeNode<Feature> node2;
+       private TermTreeNode<Feature> node3;
+       private TermTreeNode<Feature> node4;
 
        @BeforeClass
        public static void setUpBeforeClass() {
@@ -35,7 +35,7 @@ public class FeatureTreeTest {
         */
        @Before
        public void setUp() throws Exception {
-               testTree = FeatureTree.NewInstance();
+               testTree = TermTree.NewInstance();
 
                node1 = testTree.getRoot().addChild(Feature.ANATOMY());
                node2 = node1.addChild(Feature.BIOLOGY_ECOLOGY());
@@ -64,10 +64,11 @@ public class FeatureTreeTest {
        public void testClone(){
 
         TermTreeNode<Feature> node21 = node1.addChild(Feature.ADDITIONAL_PUBLICATION(), 1);
-               FeatureTree clone = (FeatureTree) testTree.clone();
+               TermTree<Feature> clone = (TermTree<Feature>) testTree.clone();
+
                assertEquals (clone.getRoot().getTerm(), testTree.getRoot().getTerm());
                assertNotSame(clone.getRoot(), testTree.getRoot());
-               List<TermTreeNode> children = clone.getRootChildren();
+               List<TermTreeNode<Feature>> children = clone.getRootChildren();
 
 
                assertEquals(children.get(0).getTerm(), node1.getTerm());
index 646d93f5c097f52a759fb9b5e3cf7023dd2a520f..07671cf6b065af25162940af52050dd3a1d12553 100644 (file)
@@ -128,8 +128,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
@@ -412,7 +412,7 @@ public class FullCoverageDataGenerator {
 
 
                //Feature Tree
-               FeatureTree<Feature> featureTree = FeatureTree.NewInstance();
+               TermTree<Feature> featureTree = TermTree.NewInstance();
 //             featureTree
         TermTreeNode<Feature> descriptionFeatureNode = featureTree.getRoot().addChild(Feature.DESCRIPTION());
         TermTreeNode<Feature> leaveLengthNode = descriptionFeatureNode.addChild(leaveLength);
index df125bce0b12e7df6f4d9d6566ba49f3a5c876d5..3a21130b3c1084a1e6ff741602436b9c0dfd0153 100644 (file)
@@ -114,7 +114,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.OrderedTerm;
 import eu.etaxonomy.cdm.model.term.OrderedTermBase;
 import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
@@ -159,7 +159,7 @@ public class ReferencedObjTypeUpdater extends SchemaUpdaterStepBase{
                            DescriptionElementSource.class,
                            Distribution.class,
                            Feature.class,
-                           FeatureTree.class,
+                           TermTree.class,
                            IndividualsAssociation.class,
                            MeasurementUnit.class,
                            MediaKey.class,
index be08aa423c221d540a9881c0d68692899f6a169f..5c8bfd8c3f217e284ccb9f7c62f57cb428272be2 100644 (file)
@@ -13,7 +13,7 @@ import java.util.List;
 import java.util.UUID;\r
 \r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermType;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;\r
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;\r
@@ -23,8 +23,8 @@ import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
  * @since 10.07.2008\r
  * @version 1.0\r
  */\r
-public interface IFeatureTreeDao extends IIdentifiableDao<FeatureTree> {\r
-    public List<FeatureTree> list();\r
+public interface IFeatureTreeDao extends IIdentifiableDao<TermTree> {\r
+    public List<TermTree> list();\r
 \r
     public UUID DefaultFeatureTreeUuid = UUID.fromString("ac8d4e58-926d-4f81-ac77-cebdd295df7c");\r
 \r
@@ -35,6 +35,6 @@ public interface IFeatureTreeDao extends IIdentifiableDao<FeatureTree> {
      */\r
     public void deepLoadNodes(List<TermTreeNode> nodes, List<String> nodePaths);\r
 \r
-    public <S extends FeatureTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
+    public <S extends TermTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
             String pattern);\r
 }\r
index 5b766218388a1c252b53673631c390a741cb37c4..6654594c6a86a33634a6c747ac03066f55ced718 100644 (file)
@@ -22,7 +22,7 @@ import org.springframework.stereotype.Repository;
 \r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermType;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.term.VocabularyEnum;\r
@@ -37,7 +37,7 @@ import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
  * @version 1.0\r
  */\r
 @Repository\r
-public class FeatureTreeDaoImpl extends IdentifiableDaoBase<FeatureTree> implements IFeatureTreeDao{\r
+public class FeatureTreeDaoImpl extends IdentifiableDaoBase<TermTree> implements IFeatureTreeDao{\r
     @SuppressWarnings("unused")\r
     private static final Logger logger = Logger.getLogger(FeatureTreeDaoImpl.class);\r
 \r
@@ -45,14 +45,14 @@ public class FeatureTreeDaoImpl extends IdentifiableDaoBase<FeatureTree> impleme
     private ITermVocabularyDao termVocabularyDao;\r
 \r
     public FeatureTreeDaoImpl() {\r
-        super(FeatureTree.class);\r
+        super(TermTree.class);\r
         indexedClasses = new Class[1];\r
-        indexedClasses[0] = FeatureTree.class;\r
+        indexedClasses[0] = TermTree.class;\r
 //             indexedClasses[1] = PolytomousKey.class;\r
     }\r
 \r
     @Override\r
-    public List<FeatureTree> list() {\r
+    public List<TermTree> list() {\r
         Criteria crit = getSession().createCriteria(type);\r
         return crit.list();\r
     }\r
@@ -74,7 +74,7 @@ public class FeatureTreeDaoImpl extends IdentifiableDaoBase<FeatureTree> impleme
     }\r
 \r
     @Override\r
-    public FeatureTree load(UUID uuid, List<String> propertyPaths) {\r
+    public TermTree load(UUID uuid, List<String> propertyPaths) {\r
         if (uuid.equals(DefaultFeatureTreeUuid) || count() == 0){\r
             return createDefaultFeatureTree();\r
         }\r
@@ -82,7 +82,7 @@ public class FeatureTreeDaoImpl extends IdentifiableDaoBase<FeatureTree> impleme
     }\r
 \r
     @Override\r
-    public FeatureTree load(UUID uuid) {\r
+    public TermTree load(UUID uuid) {\r
         if (uuid.equals(DefaultFeatureTreeUuid) || count() == 0){\r
             return createDefaultFeatureTree();\r
         }\r
@@ -92,7 +92,7 @@ public class FeatureTreeDaoImpl extends IdentifiableDaoBase<FeatureTree> impleme
     /**\r
      *\r
      */\r
-    private FeatureTree createDefaultFeatureTree() {\r
+    private TermTree createDefaultFeatureTree() {\r
 \r
         TermVocabulary featureVocabulary = termVocabularyDao.findByUuid(VocabularyEnum.Feature.getUuid());\r
 \r
@@ -103,13 +103,13 @@ public class FeatureTreeDaoImpl extends IdentifiableDaoBase<FeatureTree> impleme
                 selectedFeatures.add(feature);\r
             }\r
         }\r
-        FeatureTree featureTree = FeatureTree.NewInstance(selectedFeatures);\r
+        TermTree featureTree = TermTree.NewInstance(selectedFeatures);\r
         featureTree.setUuid(DefaultFeatureTreeUuid);\r
         return featureTree;\r
     }\r
 \r
     @Override\r
-    public <S extends FeatureTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
+    public <S extends TermTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
             String pattern) {\r
         Session session = getSession();\r
         Query query = session.createQuery(\r
index 6748502460a83e3145e46c768b43caff605d5358..340eaff7f8877e05d3d8e33cb18f4e7f7c2f338c 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 
 /**
  * @author cmathew
@@ -100,9 +100,9 @@ public class PostMergeEntityListener implements MergeEventListener {
 
                 }
 
-            }   else if(FeatureTree.class.isAssignableFrom(entityClazz)){
+            }   else if(TermTree.class.isAssignableFrom(entityClazz)){
 
-                FeatureTree<?> tree = (FeatureTree)entity;
+                TermTree<?> tree = (TermTree)entity;
                 for (TermTreeNode<?> node:tree.getRootChildren()){
                     node.removeNullValueFromChildren();
                     if (node.getChildNodes() != null){
index d7f91565787f7a95de6aa5ca8f0b62d8ef592a65..c4f8ed5dd76f062055c1239e014695eb9bf6e8b9 100644 (file)
       <!-- Term Package -->
       <mapping class="eu.etaxonomy.cdm.model.term.DefinedTerm"/>
       <mapping class="eu.etaxonomy.cdm.model.term.DefinedTermBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.term.FeatureTree"/>
       <mapping class="eu.etaxonomy.cdm.model.term.OrderedTerm"/>
       <mapping class="eu.etaxonomy.cdm.model.term.OrderedTermBase"/>
       <mapping class="eu.etaxonomy.cdm.model.term.OrderedTermVocabulary"/>
       <mapping class="eu.etaxonomy.cdm.model.term.Representation"/>
       <mapping class="eu.etaxonomy.cdm.model.term.TermRelationshipType"/>
+      <mapping class="eu.etaxonomy.cdm.model.term.TermTree"/>
+      <mapping class="eu.etaxonomy.cdm.model.term.TermGraph"/>
       <mapping class="eu.etaxonomy.cdm.model.term.TermTreeNode"/>
+      <mapping class="eu.etaxonomy.cdm.model.term.TermRelation"/>
       <mapping class="eu.etaxonomy.cdm.model.term.TermVocabulary"/>
       
       <!-- Validation Package -->
index 3409aeda1c3a29ca0cee07fdbb03c2213ba2354e..d975fcc64c8e8a07b47d54f98cc85527827bf81a 100644 (file)
@@ -147,7 +147,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.OrderedTermBase;
 import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
 import eu.etaxonomy.cdm.model.term.Representation;
@@ -292,7 +292,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest {
                                Distribution.class,
                                Feature.class,
                                TermTreeNode.class,
-                               FeatureTree.class,
+                               TermTree.class,
                                MediaKey.class,
                                IndividualsAssociation.class,
                                MeasurementUnit.class,
index d45f6ed7c43c7148fd7e984f799b1a0dba52923f..9d266fd2a6ad1d8d37038d5e29aa9900aeda3b13 100644 (file)
@@ -37,7 +37,7 @@ import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.remote.editor.DefinedTermBaseList;
 import eu.etaxonomy.cdm.remote.editor.NamedAreaLevelPropertyEditor;
 import eu.etaxonomy.cdm.remote.editor.TermBaseListPropertyEditor;
@@ -149,7 +149,7 @@ public class DescriptionController extends AbstractIdentifiableController<Descri
             // will terminate thread
         }
 
-        FeatureTree featureTree = featureTreeService.load(featureTreeUuid, null);
+        TermTree featureTree = featureTreeService.load(featureTreeUuid, null);
         if(featureTree == null){
             HttpStatusMessage.UUID_NOT_FOUND.send(response);
             // will terminate thread
index 679917713b467fa391546a1ac318d9bed9715980..7c30ab6b9e41064f5732247ff5a731830ce10713 100644 (file)
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import io.swagger.annotations.Api;
 
 /**
@@ -25,7 +25,7 @@ import io.swagger.annotations.Api;
 @Controller
 @Api("featureTree")
 @RequestMapping(value = {"/featureTree/{uuid}"})
-public class FeatureTreeController extends AbstractIdentifiableController<FeatureTree, IFeatureTreeService> {
+public class FeatureTreeController extends AbstractIdentifiableController<TermTree, IFeatureTreeService> {
     @SuppressWarnings("unused")
     private static final Logger logger = Logger.getLogger(FeatureTreeController.class);
 
index 80f647a882ab07ba2822ae6e68e8f9ac7863a68f..388c498e642716cfa2f61f92f3f6f5edb30c05cc 100644 (file)
@@ -14,7 +14,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import io.swagger.annotations.Api;
 
 /**
@@ -24,7 +24,7 @@ import io.swagger.annotations.Api;
 @Controller
 @Api("featureTree")
 @RequestMapping(value = {"/featureTree"})
-public class FeatureTreeListController extends AbstractIdentifiableListController<FeatureTree, IFeatureTreeService> {
+public class FeatureTreeListController extends AbstractIdentifiableListController<TermTree, IFeatureTreeService> {
 
     @Override
     @Autowired
index 32c46e8e30de8644cacfd1d0d9e70e23f64ad995..172fc654b21407eb5efdce3498ad72583ca55ecc 100644 (file)
@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import io.swagger.annotations.Api;
 
 /**
@@ -55,13 +55,13 @@ public class FeatureTreePortalController extends FeatureTreeController {
 
     @Override
     @RequestMapping(method = RequestMethod.GET)
-    public FeatureTree doGet(@PathVariable("uuid") UUID uuid,
+    public TermTree doGet(@PathVariable("uuid") UUID uuid,
                 HttpServletRequest request,
                 HttpServletResponse response) throws IOException {
         if(request != null) {
             logger.info("doGet() " + request.getRequestURI());
         }
-        FeatureTree featureTree = null;
+        TermTree featureTree = null;
         try {
             featureTree = service.loadWithNodes(uuid, getInitializationStrategy(), featuretreeNodeInitStrategy);
         } catch(EntityNotFoundException e){
index e912a92b2bae594f7f735bfefbad376ec4c9745f..198e8370968dba5b62fd453857a0a0a70ac97bd7 100644 (file)
@@ -55,7 +55,7 @@ import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;
 import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao;
@@ -589,7 +589,7 @@ public class DescriptionServiceImpl
     }
 
     @Override
-    public String generateNaturalLanguageDescription(FeatureTree featureTree,
+    public String generateNaturalLanguageDescription(TermTree featureTree,
             TaxonDescription description, List<Language> preferredLanguages, String separator) {
 
         Language lang = preferredLanguages.size() > 0 ? preferredLanguages.get(0) : Language.DEFAULT();
index 3f2b6b520a0fa77ae24521231a49cc1be6d2d0b3..be7996ae1bd072c5e793800eee6d7405548cb615 100644 (file)
@@ -433,7 +433,7 @@ public class DescriptiveDataSetService
         if(markerType!=null){
             newTaxonDescription.addMarker(Marker.NewInstance(markerType, markerFlag));
         }
-        dataSet.getDescriptiveSystem().getDistinctFeatures().forEach(wsFeature->{
+        dataSet.getDescriptiveSystem().getDistinctTerms().forEach(wsFeature->{
             if(wsFeature.isSupportsCategoricalData()){
                 newTaxonDescription.addElement(CategoricalData.NewInstance(wsFeature));
             }
@@ -452,7 +452,7 @@ public class DescriptiveDataSetService
         DescriptiveDataSet dataSet = load(descriptiveDataSetUuid);
         SpecimenOrObservationBase specimen = occurrenceService.load(specimenUuid);
 
-        Set<Character> datasetFeatures = dataSet.getDescriptiveSystem().getDistinctFeatures();
+        Set<Character> datasetFeatures = dataSet.getDescriptiveSystem().getDistinctTerms();
         List<DescriptionElementBase> matchingDescriptionElements = new ArrayList<>();
 
         for (SpecimenDescription specimenDescription : (Set<SpecimenDescription>) specimen.getDescriptions()) {
index 86c254a2f3966c40b59e7dbe3077b2aec31f5d58..3672afb85c4e7627b4d178164dbb1b7205f37d1e 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dao.description.ITermTreeNodeDao;
@@ -144,9 +144,9 @@ public class FeatureNodeServiceImpl extends VersionableServiceBase<TermTreeNode,
                 if (ref instanceof TermTreeNode){
                     break;
                 }
-                if (ref instanceof FeatureTree){
-                    FeatureTree refTree = HibernateProxyHelper.deproxy(ref, FeatureTree.class);
-                    if (node.getFeatureTree().equals((refTree))){
+                if (ref instanceof TermTree){
+                    TermTree refTree = HibernateProxyHelper.deproxy(ref, TermTree.class);
+                    if (node.getGraph().equals((refTree))){
                         break;
                     }
                 }
index e80b9f3bbe8e04dccce536c36c052d63fa2f4045..981772252bec5515c9ef0fbe4602ccf173c800d6 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandlin
 import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermType;\r
 import eu.etaxonomy.cdm.persistence.dao.description.ITermTreeNodeDao;\r
 import eu.etaxonomy.cdm.persistence.dao.description.IFeatureTreeDao;\r
@@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 \r
 @Service\r
 @Transactional(readOnly = false)\r
-public class FeatureTreeServiceImpl extends IdentifiableServiceBase<FeatureTree, IFeatureTreeDao> implements IFeatureTreeService {\r
+public class FeatureTreeServiceImpl extends IdentifiableServiceBase<TermTree, IFeatureTreeDao> implements IFeatureTreeService {\r
 \r
     private ITermTreeNodeDao featureNodeDao;\r
 \r
@@ -55,9 +55,9 @@ public class FeatureTreeServiceImpl extends IdentifiableServiceBase<FeatureTree,
 \r
     @Override\r
     @Transactional(readOnly = false)\r
-    public UpdateResult updateCaches(Class<? extends FeatureTree> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<FeatureTree> cacheStrategy, IProgressMonitor monitor) {\r
+    public UpdateResult updateCaches(Class<? extends TermTree> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TermTree> cacheStrategy, IProgressMonitor monitor) {\r
         if (clazz == null){\r
-            clazz = FeatureTree.class;\r
+            clazz = TermTree.class;\r
         }\r
         return super.updateCachesImpl(clazz, stepSize, cacheStrategy, monitor);\r
     }\r
@@ -78,7 +78,7 @@ public class FeatureTreeServiceImpl extends IdentifiableServiceBase<FeatureTree,
     }\r
 \r
     @Override\r
-    public FeatureTree loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths) {\r
+    public TermTree loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths) {\r
 \r
         if(nodePaths==null){\r
             nodePaths = new ArrayList<>();\r
@@ -98,7 +98,7 @@ public class FeatureTreeServiceImpl extends IdentifiableServiceBase<FeatureTree,
             rootPaths.addAll(propertyPaths);\r
         }\r
 \r
-        FeatureTree featureTree = load(uuid, rootPaths);\r
+        TermTree featureTree = load(uuid, rootPaths);\r
         if(featureTree == null){\r
             throw new EntityNotFoundException("No FeatureTree entity found for " + uuid);\r
         }\r
@@ -116,19 +116,19 @@ public class FeatureTreeServiceImpl extends IdentifiableServiceBase<FeatureTree,
      * @see eu.etaxonomy.cdm.api.service.ServiceBase#load(java.util.UUID, java.util.List)\r
      */\r
     @Override\r
-    public FeatureTree load(UUID uuid, List<String> propertyPaths) {\r
+    public TermTree load(UUID uuid, List<String> propertyPaths) {\r
         return super.load(uuid, propertyPaths);\r
     }\r
 \r
     @Override\r
-    public FeatureTree createTransientDefaultFeatureTree() {\r
+    public TermTree createTransientDefaultFeatureTree() {\r
         return load(IFeatureTreeDao.DefaultFeatureTreeUuid);\r
     }\r
 \r
     @Override\r
     public DeleteResult delete(UUID featureTreeUuid){\r
         DeleteResult result = new DeleteResult();\r
-        FeatureTree tree = dao.load(featureTreeUuid);\r
+        TermTree tree = dao.load(featureTreeUuid);\r
 \r
         TermTreeNode rootNode = HibernateProxyHelper.deproxy(tree.getRoot());\r
         FeatureNodeDeletionConfigurator config = new FeatureNodeDeletionConfigurator();\r
@@ -144,7 +144,7 @@ public class FeatureTreeServiceImpl extends IdentifiableServiceBase<FeatureTree,
     }\r
 \r
     @Override\r
-    public <S extends FeatureTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
+    public <S extends TermTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
             String pattern) {\r
         return dao.getUuidAndTitleCacheByTermType(clazz, termType, limit, pattern);\r
     }\r
index fa6591599ffa8c53413b88416a26d90427b0b305..eea541b5f2c0d53d7109a840c5c98d9db8a26608 100644 (file)
@@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.term.DefinedTerm;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer;
 import eu.etaxonomy.cdm.persistence.dto.MergeResult;
@@ -522,7 +522,7 @@ public interface IDescriptionService extends IIdentifiableEntityService<Descript
       * @param separator
       * @return
       */
-    public String generateNaturalLanguageDescription(FeatureTree featureTree,TaxonDescription description, List<Language> preferredLanguages, String separator);
+    public String generateNaturalLanguageDescription(TermTree featureTree,TaxonDescription description, List<Language> preferredLanguages, String separator);
 
     /**
      * Preliminary method to test whether a description contains structured data.
index 9dddfd1f38f0935588a2a6c513699a141027acd8..7afb724739721385ae709b3e570223c59545ee83 100644 (file)
@@ -15,11 +15,11 @@ import java.util.Map;
 import java.util.UUID;\r
 \r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermType;\r
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;\r
 \r
-public interface IFeatureTreeService extends IIdentifiableEntityService<FeatureTree> {\r
+public interface IFeatureTreeService extends IIdentifiableEntityService<TermTree> {\r
 \r
        public List<TermTreeNode> getFeatureNodesAll();\r
 \r
@@ -32,14 +32,14 @@ public interface IFeatureTreeService extends IIdentifiableEntityService<FeatureT
         * to initialize (e.g. feature).\r
         *\r
         */\r
-       public FeatureTree loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths);\r
+       public TermTree loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths);\r
 \r
        public Map<UUID, TermTreeNode> saveFeatureNodesAll(Collection<TermTreeNode> featureNodeCollection);\r
 \r
        public Map<UUID, TermTreeNode> saveOrUpdateFeatureNodesAll(Collection<TermTreeNode> featureNodeCollection);\r
 \r
-       public FeatureTree createTransientDefaultFeatureTree();\r
+       public TermTree createTransientDefaultFeatureTree();\r
 \r
-       public <S extends FeatureTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
+       public <S extends TermTree> List<UuidAndTitleCache<S>> getUuidAndTitleCacheByTermType(Class<S> clazz, TermType termType, Integer limit,\r
             String pattern);\r
 }\r
index dda88878d1f153fe11a2ce7be776b94b40fc6a6e..d79e9e11b6cf0e041ba05ad47fb733ee5755cf46 100644 (file)
@@ -5,7 +5,7 @@ import java.util.List;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 
 
 
@@ -18,15 +18,15 @@ import eu.etaxonomy.cdm.model.term.FeatureTree;
 
 public interface INaturalLanguageGenerator {
        
-       public List<TextData> generateNaturalLanguageDescription(FeatureTree featureTree, TaxonDescription descriptions);
+       public List<TextData> generateNaturalLanguageDescription(TermTree featureTree, TaxonDescription descriptions);
        
-       public List<TextData> generateNaturalLanguageDescription(FeatureTree featureTree,TaxonDescription description, Language language);
+       public List<TextData> generateNaturalLanguageDescription(TermTree featureTree,TaxonDescription description, Language language);
        
-       public List<TextData> generatePreferredNaturalLanguageDescription(FeatureTree featureTree, TaxonDescription description, List<Language> languages);
+       public List<TextData> generatePreferredNaturalLanguageDescription(TermTree featureTree, TaxonDescription description, List<Language> languages);
 
-       public TextData generateSingleTextData(FeatureTree featureTree, TaxonDescription description);
+       public TextData generateSingleTextData(TermTree featureTree, TaxonDescription description);
        
-       public TextData generateSingleTextData(FeatureTree featureTree, TaxonDescription description, Language language);
+       public TextData generateSingleTextData(TermTree featureTree, TaxonDescription description, Language language);
        
-       public TextData generatePreferredSingleTextData(FeatureTree featureTree, TaxonDescription description, List<Language> languages);
+       public TextData generatePreferredSingleTextData(TermTree featureTree, TaxonDescription description, List<Language> languages);
 }\r
index 789be2edc201d34625ed6ab81b1c83da7bb7d70c..776525d29ec1d9fd860f841b61455410f8b4e098 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.description.TextFormat;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 
 
 /**
@@ -158,7 +158,7 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator {
         * @return a list of TextData, each one being a basic element of the natural language description
         */
        @Override
-    public List<TextData> generateNaturalLanguageDescription(FeatureTree featureTree,TaxonDescription description) {
+    public List<TextData> generateNaturalLanguageDescription(TermTree featureTree,TaxonDescription description) {
                return generateNaturalLanguageDescription(featureTree,description,Language.DEFAULT());
        }
 
@@ -174,7 +174,7 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator {
         * @return a list of TextData, each one being a basic element of the natural language description
         */
        @Override
-    public List<TextData> generateNaturalLanguageDescription(FeatureTree featureTree, TaxonDescription description,    Language language) {
+    public List<TextData> generateNaturalLanguageDescription(TermTree featureTree, TaxonDescription description,       Language language) {
                List<Language> languages = new ArrayList<Language>();
                languages.add(language);
                initNaturalLanguageDescriptionElementProcessors(description.getAnnotations());
@@ -191,7 +191,7 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator {
         * @return a list of TextData, each one being a basic element of the natural language description
         */
        @Override
-    public List<TextData> generatePreferredNaturalLanguageDescription(FeatureTree featureTree,TaxonDescription description, List<Language> languages) {
+    public List<TextData> generatePreferredNaturalLanguageDescription(TermTree featureTree,TaxonDescription description, List<Language> languages) {
                initNaturalLanguageDescriptionElementProcessors(description.getAnnotations());
                return buildBranchesDescr(featureTree.getRootChildren(), featureTree.getRoot(), description, languages,0);
        }
@@ -205,7 +205,7 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator {
         * @return a TextData in the default language.
         */
        @Override
-    public TextData generateSingleTextData(FeatureTree featureTree, TaxonDescription description) {
+    public TextData generateSingleTextData(TermTree featureTree, TaxonDescription description) {
                return generateSingleTextData(featureTree,description,Language.DEFAULT());
        }
 
@@ -219,7 +219,7 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator {
         * @return a TextData in the specified language.
         */
        @Override
-    public TextData generateSingleTextData(FeatureTree featureTree, TaxonDescription description, Language language) {
+    public TextData generateSingleTextData(TermTree featureTree, TaxonDescription description, Language language) {
                List<Language> languages = new ArrayList<Language>();
                languages.add(language);
                return generatePreferredSingleTextData(featureTree,description,languages);
@@ -235,7 +235,7 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator {
         * @return a TextData using the languages (in the given order of preference)
         */
        @Override
-    public TextData generatePreferredSingleTextData(FeatureTree featureTree, TaxonDescription description, List<Language> languages) {
+    public TextData generatePreferredSingleTextData(TermTree featureTree, TaxonDescription description, List<Language> languages) {
                levels.clear(); // before the start, the table containing the levels of each node must be cleared
                // Note: this is not the most efficient way to keep track of the levels of the nodes but it allows some flexibility
                List<TextData> texts = generatePreferredNaturalLanguageDescription(featureTree,description, languages);// first get the description as a raw list of TextData
index 9dfb25e39bb1304dd51ae231fb8506979e961ff2..4bda91ea706f6d846b673eeeaf0e34454e68bf42 100644 (file)
@@ -40,8 +40,8 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 
 
@@ -142,7 +142,7 @@ public class CacheUpdater implements Serializable {
                        return handleClassList(list, monitor);
                }else if (clazz.isAssignableFrom(TermBase.class)){
                        @SuppressWarnings("rawtypes")
-            List list = Arrays.asList(new Class[]{DefinedTermBase.class, FeatureTree.class, TermVocabulary.class });
+            List list = Arrays.asList(new Class[]{DefinedTermBase.class, TermTree.class, TermVocabulary.class });
                        return handleClassList(list, monitor);
                }else{
                   return null;
@@ -161,9 +161,8 @@ public class CacheUpdater implements Serializable {
                try {
                        //TermBase
                        if (DefinedTermBase.class.isAssignableFrom(clazz)){
-
                            result.includeResult(termService.updateCaches((Class) clazz, null, null, subMonitor));
-                       }else if (FeatureTree.class.isAssignableFrom(clazz)){
+                       }else if (TermTree.class.isAssignableFrom(clazz)){
                            result.includeResult(featureTreeService.updateCaches((Class) clazz, null, null, subMonitor));
                        }else if (TermVocabulary.class.isAssignableFrom(clazz)){
                            result.includeResult(vocabularyService.updateCaches((Class) clazz, null, null, subMonitor));
index fa2c75751cedac6340900232e45471b847abedcf..487013cdfbb6605e577e1c050fdd5644e26ce18e 100644 (file)
@@ -14,7 +14,7 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.strategy.cache.taxon.TaxonBaseShortSecCacheStrategy;
 
@@ -31,7 +31,7 @@ public class CacheUpdaterWithNewCacheStrategy extends CacheUpdater {
                        //TermBase
                        if (DefinedTermBase.class.isAssignableFrom(clazz)){
                                termService.updateCaches((Class) clazz, null, null, null);
-                       }else if (FeatureTree.class.isAssignableFrom(clazz)){
+                       }else if (TermTree.class.isAssignableFrom(clazz)){
                                featureTreeService.updateCaches((Class) clazz, null, null, null);
                        }else if (TermVocabulary.class.isAssignableFrom(clazz)){
                                vocabularyService.updateCaches((Class) clazz, null, null, null);
index bd858b2252df6d9eced922ecda21fa2216abea20..0f7e2f920c9389c58b62c9ba4ac8b463c35ceb31 100644 (file)
@@ -47,7 +47,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.term.TermTreeNode;\r
-import eu.etaxonomy.cdm.model.term.FeatureTree;\r
+import eu.etaxonomy.cdm.model.term.TermTree;\r
 import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 \r
 /**\r
@@ -79,7 +79,7 @@ class BatchValidationUtil {
 //        services.add(new EntityValidationUnit(OriginalSourceBase.class, appConfig.getCommonService()));\r
         services.add(new EntityValidationUnit(DescriptionBase.class, appConfig.getDescriptionService()));\r
         services.add(new EntityValidationUnit(TermTreeNode.class, appConfig.getFeatureNodeService()));\r
-        services.add(new EntityValidationUnit(FeatureTree.class, appConfig.getFeatureTreeService()));\r
+        services.add(new EntityValidationUnit(TermTree.class, appConfig.getFeatureTreeService()));\r
         services.add(new EntityValidationUnit(Group.class, appConfig.getGroupService()));\r
         // Causes some AOP-related error when calling list() method on it\r
         //services.add(new EntityValidationUnit(DefinedTermBase.class, appConfig.getLocationService()));\r
index 6956cf70b8a1f22dd8433b263181f2e0ddf9e5c1..9db98d10ebb6ed80776eb7daefd29d4edaa8461b 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandlin
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
 
@@ -72,7 +72,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{
 
        @Test
        public final void testIndexCreatRoot() {
-               FeatureTree<Feature> featureTree = FeatureTree.NewInstance();
+        TermTree<Feature> featureTree = TermTree.NewInstance();
                featureTreeService.save(featureTree);
 
                Feature feature = (Feature)termService.find(914);
@@ -108,7 +108,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{
        @DataSet(value="FeatureNodeServiceImplTest-indexing.xml")
        public final void testIndexMoveNode() {
                //in feature tree
-               FeatureTree<Feature> featureTree = featureTreeService.load(featureTreeUuid);
+        TermTree<Feature> featureTree = featureTreeService.load(featureTreeUuid);
                node2 = featureNodeService.load(node2Uuid);
                node3 = featureNodeService.load(node3Uuid);
                node3.addChild(node2);
@@ -118,7 +118,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{
                Assert.assertEquals("Node6 treeindex is not correct", node3.treeIndex() + "2#4#6#", node6.treeIndex());
 
                //root of new feature tree
-               FeatureTree<Feature> featureTree2 = featureTreeService.load(featureTree2Uuid);
+               TermTree<Feature> featureTree2 = featureTreeService.load(featureTree2Uuid);
                node2 = featureNodeService.load(node2Uuid);
                featureTree2.getRoot().addChild(node2);
                featureNodeService.saveOrUpdate(node2);
@@ -151,7 +151,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{
         config.setChildHandling(ChildHandling.MOVE_TO_PARENT);
         DeleteResult result = featureNodeService.deleteFeatureNode(node2Uuid, config);
         commitAndStartNewTransaction(new String[]{"TaxonNode"});
-        FeatureTree tree1 = featureTreeService.load(featureTreeUuid);
+        TermTree tree1 = featureTreeService.load(featureTreeUuid);
         assertNotNull(tree1);
         node2 = featureNodeService.load(node2Uuid);
         assertNull(node2);
@@ -169,7 +169,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{
         TermTreeNode node6 = featureNodeService.load(node6Uuid);
         assertNull(node6);
 
-               HibernateProxyHelper.deproxy(tree1, FeatureTree.class);
+               HibernateProxyHelper.deproxy(tree1, TermTree.class);
                TermTreeNode rootNode = HibernateProxyHelper.deproxy(tree1.getRoot(), TermTreeNode.class);
                assertNotNull(tree1);
                featureTreeService.delete(tree1.getUuid());
index 6445c9b18bec31d782992c9ad3c7959f4dc521e8..4b28ff48cfda51f7f794fa908c30a041f4e342ef 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.name.INonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermTreeNode;
 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
 
@@ -42,7 +42,7 @@ public class NaturalLanguageGeneratorTest extends CdmIntegrationTest {
        @SpringBeanByType
        private INaturalLanguageGenerator generator;
 
-    private FeatureTree featureTree;
+    private TermTree featureTree;
     private TaxonDescription description;
     Set<Feature> featureSet  = new HashSet<Feature>();
 
@@ -54,7 +54,7 @@ public class NaturalLanguageGeneratorTest extends CdmIntegrationTest {
                Taxon taxon = Taxon.NewInstance(tnb, null);
                description = TaxonDescription.NewInstance(taxon);
 
-               featureTree= FeatureTree.NewInstance();
+               featureTree= TermTree.NewInstance();
                TermTreeNode root = featureTree.getRoot();
                String[][][] tableStrings = { { {"a","b"} } , { { "a1" , "a2"  } , { "b1" } } };
                buildBranches(root,tableStrings,0,2,0);
index bd52b825296cc61e0db5d82437965edd5546f6aa..432413ae8d4df129d09598566173e8bd689c3f35 100644 (file)
@@ -46,11 +46,9 @@ public class TestModelUpdate {
 
                DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
 
-
                String database = (schema == DbSchemaValidation.VALIDATE  ? "cdm50" : "cdm55");
                CdmDataSource dataSource = getDatasource(dbType, database);
 
-
                try {
 //                 int n = dataSource.executeUpdate("UPDATE CdmMetaData SET value = '3.1.0.0.201607300000' WHERE propertyname = 0 ");
                        CdmUpdater updater = new CdmUpdater();