From 77c9b8f830674c73126feee501318e78b8cc2b3e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20M=C3=BCller?= Date: Fri, 17 Jun 2022 17:26:59 +0200 Subject: [PATCH] ref #3722, ref #8127, ref #10067 fully remove sortindex updating and collection null handling workaround from TaxonNode --- .../CdmLightClassificationExport.java | 2 +- .../etaxonomy/cdm/model/name/TaxonName.java | 3 +- .../etaxonomy/cdm/model/taxon/TaxonNode.java | 44 +++++++------------ .../hibernate/PostMergeEntityListener.java | 2 +- 4 files changed, 20 insertions(+), 31 deletions(-) diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightClassificationExport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightClassificationExport.java index 7fb2d2fe63..77e8602dc7 100755 --- a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightClassificationExport.java +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightClassificationExport.java @@ -389,7 +389,7 @@ public class CdmLightClassificationExport } } - taxonNode.removeNullValueFromChildren(); +// taxonNode.removeNullValueFromChildren(); } catch (Exception e) { state.getResult().addException(e, "An unexpected error occurred when handling the taxon node of " diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TaxonName.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TaxonName.java index b08d0b5e38..d8cd5a8c1f 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TaxonName.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/name/TaxonName.java @@ -353,9 +353,8 @@ public class TaxonName @XmlElement(name = "NameCache") @Fields({ @Field(name = "nameCache_tokenized"), - @Field(store = Store.YES, index = Index.YES, analyze = Analyze.YES) + @Field(store = Store.YES, index = Index.YES, analyzer = @Analyzer(impl = org.apache.lucene.analysis.core.KeywordAnalyzer.class)) }) - @Analyzer(impl = org.apache.lucene.analysis.core.KeywordAnalyzer.class) @Match(value=MatchMode.CACHE, cacheReplaceMode=ReplaceMode.DEFINED, cacheReplacedProperties={"genusOrUninomial", "infraGenericEpithet", "specificEpithet", "infraSpecificEpithet"} ) @NotEmpty(groups = Level2.class) // implicitly NotNull diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java index 59a10af9a8..17f2b250fc 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/TaxonNode.java @@ -36,8 +36,8 @@ import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger; -import org.hibernate.LazyInitializationException; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; import org.hibernate.annotations.Parameter; @@ -687,12 +687,9 @@ public class TaxonNode childNodes.remove(index); child.setClassification(null); - //update sortindex - //TODO workaround (see sortIndex doc) this.countChildren = childNodes.size(); child.setParent(null); child.setTreeIndex(null); - updateSortIndex(index); child.setSortIndex(null); } } @@ -770,10 +767,7 @@ public class TaxonNode // add this node to the parent's child nodes parent = CdmBase.deproxy(parent); List parentChildren = parent.getChildNodes(); - //TODO: Only as a workaround. We have to find out why merge creates null entries. -// HHH_9751_Util.removeAllNull(parentChildren); -// parent.updateSortIndex(0); if (index > parent.getChildNodes().size()){ index = parent.getChildNodes().size(); } @@ -788,16 +782,12 @@ public class TaxonNode parentChildren.add(index, this); } - //sortIndex - //TODO workaround (see sortIndex doc) - // this.getParent().removeNullValueFromChildren(); - this.getParent().updateSortIndex(index); - //only for debugging - if (this.getSortIndex() == null){ - logger.warn("sortindex is null. This should not happen."); - }else if (! this.getSortIndex().equals(index)){ - logger.warn("index and sortindex are not equal: " + this.getSortIndex() + ";" + index); - } +// //only for debugging +// if (this.getSortIndex() == null){ +// logger.warn("sortindex is null. This should not happen."); +// }else if (! this.getSortIndex().equals(index)){ +// logger.warn("index and sortindex are not equal: " + this.getSortIndex() + ";" + index); +// } // update the children count parent.setCountChildren(parent.getChildNodes().size()); @@ -809,7 +799,7 @@ public class TaxonNode * @param parentChildren * @param index */ - private void updateSortIndex(int index) { + private void updateSortIndex_old(int index) { if (this.hasChildNodes()){ List children = this.getChildNodes(); HHH_9751_Util.removeAllNull(children); @@ -1042,14 +1032,14 @@ public class TaxonNode return getTaxon() == null? null: getTaxon().getName(); } - public void removeNullValueFromChildren(){ - try { - //HHH_9751_Util.removeAllNull(childNodes); - this.updateSortIndex(0); - } catch (LazyInitializationException e) { - logger.info("Cannot clean up uninitialized children without a session, skipping."); - } - } +// public void removeNullValueFromChildren(){ +// try { +// //HHH_9751_Util.removeAllNull(childNodes); +// this.updateSortIndex(0); +// } catch (LazyInitializationException e) { +// logger.info("Cannot clean up uninitialized children without a session, skipping."); +// } +// } private boolean hasStatus(TaxonNodeStatus status) { return CdmUtils.nullSafeEqual(this.status, status); 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 d757672e0c..532885e820 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 @@ -84,7 +84,7 @@ public class PostMergeEntityListener implements MergeEventListener { if (TaxonNode.class.isAssignableFrom(entityClazz)){ TaxonNode node = (TaxonNode)entity; - node.removeNullValueFromChildren(); +// node.removeNullValueFromChildren(); } else if (PolytomousKeyNode.class.isAssignableFrom(entityClazz)){ PolytomousKeyNode node = (PolytomousKeyNode) entity; if (node.getChildren() != null && Hibernate.isInitialized(node.getChildren()) ){ -- 2.34.1