diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java index 5c595dad94d04dadc8c990f5cc517d5287d665cb..7e5292a51c06cb1c8223200477e94619cb8c8386 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataGlobalSearchBridge.java @@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.util.HashMap; import java.util.Map; +import org.apache.lucene.document.Document; +import org.hibernate.search.bridge.LuceneOptions; + public class DataGlobalSearchBridge<T extends DataPE> extends GlobalSearchBridge<T> { @@ -20,4 +23,16 @@ public class DataGlobalSearchBridge<T extends DataPE> extends GlobalSearchBridge addPerson(values, "modifier", data.getModifier()); return values; } + + @Override + protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions) + { + if (this.getClass().equals(DataGlobalSearchBridge.class) && ((value instanceof ExternalDataPE) || (value instanceof LinkDataPE))) + { + return false; + } else + { + return true; + } + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java index 9e7d1bb23d07adbbef6774847a43f6aa9736db82..81ae45ad4900b5ff7f80cd61aba567f90ead4d61 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentGlobalSearchBridge.java @@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.util.HashMap; import java.util.Map; +import org.apache.lucene.document.Document; +import org.hibernate.search.bridge.LuceneOptions; + public class ExperimentGlobalSearchBridge extends GlobalSearchBridge<ExperimentPE> { @Override @@ -26,4 +29,10 @@ public class ExperimentGlobalSearchBridge extends GlobalSearchBridge<ExperimentP addPerson(values, "modifier", experiment.getModifier()); return values; } + + @Override + protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions) + { + return true; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java index a02a8d6fcc0b1a426d151b5eb0d36673f10a3ecf..f2ecfa548cbc4dd3afd48ed0f0f498fb45680888 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExternalDataGlobalSearchBridge.java @@ -2,6 +2,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.util.Map; +import org.apache.lucene.document.Document; +import org.hibernate.search.bridge.LuceneOptions; + public class ExternalDataGlobalSearchBridge extends GlobalSearchBridge<ExternalDataPE> { @@ -42,4 +45,10 @@ public class ExternalDataGlobalSearchBridge extends GlobalSearchBridge<ExternalD put(values, "Speed hint", Integer.toString(data.getSpeedHint())); return values; } + + @Override + protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions) + { + return true; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java index 3f1967bb944b04390425ce9fc69d00b45da6519c..e45f187a11694efa7025e1d53bda47b616e54758 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/GlobalSearchBridge.java @@ -146,12 +146,12 @@ public abstract class GlobalSearchBridge<T extends IEntityWithMetaprojects> impl } } + protected abstract boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions); + @Override public void set(String name, Object value, Document document, LuceneOptions luceneOptions) { - - // Prevent double-indexing (SSDM-3760) - if (this.getClass().equals(DataGlobalSearchBridge.class) && value instanceof ExternalDataPE) + if (shouldIndex(name, value, document, luceneOptions) == false) { return; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java index e27b788a6c4d9ffcfc3f00748162215482daf242..1aee7449f4c4d13ed94208645b18c9ba4f474af6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/LinkDataGlobalSearchBridge.java @@ -2,6 +2,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.util.Map; +import org.apache.lucene.document.Document; +import org.hibernate.search.bridge.LuceneOptions; + public class LinkDataGlobalSearchBridge extends GlobalSearchBridge<LinkDataPE> { @@ -17,4 +20,10 @@ public class LinkDataGlobalSearchBridge extends GlobalSearchBridge<LinkDataPE> } return values; } + + @Override + protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions) + { + return true; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java index 885bc70e831b3b73de9fd37ddde91c2aadd28b9a..7654a09b6fce4da632e57877e867fd05fc59bda3 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/MaterialGlobalSearchBridge.java @@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.util.HashMap; import java.util.Map; +import org.apache.lucene.document.Document; +import org.hibernate.search.bridge.LuceneOptions; + public class MaterialGlobalSearchBridge extends GlobalSearchBridge<MaterialPE> { @Override @@ -20,4 +23,10 @@ public class MaterialGlobalSearchBridge extends GlobalSearchBridge<MaterialPE> addPerson(values, "registrator", material.getRegistrator()); return values; } + + @Override + protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions) + { + return true; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java index 4a51a6019d1cabdd44bd6fb4440849b0e3ee8481..9cf00769b3726f68a5ef2673e705c81ccb283aed 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/SampleGlobalSearchBridge.java @@ -3,6 +3,9 @@ package ch.systemsx.cisd.openbis.generic.shared.dto; import java.util.HashMap; import java.util.Map; +import org.apache.lucene.document.Document; +import org.hibernate.search.bridge.LuceneOptions; + public class SampleGlobalSearchBridge extends GlobalSearchBridge<SamplePE> { @Override @@ -31,4 +34,10 @@ public class SampleGlobalSearchBridge extends GlobalSearchBridge<SamplePE> addPerson(values, "modifier", sample.getModifier()); return values; } + + @Override + protected boolean shouldIndex(String name, Object value, Document document, LuceneOptions luceneOptions) + { + return true; + } }