From 2df611a7c36720f3ec1efede7200805225c77e01 Mon Sep 17 00:00:00 2001
From: anttil <anttil>
Date: Fri, 17 Jun 2016 07:12:03 +0000
Subject: [PATCH] SSDM-3760: Duplicated Lucene global search fields for data
 sets

SVN: 36698
---
 .../shared/dto/DataGlobalSearchBridge.java        | 15 +++++++++++++++
 .../shared/dto/ExperimentGlobalSearchBridge.java  |  9 +++++++++
 .../dto/ExternalDataGlobalSearchBridge.java       |  9 +++++++++
 .../generic/shared/dto/GlobalSearchBridge.java    |  6 +++---
 .../shared/dto/LinkDataGlobalSearchBridge.java    |  9 +++++++++
 .../shared/dto/MaterialGlobalSearchBridge.java    |  9 +++++++++
 .../shared/dto/SampleGlobalSearchBridge.java      |  9 +++++++++
 7 files changed, 63 insertions(+), 3 deletions(-)

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 5c595dad94d..7e5292a51c0 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 9e7d1bb23d0..81ae45ad490 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 a02a8d6fcc0..f2ecfa548cb 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 3f1967bb944..e45f187a116 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 e27b788a6c4..1aee7449f4c 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 885bc70e831..7654a09b6fc 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 4a51a6019d1..9cf00769b37 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;
+    }
 }
-- 
GitLab