From 7646382768282404c14b12c81acad40e55b1151f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20M=C3=BCller?= Date: Mon, 22 Jul 2019 13:31:05 +0200 Subject: [PATCH] ref #6794 rename TermTreeNode -> TermNode --- .../etaxonomy/cdm/mappings/hibernate.cfg.xml | 2 +- .../io/descriptive/owl/in/OwlImportUtil.java | 692 +++++++++--------- .../owl/in/StructureTreeOwlImport.java | 6 +- .../io/descriptive/owl/out/OwlExportUtil.java | 14 +- .../io/descriptive/word/out/WordExport.java | 10 +- .../eu/etaxonomy/cdm/io/jaxb/JaxbImport.java | 4 +- .../cdm/io/markup/MarkupImportState.java | 10 +- .../eu/etaxonomy/cdm/io/sdd/in/SDDImport.java | 16 +- .../etaxonomy/cdm/io/sdd/out/SDDDataSet.java | 4 +- .../cdm/io/sdd/out/SDDDocumentBuilder.java | 22 +- .../taxonx2013/TaxonXTreatmentExtractor.java | 4 +- .../main/resources/schema/cdm/description.xsd | 2 +- .../io/owl/in/StructureTreeOwlImportTest.java | 12 +- .../cdm/io/owl/out/OwlExportTest.java | 14 +- .../etaxonomy/cdm/database/ClearDBDataSet.xml | 8 +- .../database/ClearDB_with_Terms_DataSet.xml | 8 +- .../etaxonomy/cdm/model/common/TreeIndex.java | 4 +- .../cdm/model/description/Character.java | 20 +- .../etaxonomy/cdm/model/term/ITermTree.java | 4 +- .../cdm/model/term/OrderedTermVocabulary.java | 6 +- .../term/{TermTreeNode.java => TermNode.java} | 116 ++- .../cdm/model/term/TermRelationBase.java | 4 +- .../eu/etaxonomy/cdm/model/term/TermTree.java | 32 +- .../cdm/model/term/TermVocabulary.java | 2 +- .../generate/PolytomousKeyGenerator.java | 6 +- .../cdm/model/term/FeatureTreeTest.java | 14 +- .../data/FullCoverageDataGenerator.java | 6 +- .../update/v55_58/FeatureTreeMover.java | 6 +- .../update/v55_58/SchemaUpdater_55_58.java | 30 +- .../dao/description/IFeatureTreeDao.java | 4 +- ...TermTreeNodeDao.java => ITermNodeDao.java} | 6 +- .../description/DescriptiveDataSetDao.java | 2 +- ...eNodeDaoImpl.java => TermNodeDaoImpl.java} | 18 +- .../description/TermTreeDaoImpl.java | 8 +- .../initializer/AdvancedBeanInitializer.java | 2 +- .../hibernate/PostMergeEntityListener.java | 10 +- .../permission/CdmPermissionClass.java | 2 +- .../eu/etaxonomy/cdm/hibernate.cfg.xml | 2 +- .../common/CdmGenericDaoImplTest.java | 4 +- .../etaxonomy/cdm/database/ClearDBDataSet.xml | 8 +- .../database/ClearDB_with_Terms_DataSet.xml | 8 +- ...ontroller.java => TermNodeController.java} | 0 .../api/service/DescriptionServiceImpl.java | 6 +- .../api/service/FeatureNodeServiceImpl.java | 34 +- .../api/service/FeatureTreeServiceImpl.java | 16 +- .../cdm/api/service/IFeatureNodeService.java | 8 +- .../cdm/api/service/IFeatureTreeService.java | 8 +- .../api/service/NaturalLanguageGenerator.java | 8 +- .../validation/batch/BatchValidationUtil.java | 4 +- .../service/FeatureNodeServiceImplTest.java | 22 +- .../service/NaturalLanguageGeneratorTest.java | 8 +- .../FeatureNodeServiceImplTest-indexing.xml | 14 +- .../etaxonomy/cdm/database/ClearDBDataSet.xml | 8 +- .../database/ClearDB_with_Terms_DataSet.xml | 8 +- .../main/resources/dbscripts/001-cdm.h2.sql | 44 +- .../etaxonomy/cdm/database/ClearDBDataSet.xml | 8 +- .../database/ClearDB_with_Terms_DataSet.xml | 8 +- .../eu/etaxonomy/cdm/hibernate.cfg.xml | 2 +- 58 files changed, 677 insertions(+), 681 deletions(-) rename cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/{TermTreeNode.java => TermNode.java} (85%) rename cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/{ITermTreeNodeDao.java => ITermNodeDao.java} (66%) rename cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/{TermTreeNodeDaoImpl.java => TermNodeDaoImpl.java} (58%) rename cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/{FeatureNodeController.java => TermNodeController.java} (100%) diff --git a/cdmlib-cache/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml b/cdmlib-cache/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml index 955b905c24..68b2ab484b 100644 --- a/cdmlib-cache/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml +++ b/cdmlib-cache/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml @@ -217,7 +217,7 @@ Difference are to be found in - + diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/OwlImportUtil.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/OwlImportUtil.java index 86ab94207b..5e26518da2 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/OwlImportUtil.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/OwlImportUtil.java @@ -1,346 +1,346 @@ -/** -* Copyright (C) 2019 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.cdm.io.descriptive.owl.in; - -import java.net.URI; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; - -import com.hp.hpl.jena.rdf.model.Model; -import com.hp.hpl.jena.rdf.model.Resource; -import com.hp.hpl.jena.rdf.model.Statement; - -import eu.etaxonomy.cdm.api.application.ICdmRepository; -import eu.etaxonomy.cdm.common.CdmUtils; -import eu.etaxonomy.cdm.io.descriptive.owl.OwlUtil; -import eu.etaxonomy.cdm.model.common.IdentifiableSource; -import eu.etaxonomy.cdm.model.common.Language; -import eu.etaxonomy.cdm.model.description.Character; -import eu.etaxonomy.cdm.model.description.Feature; -import eu.etaxonomy.cdm.model.description.MeasurementUnit; -import eu.etaxonomy.cdm.model.description.State; -import eu.etaxonomy.cdm.model.description.StatisticalMeasure; -import eu.etaxonomy.cdm.model.media.Media; -import eu.etaxonomy.cdm.model.reference.OriginalSourceType; -import eu.etaxonomy.cdm.model.reference.Reference; -import eu.etaxonomy.cdm.model.reference.ReferenceFactory; -import eu.etaxonomy.cdm.model.term.DefinedTerm; -import eu.etaxonomy.cdm.model.term.DefinedTermBase; -import eu.etaxonomy.cdm.model.term.Representation; -import eu.etaxonomy.cdm.model.term.TermTreeNode; -import eu.etaxonomy.cdm.model.term.TermType; -import eu.etaxonomy.cdm.model.term.TermVocabulary; - -/** - * @author pplitzner - * @since May 26, 2019 - * - */ -public class OwlImportUtil { - - static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(OwlImportUtil.class); - - private static void addFeatureProperties(Feature feature, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - if(termResource.hasProperty(OwlUtil.propFeatureIsCategorical)){ - feature.setSupportsCategoricalData(termResource.getProperty(OwlUtil.propFeatureIsCategorical).getBoolean()); - } - if(termResource.hasProperty(OwlUtil.propFeatureIsQuantitative)){ - feature.setSupportsQuantitativeData(termResource.getProperty(OwlUtil.propFeatureIsQuantitative).getBoolean()); - } - // import measurement units - Set measurementUnits = new HashSet<>(); - List measurementUnitStatements = termResource.listProperties(OwlUtil.propFeatureHasRecommendedMeasurementUnit).toList(); - for (Statement statement : measurementUnitStatements) { - Resource measurementUnitResource = model.createResource(statement.getObject().toString()); - MeasurementUnit measurementUnit = findTerm(MeasurementUnit.class, measurementUnitResource, repo, model, state); - if(measurementUnit==null){ - measurementUnit = MeasurementUnit.NewInstance(); - addTermProperties(measurementUnit, measurementUnitResource, repo, model, state); - } - measurementUnits.add(measurementUnit); - } - measurementUnits.forEach(unit->feature.addRecommendedMeasurementUnit(unit)); - // import modifier TODO: create entire vocabulary if it cannot be found - Set> modifierVocs = new HashSet<>(); - List modifierEnumStatements = termResource.listProperties(OwlUtil.propFeatureHasRecommendedModifierEnumeration).toList(); - for (Statement statement : modifierEnumStatements) { - Resource modifierEnumResource = model.createResource(statement.getObject().toString()); - TermVocabulary modifierVoc = findVocabulary(modifierEnumResource, repo, model, state); - if(modifierVoc!=null){ - modifierVocs.add(modifierVoc); - } - } - modifierVocs.forEach(modiferVoc->feature.addRecommendedModifierEnumeration(modiferVoc)); - // import statistical measures - Set statisticalMeasures = new HashSet<>(); - List statisticalMeasureStatements = termResource.listProperties(OwlUtil.propFeatureHasRecommendedStatisticalMeasure).toList(); - for (Statement statement : statisticalMeasureStatements) { - Resource statisticalMeasureResource = model.createResource(statement.getObject().toString()); - StatisticalMeasure statisticalMeasure = findTerm(StatisticalMeasure.class, statisticalMeasureResource, repo, model, state); - if(statisticalMeasure==null){ - statisticalMeasure = StatisticalMeasure.NewInstance(); - addTermProperties(statisticalMeasure, statisticalMeasureResource, repo, model, state); - } - statisticalMeasures.add(statisticalMeasure); - } - statisticalMeasures.forEach(statisticalMeasure->feature.addRecommendedStatisticalMeasure(statisticalMeasure)); - // import categorical enums TODO: create entire vocabulary if it cannot be found - Set> stateVocs = new HashSet<>(); - List stateVocStatements = termResource.listProperties(OwlUtil.propFeatureHasSupportedCategoricalEnumeration).toList(); - for (Statement statement : stateVocStatements) { - Resource stateVocResource = model.createResource(statement.getObject().toString()); - TermVocabulary stateVoc = findVocabulary(stateVocResource, repo, model, state); - if(stateVoc!=null){ - stateVocs.add(stateVoc); - } - } - stateVocs.forEach(stateVoc->feature.addSupportedCategoricalEnumeration(stateVoc)); - } - - private static void addCharacterProperties(Character character, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - addFeatureProperties(character, termResource, repo, model, state); - // TODO import/export of complete term tree of structures and properties belonging to a character is necessary - // import structure - Statement structureStatement = termResource.getProperty(OwlUtil.propCharacterHasStructure); - Resource structureResource = model.createResource(structureStatement.getObject().toString()); - TermTreeNode structureNode = findNode(structureResource, repo, model, state); - if(structureNode!=null){ - character.setStructure(structureNode); - } - // import property - Statement propertyStatement = termResource.getProperty(OwlUtil.propCharacterHasProperty); - Resource propertyResource = model.createResource(propertyStatement.getObject().toString()); - TermTreeNode propertyNode = findNode(propertyResource, repo, model, state); - if(propertyNode!=null){ - character.setProperty(propertyNode); - } - // import structure modifier - if(termResource.hasProperty(OwlUtil.propCharacterHasStructureModfier)){ - Statement structureModifierStatement = termResource.getProperty(OwlUtil.propCharacterHasStructureModfier); - Resource structureModifierResource = model.createResource(structureModifierStatement.getObject().toString()); - DefinedTerm structureModifier = findTerm(DefinedTerm.class, structureModifierResource, repo, model, state); - character.setStructureModifier(structureModifier); - } - } - - private static void addTermProperties(DefinedTermBase term, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - term.setUuid(UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString())); - - // term URI - String uriString = termResource.hasProperty(OwlUtil.propUri)?termResource.getProperty(OwlUtil.propUri).getString():null; - if(CdmUtils.isNotBlank(uriString)){ - term.setUri(URI.create(uriString)); - } - // symbol - String symbolString = termResource.hasProperty(OwlUtil.propTermSymbol)?termResource.getProperty(OwlUtil.propTermSymbol).getString():null; - if(CdmUtils.isNotBlank(symbolString)){ - term.setSymbol(symbolString); - } - // symbol2 - String symbol2String = termResource.hasProperty(OwlUtil.propTermSymbol2)?termResource.getProperty(OwlUtil.propTermSymbol2).getString():null; - if(CdmUtils.isNotBlank(symbol2String)){ - term.setSymbol2(symbol2String); - } - // idInVocabulary - String idInVocabularyString = termResource.hasProperty(OwlUtil.propTermIdInVocabulary)?termResource.getProperty(OwlUtil.propTermIdInVocabulary).getString():null; - if(CdmUtils.isNotBlank(idInVocabularyString)){ - term.setIdInVocabulary(idInVocabularyString); - } - - // import representations - Set representations = new HashSet<>(); - termResource.listProperties(OwlUtil.propHasRepresentation).forEachRemaining(r->representations.add(OwlImportUtil.createRepresentation(repo, r, model))); - if(representations.isEmpty()){ - logger.error("No representations found for term: "+termResource.getProperty(OwlUtil.propUuid)); - } - representations.forEach(rep->term.addRepresentation(rep)); - - // import sources - Set sources = new HashSet<>(); - termResource.listProperties(OwlUtil.propTermHasSource).forEachRemaining(sourceStatement->sources.add(OwlImportUtil.createSource(sourceStatement, repo, model))); - sources.forEach(source->term.addSource(source)); - - // add import source - IdentifiableSource importSource = IdentifiableSource.NewDataImportInstance(termResource.getURI()); - importSource.setCitation(state.getConfig().getSourceReference()); - term.addSource(importSource); - } - - private static T findTerm(Class clazz, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - UUID termUuid = UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString()); - List terms = repo.getTermService().find(clazz, Collections.singleton(termUuid)); - if(!terms.isEmpty()){ - return terms.iterator().next(); - } - return null; - } - - private static TermVocabulary findVocabulary(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - UUID termUuid = UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString()); - return repo.getVocabularyService().find(termUuid); - } - - private static TermTreeNode findNode(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - UUID uuid = UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString()); - return repo.getFeatureNodeService().find(uuid); - } - - private static Reference findReference(Resource resource, ICdmRepository repo){ - UUID uuid = UUID.fromString(resource.getProperty(OwlUtil.propUuid).getString()); - return repo.getReferenceService().find(uuid); - } - - static Media findMedia(Resource resource, ICdmRepository repo){ - UUID uuid = UUID.fromString(resource.getProperty(OwlUtil.propUuid).getString()); - return repo.getMediaService().find(uuid); - } - - static Feature createFeature(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - Feature feature = findTerm(Feature.class, termResource, repo, model, state); - if(feature==null){ - feature = Feature.NewInstance(); - addFeatureProperties(feature, termResource, repo, model, state); - } - return feature; - } - - private static Character createCharacter(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - Character character = findTerm(Character.class, termResource, repo, model, state); - if(character==null){ - character = Character.NewInstance(); - addCharacterProperties(character, termResource, repo, model, state); - } - return character; - } - - static DefinedTermBase createTerm(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - TermType termType = TermType.getByKey(termResource.getProperty(OwlUtil.propType).getString()); - DefinedTermBase term = null; - // create new term - if(termType.equals(TermType.Feature)){ - term = createFeature(termResource, repo, model, state); - } - else if(termType.equals(TermType.Character)){ - term = createCharacter(termResource, repo, model, state); - } - else{ - term = DefinedTerm.NewInstance(termType); - } - addTermProperties(term, termResource, repo, model, state); - return term; - } - - static IdentifiableSource createSource(Statement sourceStatement, ICdmRepository repo, Model model) { - Resource sourceResource = model.createResource(sourceStatement.getObject().toString()); - - String typeString = sourceResource.getProperty(OwlUtil.propSourceType).getString(); - IdentifiableSource source = IdentifiableSource.NewInstance(OriginalSourceType.getByKey(typeString)); - - if(sourceResource.hasProperty(OwlUtil.propSourceIdInSource)){ - String idInSource = sourceResource.getProperty(OwlUtil.propSourceIdInSource).getString(); - source.setIdInSource(idInSource); - } - - // import citation - List citationStatements = sourceResource.listProperties(OwlUtil.propSourceHasCitation).toList(); - if(citationStatements.size()>1){ - logger.error("More than one citations found for source. Choosing one arbitrarily. - "+sourceResource.toString()); - } - if(!citationStatements.isEmpty()){ - Statement citationStatement = citationStatements.iterator().next(); - Resource citationResource = model.createResource(citationStatement.getObject().toString()); - Reference reference = findReference(citationResource, repo); - if(reference==null){ - reference = createReference(citationResource, model); - } - source.setCitation(reference); - } - return source; - } - - static Reference createReference(Resource citationResource, Model model){ - String titleString = citationResource.getProperty(OwlUtil.propReferenceTitle).getString(); - Reference citation = ReferenceFactory.newGeneric(); - citation.setTitle(titleString); - return citation; - } - - static TermVocabulary createVocabulary(Resource vocabularyResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ - TermType termType = TermType.getByKey(vocabularyResource.getProperty(OwlUtil.propType).getString()); - // create new vocabulary - TermVocabulary vocabulary = TermVocabulary.NewInstance(termType); - vocabulary.setUuid(UUID.fromString(vocabularyResource.getProperty(OwlUtil.propUuid).getString())); - - // voc URI - String vocUriString = vocabularyResource.hasProperty(OwlUtil.propUri)?vocabularyResource.getProperty(OwlUtil.propUri).getString():null; - if(CdmUtils.isNotBlank(vocUriString)){ - vocabulary.setUri(URI.create(vocUriString)); - } - - // voc representations - Set vocRepresentations = new HashSet<>(); - vocabularyResource.listProperties(OwlUtil.propHasRepresentation).forEachRemaining(r->vocRepresentations.add(OwlImportUtil.createRepresentation(repo, r, model))); - if(vocRepresentations.isEmpty()){ - logger.error("No representations found for vocabulary: "+vocabularyResource.getProperty(OwlUtil.propUuid)); - } - vocRepresentations.forEach(rep->vocabulary.addRepresentation(rep)); - - IdentifiableSource importSource = IdentifiableSource.NewDataImportInstance(vocabularyResource.getURI()); - importSource.setCitation(state.getConfig().getSourceReference()); - vocabulary.addSource(importSource); - - - return vocabulary; - } - - static Media createMedia(Resource mediaResource, StructureTreeOwlImportState state){ - URI mediaUri = URI.create(mediaResource.getProperty(OwlUtil.propMediaUri).getString()); - // create new media - Media media = Media.NewInstance(mediaUri, null, null, null); - media.setUuid(UUID.fromString(mediaResource.getProperty(OwlUtil.propUuid).getString())); - - if(mediaResource.hasProperty(OwlUtil.propMediaTitle)){ - // TODO: support multiple language titles - media.putTitle(Language.DEFAULT(), mediaResource.getProperty(OwlUtil.propMediaTitle).getString()); - } - - IdentifiableSource importSource = IdentifiableSource.NewDataImportInstance(mediaResource.getURI()); - importSource.setCitation(state.getConfig().getSourceReference()); - media.addSource(importSource); - - return media; - } - - static Representation createRepresentation(ICdmRepository repo, Statement repr, Model model) { - Resource repsentationResource = model.createResource(repr.getObject().toString()); - - String languageLabel = repsentationResource.getProperty(OwlUtil.propLanguage).getString(); - UUID languageUuid = UUID.fromString(repsentationResource.getProperty(OwlUtil.propLanguageUuid).getString()); - Language language = Language.getLanguageFromUuid(languageUuid); - if(language==null){ - language = repo.getTermService().getLanguageByLabel(languageLabel); - } - if(language==null){ - language = Language.getDefaultLanguage(); - } - - String abbreviatedLabel = repsentationResource.hasProperty(OwlUtil.propLabelAbbrev)?repsentationResource.getProperty(OwlUtil.propLabelAbbrev).getString():null; - String plural = repsentationResource.hasProperty(OwlUtil.propLabelPlural)?repsentationResource.getProperty(OwlUtil.propLabelPlural).getString():null; - String label = repsentationResource.getProperty(OwlUtil.propLabel).getString(); - String description = repsentationResource.hasProperty(OwlUtil.propDescription)?repsentationResource.getProperty(OwlUtil.propDescription).getString():null; - Representation representation = Representation.NewInstance(description, label, abbreviatedLabel, language); - representation.setPlural(plural); - - return representation; - } - -} +/** +* Copyright (C) 2019 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.cdm.io.descriptive.owl.in; + +import java.net.URI; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import com.hp.hpl.jena.rdf.model.Model; +import com.hp.hpl.jena.rdf.model.Resource; +import com.hp.hpl.jena.rdf.model.Statement; + +import eu.etaxonomy.cdm.api.application.ICdmRepository; +import eu.etaxonomy.cdm.common.CdmUtils; +import eu.etaxonomy.cdm.io.descriptive.owl.OwlUtil; +import eu.etaxonomy.cdm.model.common.IdentifiableSource; +import eu.etaxonomy.cdm.model.common.Language; +import eu.etaxonomy.cdm.model.description.Character; +import eu.etaxonomy.cdm.model.description.Feature; +import eu.etaxonomy.cdm.model.description.MeasurementUnit; +import eu.etaxonomy.cdm.model.description.State; +import eu.etaxonomy.cdm.model.description.StatisticalMeasure; +import eu.etaxonomy.cdm.model.media.Media; +import eu.etaxonomy.cdm.model.reference.OriginalSourceType; +import eu.etaxonomy.cdm.model.reference.Reference; +import eu.etaxonomy.cdm.model.reference.ReferenceFactory; +import eu.etaxonomy.cdm.model.term.DefinedTerm; +import eu.etaxonomy.cdm.model.term.DefinedTermBase; +import eu.etaxonomy.cdm.model.term.Representation; +import eu.etaxonomy.cdm.model.term.TermNode; +import eu.etaxonomy.cdm.model.term.TermType; +import eu.etaxonomy.cdm.model.term.TermVocabulary; + +/** + * @author pplitzner + * @since May 26, 2019 + * + */ +public class OwlImportUtil { + + static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(OwlImportUtil.class); + + private static void addFeatureProperties(Feature feature, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + if(termResource.hasProperty(OwlUtil.propFeatureIsCategorical)){ + feature.setSupportsCategoricalData(termResource.getProperty(OwlUtil.propFeatureIsCategorical).getBoolean()); + } + if(termResource.hasProperty(OwlUtil.propFeatureIsQuantitative)){ + feature.setSupportsQuantitativeData(termResource.getProperty(OwlUtil.propFeatureIsQuantitative).getBoolean()); + } + // import measurement units + Set measurementUnits = new HashSet<>(); + List measurementUnitStatements = termResource.listProperties(OwlUtil.propFeatureHasRecommendedMeasurementUnit).toList(); + for (Statement statement : measurementUnitStatements) { + Resource measurementUnitResource = model.createResource(statement.getObject().toString()); + MeasurementUnit measurementUnit = findTerm(MeasurementUnit.class, measurementUnitResource, repo, model, state); + if(measurementUnit==null){ + measurementUnit = MeasurementUnit.NewInstance(); + addTermProperties(measurementUnit, measurementUnitResource, repo, model, state); + } + measurementUnits.add(measurementUnit); + } + measurementUnits.forEach(unit->feature.addRecommendedMeasurementUnit(unit)); + // import modifier TODO: create entire vocabulary if it cannot be found + Set> modifierVocs = new HashSet<>(); + List modifierEnumStatements = termResource.listProperties(OwlUtil.propFeatureHasRecommendedModifierEnumeration).toList(); + for (Statement statement : modifierEnumStatements) { + Resource modifierEnumResource = model.createResource(statement.getObject().toString()); + TermVocabulary modifierVoc = findVocabulary(modifierEnumResource, repo, model, state); + if(modifierVoc!=null){ + modifierVocs.add(modifierVoc); + } + } + modifierVocs.forEach(modiferVoc->feature.addRecommendedModifierEnumeration(modiferVoc)); + // import statistical measures + Set statisticalMeasures = new HashSet<>(); + List statisticalMeasureStatements = termResource.listProperties(OwlUtil.propFeatureHasRecommendedStatisticalMeasure).toList(); + for (Statement statement : statisticalMeasureStatements) { + Resource statisticalMeasureResource = model.createResource(statement.getObject().toString()); + StatisticalMeasure statisticalMeasure = findTerm(StatisticalMeasure.class, statisticalMeasureResource, repo, model, state); + if(statisticalMeasure==null){ + statisticalMeasure = StatisticalMeasure.NewInstance(); + addTermProperties(statisticalMeasure, statisticalMeasureResource, repo, model, state); + } + statisticalMeasures.add(statisticalMeasure); + } + statisticalMeasures.forEach(statisticalMeasure->feature.addRecommendedStatisticalMeasure(statisticalMeasure)); + // import categorical enums TODO: create entire vocabulary if it cannot be found + Set> stateVocs = new HashSet<>(); + List stateVocStatements = termResource.listProperties(OwlUtil.propFeatureHasSupportedCategoricalEnumeration).toList(); + for (Statement statement : stateVocStatements) { + Resource stateVocResource = model.createResource(statement.getObject().toString()); + TermVocabulary stateVoc = findVocabulary(stateVocResource, repo, model, state); + if(stateVoc!=null){ + stateVocs.add(stateVoc); + } + } + stateVocs.forEach(stateVoc->feature.addSupportedCategoricalEnumeration(stateVoc)); + } + + private static void addCharacterProperties(Character character, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + addFeatureProperties(character, termResource, repo, model, state); + // TODO import/export of complete term tree of structures and properties belonging to a character is necessary + // import structure + Statement structureStatement = termResource.getProperty(OwlUtil.propCharacterHasStructure); + Resource structureResource = model.createResource(structureStatement.getObject().toString()); + TermNode structureNode = findNode(structureResource, repo, model, state); + if(structureNode!=null){ + character.setStructure(structureNode); + } + // import property + Statement propertyStatement = termResource.getProperty(OwlUtil.propCharacterHasProperty); + Resource propertyResource = model.createResource(propertyStatement.getObject().toString()); + TermNode propertyNode = findNode(propertyResource, repo, model, state); + if(propertyNode!=null){ + character.setProperty(propertyNode); + } + // import structure modifier + if(termResource.hasProperty(OwlUtil.propCharacterHasStructureModfier)){ + Statement structureModifierStatement = termResource.getProperty(OwlUtil.propCharacterHasStructureModfier); + Resource structureModifierResource = model.createResource(structureModifierStatement.getObject().toString()); + DefinedTerm structureModifier = findTerm(DefinedTerm.class, structureModifierResource, repo, model, state); + character.setStructureModifier(structureModifier); + } + } + + private static void addTermProperties(DefinedTermBase term, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + term.setUuid(UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString())); + + // term URI + String uriString = termResource.hasProperty(OwlUtil.propUri)?termResource.getProperty(OwlUtil.propUri).getString():null; + if(CdmUtils.isNotBlank(uriString)){ + term.setUri(URI.create(uriString)); + } + // symbol + String symbolString = termResource.hasProperty(OwlUtil.propTermSymbol)?termResource.getProperty(OwlUtil.propTermSymbol).getString():null; + if(CdmUtils.isNotBlank(symbolString)){ + term.setSymbol(symbolString); + } + // symbol2 + String symbol2String = termResource.hasProperty(OwlUtil.propTermSymbol2)?termResource.getProperty(OwlUtil.propTermSymbol2).getString():null; + if(CdmUtils.isNotBlank(symbol2String)){ + term.setSymbol2(symbol2String); + } + // idInVocabulary + String idInVocabularyString = termResource.hasProperty(OwlUtil.propTermIdInVocabulary)?termResource.getProperty(OwlUtil.propTermIdInVocabulary).getString():null; + if(CdmUtils.isNotBlank(idInVocabularyString)){ + term.setIdInVocabulary(idInVocabularyString); + } + + // import representations + Set representations = new HashSet<>(); + termResource.listProperties(OwlUtil.propHasRepresentation).forEachRemaining(r->representations.add(OwlImportUtil.createRepresentation(repo, r, model))); + if(representations.isEmpty()){ + logger.error("No representations found for term: "+termResource.getProperty(OwlUtil.propUuid)); + } + representations.forEach(rep->term.addRepresentation(rep)); + + // import sources + Set sources = new HashSet<>(); + termResource.listProperties(OwlUtil.propTermHasSource).forEachRemaining(sourceStatement->sources.add(OwlImportUtil.createSource(sourceStatement, repo, model))); + sources.forEach(source->term.addSource(source)); + + // add import source + IdentifiableSource importSource = IdentifiableSource.NewDataImportInstance(termResource.getURI()); + importSource.setCitation(state.getConfig().getSourceReference()); + term.addSource(importSource); + } + + private static T findTerm(Class clazz, Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + UUID termUuid = UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString()); + List terms = repo.getTermService().find(clazz, Collections.singleton(termUuid)); + if(!terms.isEmpty()){ + return terms.iterator().next(); + } + return null; + } + + private static TermVocabulary findVocabulary(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + UUID termUuid = UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString()); + return repo.getVocabularyService().find(termUuid); + } + + private static TermNode findNode(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + UUID uuid = UUID.fromString(termResource.getProperty(OwlUtil.propUuid).getString()); + return repo.getFeatureNodeService().find(uuid); + } + + private static Reference findReference(Resource resource, ICdmRepository repo){ + UUID uuid = UUID.fromString(resource.getProperty(OwlUtil.propUuid).getString()); + return repo.getReferenceService().find(uuid); + } + + static Media findMedia(Resource resource, ICdmRepository repo){ + UUID uuid = UUID.fromString(resource.getProperty(OwlUtil.propUuid).getString()); + return repo.getMediaService().find(uuid); + } + + static Feature createFeature(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + Feature feature = findTerm(Feature.class, termResource, repo, model, state); + if(feature==null){ + feature = Feature.NewInstance(); + addFeatureProperties(feature, termResource, repo, model, state); + } + return feature; + } + + private static Character createCharacter(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + Character character = findTerm(Character.class, termResource, repo, model, state); + if(character==null){ + character = Character.NewInstance(); + addCharacterProperties(character, termResource, repo, model, state); + } + return character; + } + + static DefinedTermBase createTerm(Resource termResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + TermType termType = TermType.getByKey(termResource.getProperty(OwlUtil.propType).getString()); + DefinedTermBase term = null; + // create new term + if(termType.equals(TermType.Feature)){ + term = createFeature(termResource, repo, model, state); + } + else if(termType.equals(TermType.Character)){ + term = createCharacter(termResource, repo, model, state); + } + else{ + term = DefinedTerm.NewInstance(termType); + } + addTermProperties(term, termResource, repo, model, state); + return term; + } + + static IdentifiableSource createSource(Statement sourceStatement, ICdmRepository repo, Model model) { + Resource sourceResource = model.createResource(sourceStatement.getObject().toString()); + + String typeString = sourceResource.getProperty(OwlUtil.propSourceType).getString(); + IdentifiableSource source = IdentifiableSource.NewInstance(OriginalSourceType.getByKey(typeString)); + + if(sourceResource.hasProperty(OwlUtil.propSourceIdInSource)){ + String idInSource = sourceResource.getProperty(OwlUtil.propSourceIdInSource).getString(); + source.setIdInSource(idInSource); + } + + // import citation + List citationStatements = sourceResource.listProperties(OwlUtil.propSourceHasCitation).toList(); + if(citationStatements.size()>1){ + logger.error("More than one citations found for source. Choosing one arbitrarily. - "+sourceResource.toString()); + } + if(!citationStatements.isEmpty()){ + Statement citationStatement = citationStatements.iterator().next(); + Resource citationResource = model.createResource(citationStatement.getObject().toString()); + Reference reference = findReference(citationResource, repo); + if(reference==null){ + reference = createReference(citationResource, model); + } + source.setCitation(reference); + } + return source; + } + + static Reference createReference(Resource citationResource, Model model){ + String titleString = citationResource.getProperty(OwlUtil.propReferenceTitle).getString(); + Reference citation = ReferenceFactory.newGeneric(); + citation.setTitle(titleString); + return citation; + } + + static TermVocabulary createVocabulary(Resource vocabularyResource, ICdmRepository repo, Model model, StructureTreeOwlImportState state){ + TermType termType = TermType.getByKey(vocabularyResource.getProperty(OwlUtil.propType).getString()); + // create new vocabulary + TermVocabulary vocabulary = TermVocabulary.NewInstance(termType); + vocabulary.setUuid(UUID.fromString(vocabularyResource.getProperty(OwlUtil.propUuid).getString())); + + // voc URI + String vocUriString = vocabularyResource.hasProperty(OwlUtil.propUri)?vocabularyResource.getProperty(OwlUtil.propUri).getString():null; + if(CdmUtils.isNotBlank(vocUriString)){ + vocabulary.setUri(URI.create(vocUriString)); + } + + // voc representations + Set vocRepresentations = new HashSet<>(); + vocabularyResource.listProperties(OwlUtil.propHasRepresentation).forEachRemaining(r->vocRepresentations.add(OwlImportUtil.createRepresentation(repo, r, model))); + if(vocRepresentations.isEmpty()){ + logger.error("No representations found for vocabulary: "+vocabularyResource.getProperty(OwlUtil.propUuid)); + } + vocRepresentations.forEach(rep->vocabulary.addRepresentation(rep)); + + IdentifiableSource importSource = IdentifiableSource.NewDataImportInstance(vocabularyResource.getURI()); + importSource.setCitation(state.getConfig().getSourceReference()); + vocabulary.addSource(importSource); + + + return vocabulary; + } + + static Media createMedia(Resource mediaResource, StructureTreeOwlImportState state){ + URI mediaUri = URI.create(mediaResource.getProperty(OwlUtil.propMediaUri).getString()); + // create new media + Media media = Media.NewInstance(mediaUri, null, null, null); + media.setUuid(UUID.fromString(mediaResource.getProperty(OwlUtil.propUuid).getString())); + + if(mediaResource.hasProperty(OwlUtil.propMediaTitle)){ + // TODO: support multiple language titles + media.putTitle(Language.DEFAULT(), mediaResource.getProperty(OwlUtil.propMediaTitle).getString()); + } + + IdentifiableSource importSource = IdentifiableSource.NewDataImportInstance(mediaResource.getURI()); + importSource.setCitation(state.getConfig().getSourceReference()); + media.addSource(importSource); + + return media; + } + + static Representation createRepresentation(ICdmRepository repo, Statement repr, Model model) { + Resource repsentationResource = model.createResource(repr.getObject().toString()); + + String languageLabel = repsentationResource.getProperty(OwlUtil.propLanguage).getString(); + UUID languageUuid = UUID.fromString(repsentationResource.getProperty(OwlUtil.propLanguageUuid).getString()); + Language language = Language.getLanguageFromUuid(languageUuid); + if(language==null){ + language = repo.getTermService().getLanguageByLabel(languageLabel); + } + if(language==null){ + language = Language.getDefaultLanguage(); + } + + String abbreviatedLabel = repsentationResource.hasProperty(OwlUtil.propLabelAbbrev)?repsentationResource.getProperty(OwlUtil.propLabelAbbrev).getString():null; + String plural = repsentationResource.hasProperty(OwlUtil.propLabelPlural)?repsentationResource.getProperty(OwlUtil.propLabelPlural).getString():null; + String label = repsentationResource.getProperty(OwlUtil.propLabel).getString(); + String description = repsentationResource.hasProperty(OwlUtil.propDescription)?repsentationResource.getProperty(OwlUtil.propDescription).getString():null; + Representation representation = Representation.NewInstance(description, label, abbreviatedLabel, language); + representation.setPlural(plural); + + return representation; + } + +} diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/StructureTreeOwlImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/StructureTreeOwlImport.java index e89dfca27d..c2475e5766 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/StructureTreeOwlImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/in/StructureTreeOwlImport.java @@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.io.descriptive.owl.OwlUtil; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.term.DefinedTermBase; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.model.term.TermVocabulary; @@ -67,7 +67,7 @@ public class StructureTreeOwlImport extends CdmImportBase void createNode(TermTreeNode parent, Statement nodeStatement, String treeLabel, Model model, StructureTreeOwlImportState state) { + private void createNode(TermNode parent, Statement nodeStatement, String treeLabel, Model model, StructureTreeOwlImportState state) { if(state.getConfig().getProgressMonitor().isCanceled()){ return; } @@ -95,7 +95,7 @@ public class StructureTreeOwlImport extends CdmImportBase childNode = parent.addChild(term); + TermNode childNode = parent.addChild(term); state.getConfig().getProgressMonitor().worked(1); diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/out/OwlExportUtil.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/out/OwlExportUtil.java index 27c64af871..7958bdf632 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/out/OwlExportUtil.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/owl/out/OwlExportUtil.java @@ -34,7 +34,7 @@ import eu.etaxonomy.cdm.model.term.DefinedTermBase; import eu.etaxonomy.cdm.model.term.Representation; import eu.etaxonomy.cdm.model.term.TermBase; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; import eu.etaxonomy.cdm.persistence.dto.TermDto; @@ -267,7 +267,7 @@ public class OwlExportUtil { .addProperty(OwlUtil.propType, featureTree.getTermType().getKey()) ; - TermTreeNode rootNode = featureTree.getRoot(); + TermNode rootNode = featureTree.getRoot(); Resource resourceRootNode = OwlExportUtil.createNodeResource(rootNode, false, repo, state); featureTreeResource.addProperty(OwlUtil.propHasRootNode, resourceRootNode); @@ -277,9 +277,9 @@ public class OwlExportUtil { return featureTreeResource; } - private static void addChildNode(TermTreeNode parentNode, Resource parentResourceNode, ICdmRepository repo, StructureTreeOwlExportState state){ - List childNodes = parentNode.getChildNodes(); - for (TermTreeNode child : childNodes) { + private static void addChildNode(TermNode parentNode, Resource parentResourceNode, ICdmRepository repo, StructureTreeOwlExportState state){ + List childNodes = parentNode.getChildNodes(); + for (TermNode child : childNodes) { // create node resource with term Resource nodeResource = OwlExportUtil.createNodeResource(child, false, repo, state); @@ -290,7 +290,7 @@ public class OwlExportUtil { } } - static Resource createNodeResource(TermTreeNode node, boolean initFeatureTree, ICdmRepository repo, StructureTreeOwlExportState state) { + static Resource createNodeResource(TermNode node, boolean initFeatureTree, ICdmRepository repo, StructureTreeOwlExportState state) { if(initFeatureTree){ createFeatureTreeResource(node.getGraph(), repo, state); return getNodeResource(node, state); @@ -333,7 +333,7 @@ public class OwlExportUtil { return state.getModel().createResource(OwlUtil.RESOURCE_MEDIA+media.getUuid().toString()); } - private static Resource getNodeResource(TermTreeNode node, StructureTreeOwlExportState state) { + private static Resource getNodeResource(TermNode node, StructureTreeOwlExportState state) { return state.getModel().createResource(OwlUtil.RESOURCE_NODE + node.getUuid().toString()); } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/word/out/WordExport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/word/out/WordExport.java index 23e3ccfb8f..06af5058fc 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/word/out/WordExport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/descriptive/word/out/WordExport.java @@ -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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; /** * @@ -46,7 +46,7 @@ public class WordExport extends CdmExportBase node, MainDocumentPart mainDocumentPart, int indent) throws Exception{ + private void addChildNode(TermNode node, MainDocumentPart mainDocumentPart, int indent) throws Exception{ String styleId = "Heading"+indent; - for (TermTreeNode childNode : node.getChildNodes()) { + for (TermNode childNode : node.getChildNodes()) { DefinedTermBase term = childNode.getTerm(); mainDocumentPart.addStyledParagraphOfText(styleId, term.getLabel()); if(term.getDescription()!=null){ diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImport.java index 981f82fb17..768a66cf91 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/jaxb/JaxbImport.java @@ -38,7 +38,7 @@ 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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; /** @@ -118,7 +118,7 @@ public class JaxbImport List> typeDesignations; List occurrences; List featureTrees; - List featureNodes; + List featureNodes; List media; List languageData; List> termVocabularies; diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupImportState.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupImportState.java index aa13d3a680..c2aa552f6c 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupImportState.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/markup/MarkupImportState.java @@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.occurrence.Collection; import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.cdm.model.taxon.Taxon; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; /** * @author a.mueller @@ -51,7 +51,7 @@ public class MarkupImportState extends XmlImportState - private Set featureNodesToSave = new HashSet(); + private Set featureNodesToSave = new HashSet(); private Set polytomousKeyNodesToSave = new HashSet<>(); @@ -115,7 +115,7 @@ public class MarkupImportState extends XmlImportState(); + featureNodesToSave = new HashSet(); polytomousKeyNodesToSave = new HashSet(); currentKey = null; defaultLanguage = null; @@ -154,11 +154,11 @@ public class MarkupImportState extends XmlImportState featureNodesToSave) { + public void setFeatureNodesToSave(Set featureNodesToSave) { this.featureNodesToSave = featureNodesToSave; } - public Set getFeatureNodesToSave() { + public Set getFeatureNodesToSave() { return featureNodesToSave; } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java index 888870129c..4468256040 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/in/SDDImport.java @@ -86,7 +86,7 @@ import eu.etaxonomy.cdm.model.term.DefinedTermBase; import eu.etaxonomy.cdm.model.term.Representation; import eu.etaxonomy.cdm.model.term.TermBase; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.model.term.TermVocabulary; @@ -106,7 +106,7 @@ public class SDDImport extends XmlImportBase citations = new HashMap<>(); private Map defaultUnitPrefixes = new HashMap<>(); private Map editors = new HashMap<>(); - private Map> featureNodes = new HashMap<>(); + private Map> featureNodes = new HashMap<>(); private Map features = new HashMap<>(); private Map locations = new HashMap<>(); private Map> mediaObject_ListCdmBase = new HashMap<>(); @@ -1753,7 +1753,7 @@ public class SDDImport extends XmlImportBase root = featureTree.getRoot(); + TermNode root = featureTree.getRoot(); List listeOfNodes = elCharacterTree.getChildren("Nodes", sddNamespace); //Nodes of CharacterTrees in SDD always refer to DescriptiveConcepts @@ -1784,12 +1784,12 @@ public class SDDImport extends XmlImportBase root, Element elNodes) { + private void handleCharacterNodes(Namespace sddNamespace, TermNode root, Element elNodes) { List listNodes = elNodes.getChildren("Node", sddNamespace); if (listNodes != null) { for (Element elNode : listNodes){ String idN = elNode.getAttributeValue("id"); - TermTreeNode fn = null; + TermNode fn = null; Feature dc = null; if (idN!=null) { // DescriptiveConcepts are used as nodes in CharacterTrees @@ -1803,7 +1803,7 @@ public class SDDImport extends XmlImportBase parent = featureNodes.get(refP); + TermNode parent = featureNodes.get(refP); if (parent==null){ // if no parent found or the reference is broken, add the node to the root of the tree fn = (dc==null)?root.addChild():root.addChild(dc); @@ -1830,12 +1830,12 @@ public class SDDImport extends XmlImportBase fn = null; + TermNode fn = null; if (elParent!=null){ String refP = elParent.getAttributeValue("ref"); if ((refP!=null)&&(!refP.equals(""))) { - TermTreeNode parent = featureNodes.get(refP); + TermNode parent = featureNodes.get(refP); if (parent==null){ parent = root; // if no parent found or the reference is broken, add the node to the root of the tree } diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDataSet.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDataSet.java index 6100a168c7..63e1bac66b 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDataSet.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDataSet.java @@ -81,7 +81,7 @@ import eu.etaxonomy.cdm.model.term.DefinedTerm; import eu.etaxonomy.cdm.model.term.DefinedTermBase; 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.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; /** @@ -133,7 +133,7 @@ public class SDDDataSet { @XmlElementWrapper(name = "FeatureData") @XmlElements({ - @XmlElement(name = "FeatureNode", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TermTreeNode.class), + @XmlElement(name = "FeatureNode", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TermNode.class), @XmlElement(name = "FeatureTree", namespace = "http://etaxonomy.eu/cdm/model/description/1.0", type = TermTree.class) }) // protected List featureData; diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDocumentBuilder.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDocumentBuilder.java index 5561f32485..98c3dc9a34 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDocumentBuilder.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDocumentBuilder.java @@ -81,7 +81,7 @@ import eu.etaxonomy.cdm.model.term.DefinedTermBase; import eu.etaxonomy.cdm.model.term.Representation; import eu.etaxonomy.cdm.model.term.TermBase; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; /** @@ -101,7 +101,7 @@ public class SDDDocumentBuilder { private final Map agents = new HashMap<>(); private final Map taxonNames = new HashMap<>(); private final Map characters = new HashMap<>(); - private final Map featureNodes = new HashMap<>(); + private final Map featureNodes = new HashMap<>(); private final Map descriptiveConcepts = new HashMap<>(); private final Map codedDescriptions = new HashMap<>(); private final Map medias = new HashMap<>(); @@ -1197,10 +1197,10 @@ public class SDDDocumentBuilder { elChartrees.appendChild(elChartree); ElementImpl elNodes = new ElementImpl(document, NODES); elChartree.appendChild(elNodes); - List roots = ft.getRootChildren(); - for (Iterator fn = roots.iterator(); fn + List roots = ft.getRootChildren(); + for (Iterator fn = roots.iterator(); fn .hasNext();) { - TermTreeNode featureNode = fn.next(); + TermNode featureNode = fn.next(); buildBranches(featureNode, elNodes, true); } } @@ -1270,14 +1270,14 @@ public class SDDDocumentBuilder { } } - public void buildBranches(TermTreeNode parent, ElementImpl element, + public void buildBranches(TermNode parent, ElementImpl element, boolean isRoot) { - List> children = parent.getChildNodes(); + List> children = parent.getChildNodes(); if (!parent.isLeaf()) { ElementImpl elCharNode = new ElementImpl(document, NODE); charnodeCount = buildReference(parent, featuretrees, ID, elCharNode, "cn", charnodeCount); - TermTreeNode grandparent = parent.getParent(); + TermNode grandparent = parent.getParent(); if ((grandparent != null) && (!isRoot)) { ElementImpl elParent = new ElementImpl(document, PARENT); charnodeCount = buildReference(grandparent, featuretrees, REF, @@ -1291,14 +1291,14 @@ public class SDDDocumentBuilder { REF, elDescriptiveConcept, "dc", descriptiveConceptCount); elCharNode.appendChild(elDescriptiveConcept); element.appendChild(elCharNode); - for (Iterator> ifn = children.iterator(); ifn.hasNext();) { - TermTreeNode fn = ifn.next(); + for (Iterator> ifn = children.iterator(); ifn.hasNext();) { + TermNode fn = ifn.next(); buildBranches(fn, element, false); } } else { ElementImpl elCharNode = new ElementImpl(document, CHAR_NODE); ElementImpl elParent = new ElementImpl(document, PARENT); - TermTreeNode grandparent = parent.getParent(); + TermNode grandparent = parent.getParent(); charnodeCount = buildReference(grandparent, featuretrees, REF, elParent, "cn", charnodeCount); charnodeCount = buildReference(parent, featuretrees, ID, diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx2013/TaxonXTreatmentExtractor.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx2013/TaxonXTreatmentExtractor.java index 46d075b648..ccf93937a5 100644 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx2013/TaxonXTreatmentExtractor.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/taxonx2013/TaxonXTreatmentExtractor.java @@ -64,7 +64,7 @@ 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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; import eu.etaxonomy.cdm.persistence.query.MatchMode; import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException; @@ -322,7 +322,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{ proibiospheretree.setUuid(proIbioTreeUUID); } - TermTreeNode root2 = proibiospheretree.getRoot(); + TermNode root2 = proibiospheretree.getRoot(); if (root2 != null){ int nbChildren = root2.getChildCount()-1; while (nbChildren>-1){ diff --git a/cdmlib-io/src/main/resources/schema/cdm/description.xsd b/cdmlib-io/src/main/resources/schema/cdm/description.xsd index 44a4e90973..de832ccc20 100644 --- a/cdmlib-io/src/main/resources/schema/cdm/description.xsd +++ b/cdmlib-io/src/main/resources/schema/cdm/description.xsd @@ -35,7 +35,7 @@ xmlns:name="http://etaxonomy.eu/cdm/model/name/1.0"> - + diff --git a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/in/StructureTreeOwlImportTest.java b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/in/StructureTreeOwlImportTest.java index 8c4ddfa5d7..37f6160495 100644 --- a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/in/StructureTreeOwlImportTest.java +++ b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/in/StructureTreeOwlImportTest.java @@ -46,7 +46,7 @@ import eu.etaxonomy.cdm.model.term.DefinedTerm; import eu.etaxonomy.cdm.model.term.DefinedTermBase; 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.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.model.term.TermVocabulary; import eu.etaxonomy.cdm.persistence.dto.TermDto; @@ -108,10 +108,10 @@ public class StructureTreeOwlImportTest extends CdmTransactionalIntegrationTest List rootChildren = tree.getRootChildren(); assertEquals("Wrong number of root children", 1, rootChildren.size()); Object entirePlant = rootChildren.iterator().next(); - assertTrue("Root is no feature node", entirePlant instanceof TermTreeNode); - assertEquals("Root node has wrong term type", TermType.Structure, ((TermTreeNode)entirePlant).getTermType()); - TermTreeNode entirePlantNode = (TermTreeNode) entirePlant; - List> childNodes = entirePlantNode.getChildNodes(); + assertTrue("Root is no feature node", entirePlant instanceof TermNode); + assertEquals("Root node has wrong term type", TermType.Structure, ((TermNode)entirePlant).getTermType()); + TermNode entirePlantNode = (TermNode) entirePlant; + List> childNodes = entirePlantNode.getChildNodes(); assertEquals("Wrong number of children", 2, childNodes.size()); String inflorescenceLabel = "inflorescence"; @@ -121,7 +121,7 @@ public class StructureTreeOwlImportTest extends CdmTransactionalIntegrationTest DefinedTerm inflorescence = records.iterator().next(); assertEquals(inflorescenceLabel, inflorescence.getLabel(Language.ENGLISH())); - for (TermTreeNode featureNode : childNodes) { + for (TermNode featureNode : childNodes) { assertTrue("Child node not found. Found node with term: "+featureNode.getTerm().getLabel(), featureNode.getTerm().getUuid().equals(inflorescence.getUuid()) || featureNode.getTerm().getLabel(Language.ENGLISH()).equals("Flower")); diff --git a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/out/OwlExportTest.java b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/out/OwlExportTest.java index 9a167a3a8b..bc09925685 100644 --- a/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/out/OwlExportTest.java +++ b/cdmlib-io/src/test/java/eu/etaxonomy/cdm/io/owl/out/OwlExportTest.java @@ -32,7 +32,7 @@ import eu.etaxonomy.cdm.io.descriptive.owl.out.StructureTreeOwlExportConfigurato import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.model.term.TermVocabulary; import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest; @@ -79,27 +79,27 @@ public class OwlExportTest extends CdmTransactionalIntegrationTest{ Feature featureA = Feature.NewInstance("A", "A", "A"); voc.addTerm(featureA); - TermTreeNode nodeA = tree.getRoot().addChild(featureA); + TermNode nodeA = tree.getRoot().addChild(featureA); Feature featureA1 = Feature.NewInstance("A1", "A1", "A1"); voc.addTerm(featureA1); - TermTreeNode nodeA1 = nodeA.addChild(featureA1); + TermNode nodeA1 = nodeA.addChild(featureA1); Feature featureA2 = Feature.NewInstance("A2", "A2", "A2"); voc.addTerm(featureA2); - TermTreeNode nodeA2 = nodeA.addChild(featureA2); + TermNode nodeA2 = nodeA.addChild(featureA2); Feature featureB = Feature.NewInstance("B", "B", "B"); voc.addTerm(featureB); - TermTreeNode nodeB = tree.getRoot().addChild(featureB); + TermNode nodeB = tree.getRoot().addChild(featureB); Feature featureB1 = Feature.NewInstance("B", "B1", "B1"); voc.addTerm(featureB1); - TermTreeNode nodeB1 = nodeB.addChild(featureB1); + TermNode nodeB1 = nodeB.addChild(featureB1); Feature featureC = Feature.NewInstance("C", "C", "C"); voc.addTerm(featureC); - TermTreeNode nodeC = tree.getRoot().addChild(featureC); + TermNode nodeC = tree.getRoot().addChild(featureC); featureTreeService.save(tree); return Collections.singletonList(tree.getUuid()); diff --git a/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml b/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml index 6dd5983011..209b3f2571 100644 --- a/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml +++ b/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml @@ -421,10 +421,10 @@ - - - - + + + + diff --git a/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml b/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml index f22fabca23..86296ae850 100644 --- a/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml +++ b/cdmlib-io/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml @@ -419,10 +419,10 @@ - - - - + + + + diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TreeIndex.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TreeIndex.java index 5c6cf2ba8c..9f20a4e5e5 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TreeIndex.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/TreeIndex.java @@ -17,10 +17,10 @@ import java.util.Map; import java.util.regex.Pattern; import eu.etaxonomy.cdm.model.taxon.TaxonNode; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; /** - * A class to handle tree indexes as used in {@link TaxonNode}, {@link TermTreeNode} + * A class to handle tree indexes as used in {@link TaxonNode}, {@link TermNode} * etc.
* Might be come a hibernate user type in future. * diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Character.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Character.java index 735671b60d..c5eec8368e 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Character.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Character.java @@ -25,7 +25,7 @@ import org.hibernate.search.annotations.IndexedEmbedded; import eu.etaxonomy.cdm.model.common.Language; import eu.etaxonomy.cdm.model.term.DefinedTerm; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; /** @@ -59,7 +59,7 @@ public class Character extends Feature { @ManyToOne(fetch = FetchType.LAZY) @IndexedEmbedded // @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE}) - private TermTreeNode structure; + private TermNode structure; //#8120 @XmlElement(name = "StructureModifier") @@ -75,7 +75,7 @@ public class Character extends Feature { @ManyToOne(fetch = FetchType.LAZY) @IndexedEmbedded // @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE}) - private TermTreeNode property; + private TermNode property; //#8120 /** @@ -107,7 +107,7 @@ public class Character extends Feature { * @param property The property feature node for this character * @see #Feature() */ - public static Character NewInstance(TermTreeNode structure, TermTreeNode property){ + public static Character NewInstance(TermNode structure, TermNode property){ return new Character(structure, property, null, null, null); } @@ -130,7 +130,7 @@ public class Character extends Feature { * to be created * @see #Feature() */ - public static Character NewInstance(TermTreeNode structure, TermTreeNode property, String term, String label, String labelAbbrev){ + public static Character NewInstance(TermNode structure, TermNode property, String term, String label, String labelAbbrev){ return new Character(structure, property, term, label, labelAbbrev); } @@ -161,7 +161,7 @@ public class Character extends Feature { * to be created * @see #Feature() */ - protected Character(TermTreeNode structure, TermTreeNode property, String term, String label, String labelAbbrev) { + protected Character(TermNode structure, TermNode property, String term, String label, String labelAbbrev) { super(term, label, labelAbbrev); this.setTermType(TermType.Character); this.structure = structure; @@ -170,17 +170,17 @@ public class Character extends Feature { // ****************** GETTER / SETTER *********************************************/ - public TermTreeNode getStructure() { + public TermNode getStructure() { return structure; } - public void setStructure(TermTreeNode structure) { + public void setStructure(TermNode structure) { this.structure = structure; } - public TermTreeNode getProperty() { + public TermNode getProperty() { return property; } - public void setProperty(TermTreeNode property) { + public void setProperty(TermNode property) { this.property = property; } diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/ITermTree.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/ITermTree.java index 34858a20a9..656ad84696 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/ITermTree.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/ITermTree.java @@ -18,10 +18,10 @@ public interface ITermTree { /** - * Returns the (ordered) list of {@link TermTreeNode feature nodes} which are immediate + * Returns the (ordered) list of {@link TermNode feature nodes} which are immediate * children of the root node of this term tree. */ - public abstract List> getRootChildren(); + public abstract List> getRootChildren(); public List asTermList(); diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/OrderedTermVocabulary.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/OrderedTermVocabulary.java index 4510f127c7..409f751c25 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/OrderedTermVocabulary.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/OrderedTermVocabulary.java @@ -39,7 +39,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase; @Audited public class OrderedTermVocabulary extends TermVocabulary - implements ITermGraph { + implements ITermGraph { private static final long serialVersionUID = 7871741306306371242L; @@ -301,7 +301,7 @@ public class OrderedTermVocabulary } @Override - public Set getTermRelations() { + public Set getTermRelations() { return super.termRelations(); } /** @@ -310,7 +310,7 @@ public class OrderedTermVocabulary * @param termRelations */ // @Override //not yet public - protected void setTermRelations(Set termRelations) { + protected void setTermRelations(Set termRelations) { super.termRelations(termRelations); } diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTreeNode.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermNode.java similarity index 85% rename from cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTreeNode.java rename to cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermNode.java index d690f4076c..901a1d3b21 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTreeNode.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermNode.java @@ -60,7 +60,7 @@ import eu.etaxonomy.cdm.model.description.State; */ @SuppressWarnings("serial") @XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "TermTreeNode", propOrder = { +@XmlType(name = "TermNode", propOrder = { "parent", "treeIndex", "sortIndex", @@ -68,22 +68,22 @@ import eu.etaxonomy.cdm.model.description.State; "onlyApplicableIf", "inapplicableIf" }) -@XmlRootElement(name = "TermTreeNode") +@XmlRootElement(name = "TermNode") @Entity @Audited -public class TermTreeNode - extends TermRelationBase, TermTree> - implements ITreeNode> { +public class TermNode + extends TermRelationBase, TermTree> + implements ITreeNode> { - private static final Logger logger = Logger.getLogger(TermTreeNode.class); + private static final Logger logger = Logger.getLogger(TermNode.class); @XmlElement(name = "Parent") @XmlIDREF @XmlSchemaType(name = "IDREF") - @ManyToOne(fetch = FetchType.LAZY, targetEntity=TermTreeNode.class) + @ManyToOne(fetch = FetchType.LAZY, targetEntity=TermNode.class) @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE}) @JoinColumn(name="parent_id") - private TermTreeNode parent; + private TermNode parent; @XmlElement(name = "treeIndex") @@ -95,9 +95,9 @@ public class TermTreeNode //see https://dev.e-taxonomy.eu/trac/ticket/3722 @OrderColumn(name="sortIndex") @OrderBy("sortIndex") - @OneToMany(fetch = FetchType.LAZY, mappedBy="parent", targetEntity=TermTreeNode.class) + @OneToMany(fetch = FetchType.LAZY, mappedBy="parent", targetEntity=TermNode.class) @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE}) - private List> children = new ArrayList<>(); + private List> children = new ArrayList<>(); //see https://dev.e-taxonomy.eu/trac/ticket/3722 private Integer sortIndex; @@ -108,7 +108,7 @@ public class TermTreeNode @XmlSchemaType(name="IDREF") @ManyToMany(fetch = FetchType.LAZY) // @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE}) remove cascade #5755 - @JoinTable(name="TermTreeNode_DefinedTermBase_OnlyApplicable") + @JoinTable(name="TermNode_DefinedTermBase_OnlyApplicable") private final Set onlyApplicableIf = new HashSet<>(); @XmlElementWrapper(name = "InapplicableIf") @@ -117,12 +117,12 @@ public class TermTreeNode @XmlSchemaType(name="IDREF") @ManyToMany(fetch = FetchType.LAZY) // @Cascade({CascadeType.SAVE_UPDATE,CascadeType.MERGE}) remove cascade #5755 - @JoinTable(name="TermTreeNode_DefinedTermBase_InapplicableIf") + @JoinTable(name="TermNode_DefinedTermBase_InapplicableIf") private final Set inapplicableIf = new HashSet<>(); // ***************************** FACTORY *********************************/ - //no factory methods should be provided as FeatureNodes should only + //no factory methods should be provided as TermNodes should only //be created as children of their parent node (#8257) @@ -130,12 +130,12 @@ public class TermTreeNode //TODO needed? @Deprecated - protected TermTreeNode(){} + protected TermNode(){} /** * Class constructor: creates a new empty feature node instance. */ - protected TermTreeNode(TermType termType) { + protected TermNode(TermType termType) { super(termType); } @@ -147,7 +147,7 @@ public class TermTreeNode * @see #getChildNodes() */ @Override - public TermTreeNode getParent() { + public TermNode getParent() { return parent; } /** @@ -158,7 +158,7 @@ public class TermTreeNode * @param parent the feature node to be set as parent * @see #getParent() */ - protected void setParent(TermTreeNode parent) { + protected void setParent(TermNode parent) { this.parent = parent; } @@ -179,7 +179,7 @@ public class TermTreeNode * this feature node. */ @Override - public List> getChildNodes() { + public List> getChildNodes() { return children; } @@ -191,11 +191,11 @@ public class TermTreeNode * @param child the feature node to be added * @see #getChildNodes() * @see #setChildren(List) - * @see #addChild(TermTreeNode, int) - * @see #removeChild(TermTreeNode) + * @see #addChild(TermNode, int) + * @see #removeChild(TermNode) * @see #removeChild(int) */ - public void addChild(TermTreeNode child){ + public void addChild(TermNode child){ addChild(child, children.size()); } @@ -208,10 +208,10 @@ public class TermTreeNode * @return the newly created child node * @see #getChildNodes() * @see #setChildren(List) - * @see #removeChild(FeatureNode) + * @see #removeChild(TermNode) * @see #removeChild(int) */ - public TermTreeNode addChild(){ + public TermNode addChild(){ return addChild((T)null, children.size()); } @@ -225,10 +225,10 @@ public class TermTreeNode * @return the newly created child node * @see #getChildNodes() * @see #setChildren(List) - * @see #removeChild(FeatureNode) + * @see #removeChild(TermNode) * @see #removeChild(int) */ - public TermTreeNode addChild(T term){ + public TermNode addChild(T term){ return addChild(term, children.size()); } @@ -242,17 +242,17 @@ public class TermTreeNode * @return the newly created child node * @see #getChildNodes() * @see #setChildren(List) - * @see #removeChild(FeatureNode) + * @see #removeChild(TermNode) * @see #removeChild(int) */ - public TermTreeNode addChild(T term, int index){ - TermTreeNode child = new TermTreeNode<>(getTermType()); + public TermNode addChild(T term, int index){ + TermNode child = new TermNode<>(getTermType()); if(term!=null){ child.setTerm(term); } checkTermType(child); - List> children = this.getChildNodes(); + List> children = this.getChildNodes(); if (index < 0 || index > children.size() + 1){ throw new IndexOutOfBoundsException("Wrong index: " + index); } @@ -279,13 +279,13 @@ public class TermTreeNode * should be added * @see #getChildNodes() * @see #setChildren(List) - * @see #addChild(TermTreeNode) - * @see #removeChild(TermTreeNode) + * @see #addChild(TermNode) + * @see #removeChild(TermNode) * @see #removeChild(int) */ - public void addChild(TermTreeNode child, int index){ + public void addChild(TermNode child, int index){ checkTermType(child); - List> children = this.getChildNodes(); + List> children = this.getChildNodes(); if (index < 0 || index > children.size() + 1){ throw new IndexOutOfBoundsException("Wrong index: " + index); } @@ -309,11 +309,11 @@ public class TermTreeNode * * @param child the feature node which should be removed * @see #getChildNodes() - * @see #addChild(TermTreeNode, int) - * @see #addChild(TermTreeNode) + * @see #addChild(TermNode, int) + * @see #addChild(TermNode) * @see #removeChild(int) */ - public void removeChild(TermTreeNode child){ + public void removeChild(TermNode child){ int index = children.indexOf(child); if (index >= 0){ @@ -328,19 +328,19 @@ public class TermTreeNode * @param index the integer indicating the position of the feature node to * be removed * @see #getChildNodes() - * @see #addChild(TermTreeNode, int) - * @see #addChild(TermTreeNode) - * @see #removeChild(TermTreeNode) + * @see #addChild(TermNode, int) + * @see #addChild(TermNode) + * @see #removeChild(TermNode) */ public void removeChild(int index){ - TermTreeNode child = children.get(index); + TermNode child = children.get(index); if (child != null){ children.remove(index); child.setParent(null); child.setGraph(null); //TODO workaround (see sortIndex doc) for(int i = 0; i < children.size(); i++){ - TermTreeNode childAt = children.get(i); + TermNode childAt = children.get(i); childAt.setSortIndex(i); } child.setSortIndex(null); @@ -354,10 +354,10 @@ public class TermTreeNode * * @param childIndex the integer indicating the position of the feature node * @see #getChildNodes() - * @see #addChild(TermTreeNode, int) + * @see #addChild(TermNode, int) * @see #removeChild(int) */ - public TermTreeNode getChildAt(int childIndex) { + public TermNode getChildAt(int childIndex) { return children.get(childIndex); } @@ -377,10 +377,10 @@ public class TermTreeNode * If the list does not contain this node then -1 will be returned. * * @param node the feature node the position of which is being searched - * @see #addChild(TermTreeNode, int) + * @see #addChild(TermNode, int) * @see #removeChild(int) */ - public int getIndex(TermTreeNode node) { + public int getIndex(TermNode node) { if (! children.contains(node)){ return -1; }else{ @@ -548,11 +548,7 @@ public class TermTreeNode /** * Returns all terms that are contained in this node or a child node * -<<<<<<< HEAD:cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTreeNode.java * @param terms -======= - * @param features ->>>>>>> ref #6794 add TermRelation and rename FeatureNode -> TermTreeNode:cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTreeNode.java * @return */ @Transient @@ -561,7 +557,7 @@ public class TermTreeNode if(term != null){ terms.add(term); } - for(TermTreeNode childNode : this.getChildNodes()){ + for(TermNode childNode : this.getChildNodes()){ terms.addAll(childNode.getDistinctTermsRecursive(terms)); } return terms; @@ -577,7 +573,7 @@ public class TermTreeNode if(term != null){ terms.add(term); } - for(TermTreeNode childNode : this.getChildNodes()){ + for(TermNode childNode : this.getChildNodes()){ terms.addAll(childNode.asTermListRecursive(terms)); } return terms; @@ -586,7 +582,7 @@ public class TermTreeNode //*********************** CLONE ********************************************************/ /** - * Clones this {@link TermTreeNode}. This is a shortcut that enables to create + * Clones this {@link TermNode}. This is a shortcut that enables to create * a new instance that differs only slightly from this tree node by * modifying only some of the attributes. * The parent, the feature and the featureTree are the same as for the original feature node @@ -597,9 +593,9 @@ public class TermTreeNode */ @Override public Object clone() { - TermTreeNode result; + TermNode result; try { - result = (TermTreeNode)super.clone(); + result = (TermNode)super.clone(); result.children = new ArrayList<>(); return result; }catch (CloneNotSupportedException e) { @@ -609,13 +605,13 @@ public class TermTreeNode } } - public TermTreeNode cloneDescendants(){ - TermTreeNode clone = (TermTreeNode)this.clone(); - TermTreeNode childClone; + public TermNode cloneDescendants(){ + TermNode clone = (TermNode)this.clone(); + TermNode childClone; - for(TermTreeNode childNode : this.getChildNodes()){ - childClone = (TermTreeNode) childNode.clone(); - for (TermTreeNode childChild:childNode.getChildNodes()){ + for(TermNode childNode : this.getChildNodes()){ + childClone = (TermNode) childNode.clone(); + for (TermNode childChild:childNode.getChildNodes()){ childClone.addChild(childChild.cloneDescendants()); } clone.addChild(childClone); diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermRelationBase.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermRelationBase.java index 96406614a1..7dc261cd8e 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermRelationBase.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermRelationBase.java @@ -35,7 +35,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.common.VersionableEntity; /** - * Common base class for {@link TermTreeNode} and {@link TermRelation}. + * Common base class for {@link TermNode} and {@link TermRelation}. * @author a.mueller * @since 06.03.2019 */ @@ -47,7 +47,7 @@ import eu.etaxonomy.cdm.model.common.VersionableEntity; }) @Entity @Audited -@Table(name="TermRelation", indexes = { @Index(name = "termTreeNodeTreeIndex", columnList = "treeIndex") }) //was feature NodeTreeIndex before +@Table(name="TermRelation", indexes = { @Index(name = "termNodeTreeIndex", columnList = "treeIndex") }) //was feature NodeTreeIndex before @Inheritance(strategy=InheritanceType.SINGLE_TABLE) public abstract class TermRelationBase extends VersionableEntity diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTree.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTree.java index 585c6a3741..1e2419fbc9 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTree.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermTree.java @@ -40,7 +40,7 @@ import eu.etaxonomy.cdm.model.description.Feature; * determination process and for systematical output arrangement of * {@link DescriptionElementBase description elements} according to different goals * but may also be used to define flat feature subsets for filtering purposes.
- * A feature tree is build on {@link TermTreeNode feature nodes}. + * A feature tree is build on {@link TermNode feature nodes}. *

* This class corresponds partially to ConceptTreeDefType according to the SDD * schema. @@ -62,7 +62,7 @@ import eu.etaxonomy.cdm.model.description.Feature; //@Indexed(index = "eu.etaxonomy.cdm.model.term.TermTree") @Audited public class TermTree - extends TermGraphBase { + extends TermGraphBase { private static final long serialVersionUID = -6713834139003172735L; private static final Logger logger = Logger.getLogger(TermTree.class); @@ -75,9 +75,9 @@ public class TermTree //instead of representation. This may not be correct. @XmlElement(name = "Root") - @OneToOne(fetch = FetchType.LAZY, targetEntity=TermTreeNode.class) + @OneToOne(fetch = FetchType.LAZY, targetEntity=TermNode.class) @Cascade({CascadeType.SAVE_UPDATE, CascadeType.MERGE}) - private TermTreeNode root; + private TermNode root; //******************** FACTORY METHODS ******************************************/ @@ -120,7 +120,7 @@ public class TermTree * Creates a new feature tree instance with a {@link #getRoot() root node} * the children of which are the feature nodes build on the base of the * given list of {@link Feature features}. This corresponds to a flat feature tree. - * For each feature within the list a new {@link TermTreeNode feature node} without + * For each feature within the list a new {@link TermNode feature node} without * children nodes will be created. * * @param featureList the feature list @@ -129,7 +129,7 @@ public class TermTree */ public static TermTree NewInstance(List featureList){ TermTree result = new TermTree<>(TermType.Feature); - TermTreeNode root = result.getRoot(); + TermNode root = result.getRoot(); for (Feature feature : featureList){ root.addChild(feature); @@ -151,19 +151,19 @@ public class TermTree */ protected TermTree(TermType termType) { super(termType); - root = new TermTreeNode<>(termType); + root = new TermNode<>(termType); root.setGraph(this); } // ****************** GETTER / SETTER **********************************/ /** - * Returns the topmost {@link TermTreeNode feature node} (root node) of this + * Returns the topmost {@link TermNode feature node} (root node) of this * feature tree. The root node does not have any parent. Since feature nodes * recursively point to their child nodes the complete feature tree is * defined by its root node. */ - public TermTreeNode getRoot() { + public TermNode getRoot() { return root; } @@ -177,12 +177,12 @@ public class TermTree } /** - * Returns the (ordered) list of {@link TermTreeNode feature nodes} which are immediate + * Returns the (ordered) list of {@link TermNode feature nodes} which are immediate * children of the root node of this feature tree. */ @Transient - public List> getRootChildren(){ - List> result = new ArrayList<>(); + public List> getRootChildren(){ + List> result = new ArrayList<>(); result.addAll(root.getChildNodes()); return result; } @@ -205,7 +205,7 @@ public class TermTree public List asTermList() { List result = new ArrayList<>(); - for (TermTreeNode node : getRootChildren()){ + for (TermNode node : getRootChildren()){ result.add(node.getTerm()); result.addAll(node.asTermListRecursive(result)); } @@ -218,8 +218,8 @@ public class TermTree * Clones this {@link TermTree}. This is a shortcut that enables to create * a new instance that differs only slightly from this 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 + * {@link TermNode tree nodes} always belong only to one tree, so all + * {@link TermNode tree nodes} are cloned to build * the new {@link TermTree} * * @@ -236,7 +236,7 @@ public class TermTree e.printStackTrace(); return null; } - TermTreeNode rootClone = this.getRoot().cloneDescendants(); + TermNode rootClone = this.getRoot().cloneDescendants(); result.root = rootClone; return result; diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermVocabulary.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermVocabulary.java index cdbec4be05..b45af38cb0 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermVocabulary.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/term/TermVocabulary.java @@ -59,7 +59,7 @@ import eu.etaxonomy.cdm.model.common.Language; //@Indexed(index = "eu.etaxonomy.cdm.model.term.TermVocabulary") @Audited public class TermVocabulary - extends TermCollection { + extends TermCollection { private static final long serialVersionUID = 1925052321596648672L; private static final Logger logger = Logger.getLogger(TermVocabulary.class); diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/generate/PolytomousKeyGenerator.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/generate/PolytomousKeyGenerator.java index 06faf529ae..54df22ae99 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/generate/PolytomousKeyGenerator.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/generate/PolytomousKeyGenerator.java @@ -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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; /** * @author m.venin @@ -806,7 +806,7 @@ public class PolytomousKeyGenerator { * * @param node */ - private void checkDependencies(TermTreeNode node){ + private void checkDependencies(TermNode node){ if (node.getOnlyApplicableIf()!=null){ Set addToOAI = node.getOnlyApplicableIf(); for (State state : addToOAI){ @@ -826,7 +826,7 @@ public class PolytomousKeyGenerator { } } if (node.getChildNodes()!=null) { - for (TermTreeNode fn : node.getChildNodes()){ + for (TermNode fn : node.getChildNodes()){ checkDependencies(fn); } } diff --git a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/term/FeatureTreeTest.java b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/term/FeatureTreeTest.java index 39002f2d48..cf324426c4 100644 --- a/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/term/FeatureTreeTest.java +++ b/cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/term/FeatureTreeTest.java @@ -17,10 +17,10 @@ public class FeatureTreeTest { private static final Logger logger = Logger.getLogger(FeatureTreeTest.class); private TermTree testTree; - private TermTreeNode node1; - private TermTreeNode node2; - private TermTreeNode node3; - private TermTreeNode node4; + private TermNode node1; + private TermNode node2; + private TermNode node3; + private TermNode node4; @BeforeClass public static void setUpBeforeClass() { @@ -48,19 +48,19 @@ public class FeatureTreeTest { // } @Test public void testAddChild(){ - TermTreeNode node21 = node1.addChild(Feature.ANATOMY(), 1); + TermNode node21 = node1.addChild(Feature.ANATOMY(), 1); assertEquals(node1.getChildNodes().size(), 2); assertEquals(node1.getChildNodes().get(1), node21); assertEquals(node21.getParent(), node1); } @Test public void testClone(){ - TermTreeNode node21 = node1.addChild(Feature.ADDITIONAL_PUBLICATION(), 1); + TermNode node21 = node1.addChild(Feature.ADDITIONAL_PUBLICATION(), 1); TermTree clone = (TermTree) testTree.clone(); assertEquals (clone.getRoot().getTerm(), testTree.getRoot().getTerm()); assertNotSame(clone.getRoot(), testTree.getRoot()); - List> children = clone.getRootChildren(); + List> children = clone.getRootChildren(); assertEquals(children.get(0).getTerm(), node1.getTerm()); assertNotSame(children.get(0), node1); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/data/FullCoverageDataGenerator.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/data/FullCoverageDataGenerator.java index 07671cf6b0..b30ed815b4 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/data/FullCoverageDataGenerator.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/data/FullCoverageDataGenerator.java @@ -130,7 +130,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType; import eu.etaxonomy.cdm.model.term.DefinedTerm; 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.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.model.term.TermVocabulary; import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser; @@ -414,8 +414,8 @@ public class FullCoverageDataGenerator { //Feature Tree TermTree featureTree = TermTree.NewInstance(); // featureTree - TermTreeNode descriptionFeatureNode = featureTree.getRoot().addChild(Feature.DESCRIPTION()); - TermTreeNode leaveLengthNode = descriptionFeatureNode.addChild(leaveLength); + TermNode descriptionTermNode = featureTree.getRoot().addChild(Feature.DESCRIPTION()); + TermNode leaveLengthNode = descriptionTermNode.addChild(leaveLength); handleIdentifiableEntity(featureTree); State inapplicableState = State.NewInstance("inapplicableState", "inapplicableState", null); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/FeatureTreeMover.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/FeatureTreeMover.java index 8bc5975387..2d0d36b6dd 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/FeatureTreeMover.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/FeatureTreeMover.java @@ -56,7 +56,7 @@ public class FeatureTreeMover extends SchemaUpdaterStepBase { // update tree index for feature node //note: it could also be enough to only replace the first index entry by graph_id as only the graph_id changed - String stepName = "Update TermTreeNode treeindex"; + String stepName = "Update TermNode treeindex"; String tableName = "TermRelation"; String treeIdColumnName = "graph_id"; ISchemaUpdaterStep step = TreeIndexUpdater.NewInstance(stepName, tableName, @@ -116,7 +116,7 @@ public class FeatureTreeMover extends SchemaUpdaterStepBase { updateSupplement("RightsInfo", "rights_id", featureTreeId, maxIdTermVoc, datasource, monitor, caseType, result, false); updateDescriptiveSystem(featureTreeId, maxIdTermVoc, datasource, monitor, caseType, result); - updateTermTreeNode(featureTreeId, maxIdTermVoc, datasource, monitor, caseType, result); + updateTermNode(featureTreeId, maxIdTermVoc, datasource, monitor, caseType, result); // xx treeIndex update; @@ -134,7 +134,7 @@ public class FeatureTreeMover extends SchemaUpdaterStepBase { * @param result * @throws SQLException */ - private void updateTermTreeNode(Integer featureTreeId, int maxIdTermVoc, ICdmDataSource datasource, + private void updateTermNode(Integer featureTreeId, int maxIdTermVoc, ICdmDataSource datasource, IProgressMonitor monitor, CaseType caseType, SchemaUpdateResult result) throws SQLException { String update = "UPDATE @@TermRelation@@ " + " SET graph_id = " + maxIdTermVoc diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/SchemaUpdater_55_58.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/SchemaUpdater_55_58.java index 7bc9fc9323..61f8f0ced6 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/SchemaUpdater_55_58.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/database/update/v55_58/SchemaUpdater_55_58.java @@ -79,7 +79,7 @@ public class SchemaUpdater_55_58 extends SchemaUpdaterBase { //#6794 add DTYPE to TermRelation stepName = "add DTYPE to TermRelation"; tableName = "TermRelation"; - step = ColumnAdder.NewDTYPEInstance(stepName, tableName, "TermTreeNode", INCLUDE_AUDIT) ; + step = ColumnAdder.NewDTYPEInstance(stepName, tableName, "TermNode", INCLUDE_AUDIT) ; stepList.add(step); //#6794 add root_id column to TermCollection @@ -106,35 +106,35 @@ public class SchemaUpdater_55_58 extends SchemaUpdaterBase { step = ColumnNameChanger.NewIntegerInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT); stepList.add(step); - //#6794 rename FeatureNode_DefinedTermBase_InapplicableIf to TermTreeNode_DefinedTermBase_InapplicableIf - stepName = "rename FeatureNode_DefinedTermBase_InapplicableIf to TermTreeNode_DefinedTermBase_InapplicableIf"; + //#6794 rename FeatureNode_DefinedTermBase_InapplicableIf to TermNode_DefinedTermBase_InapplicableIf + stepName = "rename FeatureNode_DefinedTermBase_InapplicableIf to TermNode_DefinedTermBase_InapplicableIf"; oldName = "FeatureNode_DefinedTermBase_InapplicableIf"; - newName = "TermTreeNode_DefinedTermBase_InapplicableIf"; + newName = "TermNode_DefinedTermBase_InapplicableIf"; includeDtype = false; step = TableNameChanger.NewInstance(stepName, oldName, newName, INCLUDE_AUDIT, includeDtype); stepList.add(step); - //#6794 change FeatureNode_id to TermTreeNode_id in TermTreeNode_DefinedTermBase_InapplicableIf - stepName = "change FeatureNode_id to TermTreeNode_id in TermTreeNode_DefinedTermBase_InapplicableIf"; - tableName = "TermTreeNode_DefinedTermBase_InapplicableIf"; + //#6794 change FeatureNode_id to TermNode_id in TermNode_DefinedTermBase_InapplicableIf + stepName = "change FeatureNode_id to TermNode_id in TermNode_DefinedTermBase_InapplicableIf"; + tableName = "TermNode_DefinedTermBase_InapplicableIf"; oldColumnName = "FeatureNode_id"; - newColumnName = "TermTreeNode_id"; + newColumnName = "TermNode_id"; step = ColumnNameChanger.NewIntegerInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT); stepList.add(step); - //#6794 rename FeatureNode_DefinedTermBase_OnlyApplicable to TermTreeNode_DefinedTermBase_OnlyApplicable - stepName = "rename FeatureNode_DefinedTermBase_InapplicableIf to TermTreeNode_DefinedTermBase_InapplicableIf"; + //#6794 rename FeatureNode_DefinedTermBase_OnlyApplicable to TermNode_DefinedTermBase_OnlyApplicable + stepName = "rename FeatureNode_DefinedTermBase_InapplicableIf to TermNode_DefinedTermBase_InapplicableIf"; oldName = "FeatureNode_DefinedTermBase_OnlyApplicable"; - newName = "TermTreeNode_DefinedTermBase_OnlyApplicable"; + newName = "TermNode_DefinedTermBase_OnlyApplicable"; includeDtype = false; step = TableNameChanger.NewInstance(stepName, oldName, newName, INCLUDE_AUDIT, includeDtype); stepList.add(step); - //#6794 change FeatureNode_id to TermTreeNode_id in TermTreeNode_DefinedTermBase_OnlyApplicable - stepName = "change FeatureNode_id to TermTreeNode_id in TermTreeNode_DefinedTermBase_OnlyApplicable"; - tableName = "TermTreeNode_DefinedTermBase_OnlyApplicable"; + //#6794 change FeatureNode_id to TermNode_id in TermNode_DefinedTermBase_OnlyApplicable + stepName = "change FeatureNode_id to TermNode_id in TermNode_DefinedTermBase_OnlyApplicable"; + tableName = "TermNode_DefinedTermBase_OnlyApplicable"; oldColumnName = "FeatureNode_id"; - newColumnName = "TermTreeNode_id"; + newColumnName = "TermNode_id"; step = ColumnNameChanger.NewIntegerInstance(stepName, tableName, oldColumnName, newColumnName, INCLUDE_AUDIT); stepList.add(step); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureTreeDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureTreeDao.java index 3c7a1bcbaf..6c94c44d0e 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureTreeDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IFeatureTreeDao.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.UUID; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao; import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; @@ -33,7 +33,7 @@ public interface IFeatureTreeDao extends IIdentifiableDao { * @param nodes * @param nodePaths */ - public void deepLoadNodes(List nodes, List nodePaths); + public void deepLoadNodes(List nodes, List nodePaths); public List> getUuidAndTitleCacheByTermType(Class clazz, TermType termType, Integer limit, String pattern); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/ITermTreeNodeDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/ITermNodeDao.java similarity index 66% rename from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/ITermTreeNodeDao.java rename to cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/ITermNodeDao.java index 79ee23a353..f91508c774 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/ITermTreeNodeDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/ITermNodeDao.java @@ -8,15 +8,15 @@ package eu.etaxonomy.cdm.persistence.dao.description; import java.util.List; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.persistence.dao.common.IVersionableDao; /** * @author a.babadshanjan * @since 09.09.2008 */ -public interface ITermTreeNodeDao extends IVersionableDao { +public interface ITermNodeDao extends IVersionableDao { - public List list(); + public List list(); } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptiveDataSetDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptiveDataSetDao.java index 7705c3cd4a..4478a74505 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptiveDataSetDao.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptiveDataSetDao.java @@ -89,7 +89,7 @@ public class DescriptiveDataSetDao List trees = queryTree.list(); - String ftSelect = "SELECT feature.id FROM TermTreeNode node join node.feature as feature " + + String ftSelect = "SELECT feature.id FROM TermNode node join node.feature as feature " + " WHERE node.featureTree.id in (:trees) "; Query ftQuery = getSession().createQuery(ftSelect); ftQuery.setParameterList("trees", trees); diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermTreeNodeDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermNodeDaoImpl.java similarity index 58% rename from cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermTreeNodeDaoImpl.java rename to cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermNodeDaoImpl.java index e77d52848c..81b6e483b6 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermTreeNodeDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermNodeDaoImpl.java @@ -11,8 +11,8 @@ import java.util.List; import org.hibernate.Criteria; import org.springframework.stereotype.Repository; -import eu.etaxonomy.cdm.model.term.TermTreeNode; -import eu.etaxonomy.cdm.persistence.dao.description.ITermTreeNodeDao; +import eu.etaxonomy.cdm.model.term.TermNode; +import eu.etaxonomy.cdm.persistence.dao.description.ITermNodeDao; import eu.etaxonomy.cdm.persistence.dao.hibernate.common.VersionableDaoBase; /** @@ -20,19 +20,19 @@ import eu.etaxonomy.cdm.persistence.dao.hibernate.common.VersionableDaoBase; * @since 09.09.2008 */ @Repository -public class TermTreeNodeDaoImpl - extends VersionableDaoBase - implements ITermTreeNodeDao { +public class TermNodeDaoImpl + extends VersionableDaoBase + implements ITermNodeDao { - public TermTreeNodeDaoImpl() { - super(TermTreeNode.class); + public TermNodeDaoImpl() { + super(TermNode.class); } @Override - public List list() { + public List list() { Criteria crit = getSession().createCriteria(type); @SuppressWarnings("unchecked") - List result = crit.list(); + List result = crit.list(); return result; } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermTreeDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermTreeDaoImpl.java index d2f69cb759..f4a789bd78 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermTreeDaoImpl.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/TermTreeDaoImpl.java @@ -22,7 +22,7 @@ import org.springframework.stereotype.Repository; import eu.etaxonomy.cdm.model.description.Feature; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.model.term.TermVocabulary; import eu.etaxonomy.cdm.model.term.VocabularyEnum; @@ -57,12 +57,12 @@ public class TermTreeDaoImpl extends IdentifiableDaoBase implements IF } @Override - public void deepLoadNodes(List nodes, List nodePaths) { + public void deepLoadNodes(List nodes, List nodePaths) { defaultBeanInitializer.initializeAll(nodes, nodePaths); - List childrenOfChildren = new ArrayList<>(); - for(TermTreeNode node : nodes) { + List childrenOfChildren = new ArrayList<>(); + for(TermNode node : nodes) { if(node.getChildCount() > 0){ childrenOfChildren.addAll(node.getChildNodes()); } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/initializer/AdvancedBeanInitializer.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/initializer/AdvancedBeanInitializer.java index d647102e00..d3791e3802 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/initializer/AdvancedBeanInitializer.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/initializer/AdvancedBeanInitializer.java @@ -624,7 +624,7 @@ public class AdvancedBeanInitializer extends HibernateBeanInitializer { if (ownerClass.contains("Description") && param.equals("descriptionElements")){ return "elements"; } - if (ownerClass.startsWith("TermTreeNode") && param.equals("children")) { + if (ownerClass.startsWith("TermNode") && param.equals("children")) { return "childNodes"; } if (ownerClass.startsWith("Media") && param.equals("description")) { diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/PostMergeEntityListener.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/PostMergeEntityListener.java index e4cecdbd1f..f9439c835d 100644 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/PostMergeEntityListener.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/PostMergeEntityListener.java @@ -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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; /** * @author cmathew @@ -103,17 +103,17 @@ public class PostMergeEntityListener implements MergeEventListener { } else if(TermTree.class.isAssignableFrom(entityClazz)){ TermTree tree = (TermTree)entity; - for (TermTreeNode node:tree.getRootChildren()){ + for (TermNode node:tree.getRootChildren()){ node.removeNullValueFromChildren(); if (node.getChildNodes() != null){ - for (TermTreeNode childNode: node.getChildNodes()){ + for (TermNode childNode: node.getChildNodes()){ removeNullFromCollections(childNode); } } } - } else if (TermTreeNode.class.isAssignableFrom(entityClazz)){ - TermTreeNode node = (TermTreeNode)entity; + } else if (TermNode.class.isAssignableFrom(entityClazz)){ + TermNode node = (TermNode)entity; node.removeNullValueFromChildren(); } diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java index e64926483b..d848bb1c64 100755 --- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java +++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/hibernate/permission/CdmPermissionClass.java @@ -36,7 +36,7 @@ public enum CdmPermissionClass { EXTENSION, EXTENSIONTYPE, FEATURE, - TERMTREENODE, + TERMNODE, FEATURETREE, GATHERINGEVENT, GRANTEDAUTHORITYIMPL, diff --git a/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml b/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml index c4f8ed5dd7..bedf11643b 100644 --- a/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml +++ b/cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/hibernate.cfg.xml @@ -206,7 +206,7 @@ - + diff --git a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java index 83c615d28a..d033b3ada1 100644 --- a/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java +++ b/cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmGenericDaoImplTest.java @@ -150,7 +150,7 @@ import eu.etaxonomy.cdm.model.term.OrderedTermBase; 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.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; import eu.etaxonomy.cdm.model.view.AuditEvent; import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao; @@ -291,7 +291,7 @@ public class CdmGenericDaoImplTest extends CdmTransactionalIntegrationTest { DescriptionElementBase.class, Distribution.class, Feature.class, - TermTreeNode.class, + TermNode.class, TermTree.class, MediaKey.class, IndividualsAssociation.class, diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml index 6dd5983011..209b3f2571 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml @@ -421,10 +421,10 @@ - - - - + + + + diff --git a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml index f22fabca23..86296ae850 100644 --- a/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml +++ b/cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml @@ -419,10 +419,10 @@ - - - - + + + + diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/FeatureNodeController.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TermNodeController.java similarity index 100% rename from cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/FeatureNodeController.java rename to cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TermNodeController.java diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImpl.java index 198e837096..9a6d2104e2 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/DescriptionServiceImpl.java @@ -61,7 +61,7 @@ import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao; import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao; import eu.etaxonomy.cdm.persistence.dao.description.IDescriptiveDataSetDao; import eu.etaxonomy.cdm.persistence.dao.description.IFeatureDao; -import eu.etaxonomy.cdm.persistence.dao.description.ITermTreeNodeDao; +import eu.etaxonomy.cdm.persistence.dao.description.ITermNodeDao; import eu.etaxonomy.cdm.persistence.dao.description.IFeatureTreeDao; import eu.etaxonomy.cdm.persistence.dao.description.IStatisticalMeasurementValueDao; import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao; @@ -93,7 +93,7 @@ public class DescriptionServiceImpl protected IDescriptionElementDao descriptionElementDao; protected IFeatureTreeDao featureTreeDao; protected IDescriptiveDataSetDao descriptiveDataSetDao; - protected ITermTreeNodeDao featureNodeDao; + protected ITermNodeDao featureNodeDao; protected IFeatureDao featureDao; protected ITermVocabularyDao vocabularyDao; protected IDefinedTermDao definedTermDao; @@ -121,7 +121,7 @@ public class DescriptionServiceImpl } @Autowired - protected void setFeatureNodeDao(ITermTreeNodeDao featureNodeDao) { + protected void setFeatureNodeDao(ITermNodeDao featureNodeDao) { this.featureNodeDao = featureNodeDao; } diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImpl.java index a019dad868..a01e72a7b6 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImpl.java @@ -27,9 +27,9 @@ 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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; -import eu.etaxonomy.cdm.persistence.dao.description.ITermTreeNodeDao; +import eu.etaxonomy.cdm.persistence.dao.description.ITermNodeDao; /** * @author n.hoffmann @@ -37,12 +37,12 @@ import eu.etaxonomy.cdm.persistence.dao.description.ITermTreeNodeDao; */ @Service @Transactional(readOnly = false) -public class FeatureNodeServiceImpl extends VersionableServiceBase implements IFeatureNodeService { +public class FeatureNodeServiceImpl extends VersionableServiceBase implements IFeatureNodeService { private static final Logger logger = Logger.getLogger(FeatureNodeServiceImpl.class); @Override @Autowired - protected void setDao(ITermTreeNodeDao dao) { + protected void setDao(ITermNodeDao dao) { this.dao = dao; } @@ -56,16 +56,16 @@ public class FeatureNodeServiceImpl extends VersionableServiceBase node = HibernateProxyHelper.deproxy(dao.load(nodeUuid), TermTreeNode.class); + TermNode node = HibernateProxyHelper.deproxy(dao.load(nodeUuid), TermNode.class); result = isDeletable(nodeUuid, config); if (result.isOk()){ - TermTreeNode parent = node.getParent(); - parent = HibernateProxyHelper.deproxy(parent, TermTreeNode.class); - List children = new ArrayList(node.getChildNodes()); + TermNode parent = node.getParent(); + parent = HibernateProxyHelper.deproxy(parent, TermNode.class); + List children = new ArrayList(node.getChildNodes()); if (config.getChildHandling().equals(ChildHandling.DELETE)){ - for (TermTreeNode child: children){ + for (TermNode child: children){ deleteFeatureNode(child.getUuid(), config); // node.removeChild(child); } @@ -77,7 +77,7 @@ public class FeatureNodeServiceImpl extends VersionableServiceBase node = load(nodeUuid); + TermNode node = load(nodeUuid); DeleteResult result = new DeleteResult(); Set references = commonService.getReferencingObjectsForDeletion(node); for (CdmBase ref:references){ - if (ref instanceof TermTreeNode){ + if (ref instanceof TermNode){ break; } if (ref instanceof TermTree){ @@ -163,9 +163,9 @@ public class FeatureNodeServiceImpl extends VersionableServiceBase movedNode = HibernateProxyHelper.deproxy(load(movedNodeUuid), TermTreeNode.class); - TermTreeNode targetNode = HibernateProxyHelper.deproxy(load(targetNodeUuid), TermTreeNode.class); - TermTreeNode parent = HibernateProxyHelper.deproxy(movedNode.getParent(), TermTreeNode.class); + TermNode movedNode = HibernateProxyHelper.deproxy(load(movedNodeUuid), TermNode.class); + TermNode targetNode = HibernateProxyHelper.deproxy(load(targetNodeUuid), TermNode.class); + TermNode parent = HibernateProxyHelper.deproxy(movedNode.getParent(), TermNode.class); if(position<0){ targetNode.addChild(movedNode); } diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureTreeServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureTreeServiceImpl.java index 74a25f06f8..bd4ab564f2 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureTreeServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/FeatureTreeServiceImpl.java @@ -26,10 +26,10 @@ import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandlin import eu.etaxonomy.cdm.common.monitor.IProgressMonitor; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.persistence.dao.description.IFeatureTreeDao; -import eu.etaxonomy.cdm.persistence.dao.description.ITermTreeNodeDao; +import eu.etaxonomy.cdm.persistence.dao.description.ITermNodeDao; import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy; @@ -37,7 +37,7 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy; @Transactional(readOnly = false) public class FeatureTreeServiceImpl extends IdentifiableServiceBase implements IFeatureTreeService { - private ITermTreeNodeDao featureNodeDao; + private ITermNodeDao featureNodeDao; @Autowired private IFeatureNodeService featureNodeService; @@ -49,7 +49,7 @@ public class FeatureTreeServiceImpl extends IdentifiableServiceBase getFeatureNodesAll() { + public List getFeatureNodesAll() { return featureNodeDao.list(); } @Override - public Map saveFeatureNodesAll(Collection featureNodeCollection) { + public Map saveFeatureNodesAll(Collection featureNodeCollection) { return featureNodeDao.saveAll(featureNodeCollection); } @Override - public Map saveOrUpdateFeatureNodesAll(Collection featureNodeCollection) { + public Map saveOrUpdateFeatureNodesAll(Collection featureNodeCollection) { return featureNodeDao.saveOrUpdateAll(featureNodeCollection); } @@ -130,7 +130,7 @@ public class FeatureTreeServiceImpl extends IdentifiableServiceBase{ +public interface IFeatureNodeService extends IVersionableService{ DeleteResult isDeletable(UUID nodeUuid, FeatureNodeDeletionConfigurator config); @@ -54,7 +54,7 @@ public interface IFeatureNodeService extends IVersionableService{ public UpdateResult addChildFeatureNode(UUID parentNodeUUID, UUID termChildUuid, int position); /** - * Moves a given {@link TermTreeNode} to the target node at the given position; + * Moves a given {@link TermNode} to the target node at the given position; * @param movedNodeUuid the node to move * @param targetNodeUuid the target node * @param position the position in the list of children of the target node @@ -63,7 +63,7 @@ public interface IFeatureNodeService extends IVersionableService{ public UpdateResult moveFeatureNode(UUID movedNodeUuid, UUID targetNodeUuid, int position); /** - * Moves a given {@link TermTreeNode} to the target node; + * Moves a given {@link TermNode} to the target node; * @param movedNodeUuid the node to move * @param targetNodeUuid the target node * @return the result of the operation diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IFeatureTreeService.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IFeatureTreeService.java index 04ae13073f..20c51092d4 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IFeatureTreeService.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IFeatureTreeService.java @@ -15,13 +15,13 @@ import java.util.Map; import java.util.UUID; import eu.etaxonomy.cdm.model.term.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermType; import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; public interface IFeatureTreeService extends IIdentifiableEntityService { - public List getFeatureNodesAll(); + public List getFeatureNodesAll(); /** * Loads a feature tree including all of its nodes (all the way down to the tips of the tree). @@ -34,9 +34,9 @@ public interface IFeatureTreeService extends IIdentifiableEntityService propertyPaths, List nodePaths); - public Map saveFeatureNodesAll(Collection featureNodeCollection); + public Map saveFeatureNodesAll(Collection featureNodeCollection); - public Map saveOrUpdateFeatureNodesAll(Collection featureNodeCollection); + public Map saveOrUpdateFeatureNodesAll(Collection featureNodeCollection); public TermTree createTransientDefaultFeatureTree(); diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java index 3f270a276a..4c4a89692a 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java @@ -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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; /** @@ -294,7 +294,7 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator { * @param floor integer to keep track of the level in the tree * @return a list of TextData elements containing the part of description corresponding to the feature node considered */ - private List buildBranchesDescr(List children, TermTreeNode parent, TaxonDescription description, List languages, int floor) { + private List buildBranchesDescr(List children, TermNode parent, TaxonDescription description, List languages, int floor) { List listTextData = new ArrayList(); floor++; // counter to know the current level in the tree @@ -311,9 +311,9 @@ public class NaturalLanguageGenerator implements INaturalLanguageGenerator { featureName = new TextData(); // else an empty TextData is created (because we keep track of the features, it is useful to inform when the upper node has no feature attached) } - for (Iterator ifn = children.iterator() ; ifn.hasNext() ;){ + for (Iterator ifn = children.iterator() ; ifn.hasNext() ;){ previousTextData = featureName; // this allows to keep track of the name of the feature one level up in the tree - TermTreeNode fn = ifn.next(); + TermNode fn = ifn.next(); listTextData.addAll(buildBranchesDescr(fn.getChildNodes(),fn,description, languages, floor)); } } diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/validation/batch/BatchValidationUtil.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/validation/batch/BatchValidationUtil.java index 973e7ebc8e..4c2c87c493 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/validation/batch/BatchValidationUtil.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/validation/batch/BatchValidationUtil.java @@ -47,7 +47,7 @@ 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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.model.term.TermVocabulary; /** @@ -78,7 +78,7 @@ class BatchValidationUtil { services.add(new EntityValidationUnit(Collection.class, appConfig.getCollectionService())); // services.add(new EntityValidationUnit(OriginalSourceBase.class, appConfig.getCommonService())); services.add(new EntityValidationUnit(DescriptionBase.class, appConfig.getDescriptionService())); - services.add(new EntityValidationUnit(TermTreeNode.class, appConfig.getFeatureNodeService())); + services.add(new EntityValidationUnit(TermNode.class, appConfig.getFeatureNodeService())); services.add(new EntityValidationUnit(TermTree.class, appConfig.getFeatureTreeService())); services.add(new EntityValidationUnit(Group.class, appConfig.getGroupService())); diff --git a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImplTest.java b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImplTest.java index ace41cf5de..8babc13393 100644 --- a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImplTest.java +++ b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/FeatureNodeServiceImplTest.java @@ -28,7 +28,7 @@ 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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest; /** @@ -60,8 +60,8 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ private static final UUID node5Uuid = UUID.fromString("c4d5170a-7967-4dac-ab76-ae2019eefde5"); private static final UUID node6Uuid = UUID.fromString("b419ba5e-9c8b-449c-ad86-7abfca9a7340"); - private TermTreeNode node3; - private TermTreeNode node2; + private TermNode node3; + private TermNode node2; @Before @@ -73,7 +73,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ featureTreeService.save(featureTree); Feature feature = (Feature)termService.find(914); - TermTreeNode newNode = featureTree.getRoot().addChild(feature); + TermNode newNode = featureTree.getRoot().addChild(feature); featureTreeService.save(featureTree); featureNodeService.saveOrUpdate(newNode); @@ -93,7 +93,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ node2 = featureNodeService.load(node2Uuid); String oldTreeIndex = node2.treeIndex(); - TermTreeNode newNode = node2.addChild(feature); + TermNode newNode = node2.addChild(feature); featureNodeService.saveOrUpdate(node2); commitAndStartNewTransaction(new String[]{"FeatureNode"}); @@ -114,7 +114,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ node3.addChild(node2); featureNodeService.saveOrUpdate(node2); commitAndStartNewTransaction(new String[]{"FeatureNode"}); - TermTreeNode node6 = featureNodeService.load(node6Uuid); + TermNode node6 = featureNodeService.load(node6Uuid); Assert.assertEquals("Node6 treeindex is not correct", node3.treeIndex() + "2#4#6#", node6.treeIndex()); //root of new feature tree @@ -130,7 +130,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ //into new classification node3 = featureNodeService.load(node3Uuid); - TermTreeNode node5 = featureNodeService.load(node5Uuid); + TermNode node5 = featureNodeService.load(node5Uuid); node5.addChild(node3); featureNodeService.saveOrUpdate(node5); commitAndStartNewTransaction(new String[]{"TaxonNode"}); @@ -145,7 +145,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ @DataSet(loadStrategy=RefreshLoadStrategy.class, value="FeatureNodeServiceImplTest-indexing.xml") public final void testIndexDeleteNode() { node2 = featureNodeService.load(node2Uuid); - TermTreeNode root = node2.getParent(); + TermNode root = node2.getParent(); FeatureNodeDeletionConfigurator config = new FeatureNodeDeletionConfigurator(); config.setDeleteElement(false); config.setChildHandling(ChildHandling.MOVE_TO_PARENT); @@ -157,7 +157,7 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ assertNull(node2); node3 = featureNodeService.load(node3Uuid); assertNotNull(node3); - TermTreeNode node4 = featureNodeService.load(node4Uuid); + TermNode node4 = featureNodeService.load(node4Uuid); assertNotNull(node4); config.setDeleteElement(false); config.setChildHandling(ChildHandling.DELETE); @@ -166,11 +166,11 @@ public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{ tree1 = featureTreeService.load(featureTreeUuid); node4 = featureNodeService.load(node4Uuid); assertNull(node4); - TermTreeNode node6 = featureNodeService.load(node6Uuid); + TermNode node6 = featureNodeService.load(node6Uuid); assertNull(node6); HibernateProxyHelper.deproxy(tree1, TermTree.class); - TermTreeNode rootNode = HibernateProxyHelper.deproxy(tree1.getRoot(), TermTreeNode.class); + TermNode rootNode = HibernateProxyHelper.deproxy(tree1.getRoot(), TermNode.class); assertNotNull(tree1); featureTreeService.delete(tree1.getUuid()); commitAndStartNewTransaction(/*new String[]{"TaxonNode"}*/); diff --git a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java index cc9712f5cb..f5e5da9186 100644 --- a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java +++ b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGeneratorTest.java @@ -30,7 +30,7 @@ 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.TermTree; -import eu.etaxonomy.cdm.model.term.TermTreeNode; +import eu.etaxonomy.cdm.model.term.TermNode; import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest; @Ignore //FIXME Remove @Ignore once maximes code is completely committed @@ -55,7 +55,7 @@ public class NaturalLanguageGeneratorTest extends CdmIntegrationTest { description = TaxonDescription.NewInstance(taxon); featureTree= TermTree.NewInstance(); - TermTreeNode root = featureTree.getRoot(); + TermNode root = featureTree.getRoot(); String[][][] tableStrings = { { {"a","b"} } , { { "a1" , "a2" } , { "b1" } } }; buildBranches(root,tableStrings,0,2,0); for (Iterator f = featureSet.iterator() ; f.hasNext() ;){ @@ -95,13 +95,13 @@ public class NaturalLanguageGeneratorTest extends CdmIntegrationTest { System.out.println(stringBuilder.toString()); } - public void buildBranches(TermTreeNode parent, String[][][] children, int level, int depth, int nodeNumber) { + public void buildBranches(TermNode parent, String[][][] children, int level, int depth, int nodeNumber) { int i = nodeNumber; int j; for (j=0; j child = parent.addChild(feature); + TermNode child = parent.addChild(feature); if (level - - - - - - - + + + + + + + \ No newline at end of file diff --git a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml index 6dd5983011..209b3f2571 100644 --- a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml +++ b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml @@ -421,10 +421,10 @@ - - - - + + + + diff --git a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml index f22fabca23..86296ae850 100644 --- a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml +++ b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml @@ -419,10 +419,10 @@ - - - - + + + + diff --git a/cdmlib-test/src/main/resources/dbscripts/001-cdm.h2.sql b/cdmlib-test/src/main/resources/dbscripts/001-cdm.h2.sql index cf6851060c..5c8bf339f0 100644 --- a/cdmlib-test/src/main/resources/dbscripts/001-cdm.h2.sql +++ b/cdmlib-test/src/main/resources/dbscripts/001-cdm.h2.sql @@ -5046,30 +5046,30 @@ CREATE CACHED TABLE PUBLIC.TERMRELATION_AUD( PARENT_ID INTEGER ); -- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMRELATION_AUD; -CREATE CACHED TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF( - TERMTREENODE_ID INTEGER NOT NULL, +CREATE CACHED TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF( + TERMNODE_ID INTEGER NOT NULL, INAPPLICABLEIF_ID INTEGER NOT NULL ); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF; -CREATE CACHED TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD( +-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF; +CREATE CACHED TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD( REV INTEGER NOT NULL, - TERMTREENODE_ID INTEGER NOT NULL, + TERMNODE_ID INTEGER NOT NULL, INAPPLICABLEIF_ID INTEGER NOT NULL, REVTYPE TINYINT ); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD; -CREATE CACHED TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE( - TERMTREENODE_ID INTEGER NOT NULL, +-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD; +CREATE CACHED TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE( + TERMNODE_ID INTEGER NOT NULL, ONLYAPPLICABLEIF_ID INTEGER NOT NULL ); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE; -CREATE CACHED TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD( +-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE; +CREATE CACHED TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD( REV INTEGER NOT NULL, - TERMTREENODE_ID INTEGER NOT NULL, + TERMNODE_ID INTEGER NOT NULL, ONLYAPPLICABLEIF_ID INTEGER NOT NULL, REVTYPE TINYINT ); --- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD; +-- 0 +/- SELECT COUNT(*) FROM PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD; CREATE CACHED TABLE PUBLIC.TYPEDESIGNATIONBASE( DTYPE VARCHAR(31) NOT NULL, ID INTEGER NOT NULL, @@ -5431,7 +5431,7 @@ ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO ADD CONSTRAINT PUBLIC.CO ALTER TABLE PUBLIC.TAXONBASE_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXE3C PRIMARY KEY(REV, TAXONBASE_ID, SOURCES_ID); ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC81E PRIMARY KEY(ID, REV); ALTER TABLE PUBLIC.TAXONNAME_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX98E PRIMARY KEY(TAXONNAME_ID, MARKERS_ID); -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA85 PRIMARY KEY(TERMTREENODE_ID, ONLYAPPLICABLEIF_ID); +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA85 PRIMARY KEY(TERMNODE_ID, ONLYAPPLICABLEIF_ID); ALTER TABLE PUBLIC.DESCRIPTIVEDATASET_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB92 PRIMARY KEY(ID, REV); ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB5D PRIMARY KEY(NOMENCLATURALSTATUS_ID, MARKERS_ID); ALTER TABLE PUBLIC.DESCRIPTIONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXA82 PRIMARY KEY(REV, DESCRIPTIONBASE_ID, ANNOTATIONS_ID); @@ -5533,7 +5533,7 @@ ALTER TABLE PUBLIC.USERACCOUNT_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX850 PRIMA ALTER TABLE PUBLIC.MEDIAKEY_TAXONSCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3AB PRIMARY KEY(MEDIAKEY_ID, TAXONOMICSCOPE_ID); ALTER TABLE PUBLIC.DERIVATIONEVENT ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX83E PRIMARY KEY(ID); ALTER TABLE PUBLIC.TERMCOLLECTION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXDDD PRIMARY KEY(ID, REV); -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3F PRIMARY KEY(REV, TERMTREENODE_ID, ONLYAPPLICABLEIF_ID); +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX3F PRIMARY KEY(REV, TERMNODE_ID, ONLYAPPLICABLEIF_ID); ALTER TABLE PUBLIC.MEDIAKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAA PRIMARY KEY(MEDIAKEY_ID, COVEREDTAXA_ID); ALTER TABLE PUBLIC.DEFINEDTERMBASE_COUNTRY_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX96 PRIMARY KEY(REV, NAMEDAREA_ID, COUNTRIES_ID); ALTER TABLE PUBLIC.MULTIACCESSKEY_COVEREDTAXON ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCAA PRIMARY KEY(MULTIACCESSKEY_ID, COVEREDTAXA_ID); @@ -5546,7 +5546,7 @@ ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX ALTER TABLE PUBLIC.MULTIACCESSKEY_NAMEDAREA ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXCC2 PRIMARY KEY(MULTIACCESSKEY_ID, GEOGRAPHICALSCOPE_ID); ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX879 PRIMARY KEY(NOMENCLATURALSTATUS_ID, ANNOTATIONS_ID); ALTER TABLE PUBLIC.GATHERINGEVENT_DEFINEDTERMBASE_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC7 PRIMARY KEY(REV, GATHERINGEVENT_ID, COLLECTINGAREAS_ID); -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAC PRIMARY KEY(TERMTREENODE_ID, INAPPLICABLEIF_ID); +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXAC PRIMARY KEY(TERMNODE_ID, INAPPLICABLEIF_ID); ALTER TABLE PUBLIC.AGENTBASE_EXTENSION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB9 PRIMARY KEY(REV, AGENTBASE_ID, EXTENSIONS_ID); ALTER TABLE PUBLIC.ANNOTATION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXC0 PRIMARY KEY(ID); ALTER TABLE PUBLIC.COLLECTION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB5 PRIMARY KEY(ID); @@ -5558,7 +5558,7 @@ ALTER TABLE PUBLIC.AGENTBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX ALTER TABLE PUBLIC.HOMOTYPICALGROUP_MARKER ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBC PRIMARY KEY(HOMOTYPICALGROUP_ID, MARKERS_ID); ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXX48 PRIMARY KEY(ID, REV); ALTER TABLE PUBLIC.COLLECTION_EXTENSION ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXBB PRIMARY KEY(COLLECTION_ID, EXTENSIONS_ID); -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB3 PRIMARY KEY(REV, TERMTREENODE_ID, INAPPLICABLEIF_ID); +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB3 PRIMARY KEY(REV, TERMNODE_ID, INAPPLICABLEIF_ID); ALTER TABLE PUBLIC.PERMISSIONGROUP_GRANTEDAUTHORITYIMPL ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB1 PRIMARY KEY(GROUP_ID, GRANTEDAUTHORITIES_ID); ALTER TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB6 PRIMARY KEY(FEATURE_ID, RECOMMENDEDSTATISTICALMEASURES_ID); ALTER TABLE PUBLIC.POLYTOMOUSKEY_SCOPE ADD CONSTRAINT PUBLIC.CONSTRAINT_XXXB7 PRIMARY KEY(POLYTOMOUSKEY_ID, SCOPERESTRICTIONS_ID); @@ -5841,7 +5841,7 @@ ALTER TABLE PUBLIC.DEFINEDTERMBASE_MEASUREMENTUNIT ADD CONSTRAINT PUBLIC.FKE9D17 ALTER TABLE PUBLIC.MEDIA_SEQUENCE_AUD ADD CONSTRAINT PUBLIC.FK3C7BD9CD34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.TAXONBASE_CREDIT ADD CONSTRAINT PUBLIC.FK4CB48B3D9C9D39 FOREIGN KEY(TAXONBASE_ID) REFERENCES PUBLIC.TAXONBASE(ID) NOCHECK; ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK; -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.FK6AE876AB52FCC4B FOREIGN KEY(TERMTREENODE_ID) REFERENCES PUBLIC.TERMRELATION(ID) NOCHECK; +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.FK6AE876AB52FCC4B FOREIGN KEY(TERMNODE_ID) REFERENCES PUBLIC.TERMRELATION(ID) NOCHECK; ALTER TABLE PUBLIC.COLLECTION_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKF810044F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.REPRESENTATION_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK36EEE73234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.MEDIA_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FKAB2ADBA334869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; @@ -5933,7 +5933,7 @@ ALTER TABLE PUBLIC.KEYSTATEMENT_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FK70BB5FD8D ALTER TABLE PUBLIC.AGENTBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK4FDFF8D134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.MEDIAKEY_SCOPE ADD CONSTRAINT PUBLIC.FKBFFEE8F0546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.TERMCOLLECTION_REPRESENTATION ADD CONSTRAINT PUBLIC.FKA408B63A258E060 FOREIGN KEY(TERMCOLLECTION_ID) REFERENCES PUBLIC.TERMCOLLECTION(ID) NOCHECK; -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D0152FCC4B FOREIGN KEY(TERMTREENODE_ID) REFERENCES PUBLIC.TERMRELATION(ID) NOCHECK; +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D0152FCC4B FOREIGN KEY(TERMNODE_ID) REFERENCES PUBLIC.TERMRELATION(ID) NOCHECK; ALTER TABLE PUBLIC.POLYTOMOUSKEY_ORIGINALSOURCEBASE_AUD ADD CONSTRAINT PUBLIC.FKE644349534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.COLLECTION_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK9AABDB5434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKDE29CD8033B8A841 FOREIGN KEY(SPECIMEN_ID) REFERENCES PUBLIC.SPECIMENOROBSERVATIONBASE(ID) NOCHECK; @@ -6070,7 +6070,7 @@ ALTER TABLE PUBLIC.STATEDATA_DEFINEDTERMBASE ADD CONSTRAINT PUBLIC.FK107321E2E09 ALTER TABLE PUBLIC.TAXONBASE_ANNOTATION_AUD ADD CONSTRAINT PUBLIC.FK8C145C434869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE ADD CONSTRAINT PUBLIC.FK38FE7671E8D36B00 FOREIGN KEY(LANGUAGE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.FK46C7FC4AEB7F3BE FOREIGN KEY(CITATION_ID) REFERENCES PUBLIC.REFERENCE(ID) NOCHECK; -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.FK6AE876AB57FA94D4 FOREIGN KEY(ONLYAPPLICABLEIF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE ADD CONSTRAINT PUBLIC.FK6AE876AB57FA94D4 FOREIGN KEY(ONLYAPPLICABLEIF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_MODIFIER ADD CONSTRAINT PUBLIC.FK97E0D1053B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK; ALTER TABLE PUBLIC.TERMRELATION ADD CONSTRAINT PUBLIC.FK4CEED9F84220AFEB FOREIGN KEY(TERM_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.DEFINEDTERMBASE_STATISTICALMEASURE ADD CONSTRAINT PUBLIC.FK6FF15DFCD0BDAE9B FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; @@ -6279,7 +6279,7 @@ ALTER TABLE PUBLIC.CREDIT ADD CONSTRAINT PUBLIC.FK78CA9719BC5DA539 FOREIGN KEY(U ALTER TABLE PUBLIC.REFERENCE_MEDIA_AUD ADD CONSTRAINT PUBLIC.FK8318CB8134869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.INDIVIDUALSASSOCIATION_LANGUAGESTRING ADD CONSTRAINT PUBLIC.FKB5C75EC028459272 FOREIGN KEY(DESCRIPTION_MAPKEY_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.MEDIAREPRESENTATIONPART ADD CONSTRAINT PUBLIC.FK67A45544BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK; -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D011128E63B FOREIGN KEY(INAPPLICABLEIF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF ADD CONSTRAINT PUBLIC.FK56833D011128E63B FOREIGN KEY(INAPPLICABLEIF_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.COLLECTION_CREDIT_AUD ADD CONSTRAINT PUBLIC.FK25A8D88B34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.DEFINEDTERMBASE_SUPPORTEDCATEGORICALENUMERATION ADD CONSTRAINT PUBLIC.FK2170B25CD0BDAE9B FOREIGN KEY(FEATURE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.DERIVATIONEVENT_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8ED0FAE734869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; @@ -6472,7 +6472,7 @@ ALTER TABLE PUBLIC.MEDIA ADD CONSTRAINT PUBLIC.FK46C7FC4BC5DA539 FOREIGN KEY(UPD ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK365E4F3C1E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK; ALTER TABLE PUBLIC.STATEDATA ADD CONSTRAINT PUBLIC.FKFB1697BBBC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK; ALTER TABLE PUBLIC.DEFINEDTERMBASE_ANNOTATION ADD CONSTRAINT PUBLIC.FK589B6C8C0DB4934 FOREIGN KEY(DEFINEDTERMBASE_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT PUBLIC.FK3F5356FC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_ONLYAPPLICABLE_AUD ADD CONSTRAINT PUBLIC.FK3F5356FC34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.MULTIACCESSKEY_SCOPE ADD CONSTRAINT PUBLIC.FKCC6CE4F7546985E4 FOREIGN KEY(SCOPERESTRICTIONS_ID) REFERENCES PUBLIC.DEFINEDTERMBASE(ID) NOCHECK; ALTER TABLE PUBLIC.AGENTBASE_ADDRESS ADD CONSTRAINT PUBLIC.FK1EDFF7EB86EFC5D4 FOREIGN KEY(AGENTBASE_ID) REFERENCES PUBLIC.AGENTBASE(ID) NOCHECK; ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_MARKER ADD CONSTRAINT PUBLIC.FK8E6106C7777265A1 FOREIGN KEY(MARKERS_ID) REFERENCES PUBLIC.MARKER(ID) NOCHECK; @@ -6524,7 +6524,7 @@ ALTER TABLE PUBLIC.DESCRIPTIONBASE ADD CONSTRAINT PUBLIC.FKFF4D58CDDE9A3E39 FORE ALTER TABLE PUBLIC.NOMENCLATURALSTATUS_MARKER_AUD ADD CONSTRAINT PUBLIC.FK8619495F34869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.NAMERELATIONSHIP_MARKER ADD CONSTRAINT PUBLIC.FKE3E463967B4CB560 FOREIGN KEY(NAMERELATIONSHIP_ID) REFERENCES PUBLIC.NAMERELATIONSHIP(ID) NOCHECK; ALTER TABLE PUBLIC.SPECIMENOROBSERVATIONBASE_RIGHTSINFO_AUD ADD CONSTRAINT PUBLIC.FK4168503534869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; -ALTER TABLE PUBLIC.TERMTREENODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD ADD CONSTRAINT PUBLIC.FKB8D7025234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; +ALTER TABLE PUBLIC.TERMNODE_DEFINEDTERMBASE_INAPPLICABLEIF_AUD ADD CONSTRAINT PUBLIC.FKB8D7025234869AAE FOREIGN KEY(REV) REFERENCES PUBLIC.AUDITEVENT(REVISIONNUMBER) NOCHECK; ALTER TABLE PUBLIC.DESCRIPTIONELEMENTBASE_ORIGINALSOURCEBASE ADD CONSTRAINT PUBLIC.FKF41ADEEB3B8BB609 FOREIGN KEY(DESCRIPTIONELEMENTBASE_ID) REFERENCES PUBLIC.DESCRIPTIONELEMENTBASE(ID) NOCHECK; ALTER TABLE PUBLIC.ADDRESS ADD CONSTRAINT PUBLIC.FK1ED033D4BC5DA539 FOREIGN KEY(UPDATEDBY_ID) REFERENCES PUBLIC.USERACCOUNT(ID) NOCHECK; ALTER TABLE PUBLIC.DETERMINATIONEVENT_ANNOTATION ADD CONSTRAINT PUBLIC.FKB74F03F71E403E0B FOREIGN KEY(ANNOTATIONS_ID) REFERENCES PUBLIC.ANNOTATION(ID) NOCHECK; diff --git a/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml b/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml index af2474d605..b0ea850377 100644 --- a/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml +++ b/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDBDataSet.xml @@ -421,10 +421,10 @@ - - - - + + + + diff --git a/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml b/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml index f22fabca23..86296ae850 100644 --- a/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml +++ b/cdmlib-test/src/main/resources/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml @@ -419,10 +419,10 @@ - - - - + + + + diff --git a/cdmlib-test/src/test/resources/eu/etaxonomy/cdm/hibernate.cfg.xml b/cdmlib-test/src/test/resources/eu/etaxonomy/cdm/hibernate.cfg.xml index 05a4460d66..59f51bf6f2 100644 --- a/cdmlib-test/src/test/resources/eu/etaxonomy/cdm/hibernate.cfg.xml +++ b/cdmlib-test/src/test/resources/eu/etaxonomy/cdm/hibernate.cfg.xml @@ -206,7 +206,7 @@ - + -- 2.34.1