From e2669e5c951695e38586f99754e8c258a28dba0c Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Mon, 23 Mar 2009 16:05:52 +0000 Subject: [PATCH] LMS-791 index datasets when experiment properties are changed + unit tests + updated test db index SVN: 10326 --- .../db/search/LuceneQueryBuilder.java | 15 +- .../generic/shared/dto/AttachmentPE.java | 2 + .../generic/shared/dto/ExperimentPE.java | 6 +- .../generic/shared/dto/ProcedurePE.java | 10 +- .../dto/hibernate/SearchFieldConstants.java | 2 +- .../server/dataaccess/db/AbstractDAOTest.java | 4 +- .../dataaccess/db/HibernateSearchDAOTest.java | 238 +++++++++++++++++- .../segments_2 | Bin 58 -> 58 bytes .../_0.cfs | Bin 3864 -> 3941 bytes .../_1.cfs | Bin 2936 -> 3034 bytes .../_2.cfs | Bin 5814 -> 5941 bytes .../_2_1.del | Bin 0 -> 9 bytes .../_3.cfs | Bin 0 -> 5941 bytes .../_3_1.del | Bin 0 -> 9 bytes .../_4.cfs | Bin 0 -> 5941 bytes .../segments.gen | Bin 20 -> 20 bytes .../segments_5 | Bin 118 -> 0 bytes .../segments_7 | Bin 0 -> 178 bytes .../segments_7 | Bin 88 -> 88 bytes .../_0.cfs | Bin 0 -> 5769 bytes .../_0_1.del | Bin 0 -> 10 bytes .../_1.cfs | Bin 0 -> 5769 bytes .../segments.gen | Bin 0 -> 20 bytes .../segments_4 | Bin 0 -> 88 bytes .../segments_3 | Bin 88 -> 88 bytes 25 files changed, 262 insertions(+), 15 deletions(-) create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_2_1.del create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_3.cfs create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_3_1.del create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_4.cfs delete mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments_5 create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments_7 create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_0.cfs create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_0_1.del create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_1.cfs create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/segments.gen create mode 100644 openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/segments_4 diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java index c6e05961693..69c774be7fe 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/LuceneQueryBuilder.java @@ -20,6 +20,7 @@ import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldC import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants.PREFIX_EXPERIMENT; import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants.PREFIX_EXPERIMENT_TYPE; import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants.PREFIX_GROUP; +import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants.PREFIX_PROCEDURE; import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants.PREFIX_PROJECT; import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants.PREFIX_SAMPLE; import static ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants.PREFIX_SAMPLE_TYPE; @@ -56,7 +57,8 @@ public class LuceneQueryBuilder LogFactory.getLogger(LogCategory.OPERATION, LuceneQueryBuilder.class); /** @throws UserFailureException when some search patterns are incorrect */ - public static Query createQuery(DataSetSearchCriteria dataSetCriteria) throws UserFailureException + public static Query createQuery(DataSetSearchCriteria dataSetCriteria) + throws UserFailureException { List<DataSetSearchCriterion> criteria = dataSetCriteria.getCriteria(); Occur occureCondition = createOccureCondition(dataSetCriteria.getConnection()); @@ -162,6 +164,7 @@ public class LuceneQueryBuilder private static String tryGetIndexFieldName(DataSetSearchField searchField) { DataSetSearchFieldKind fieldKind = searchField.getKind(); + String experimentField = PREFIX_PROCEDURE + PREFIX_EXPERIMENT; switch (fieldKind) { case DATA_SET_CODE: @@ -171,15 +174,15 @@ public class LuceneQueryBuilder case FILE_TYPE: return SearchFieldConstants.PREFIX_FILE_FORMAT_TYPE + CODE; case GROUP: - return PREFIX_EXPERIMENT + PREFIX_PROJECT + PREFIX_GROUP + CODE; + return experimentField + PREFIX_PROJECT + PREFIX_GROUP + CODE; case PROJECT: - return PREFIX_EXPERIMENT + PREFIX_PROJECT + CODE; + return experimentField + PREFIX_PROJECT + CODE; case EXPERIMENT: - return PREFIX_EXPERIMENT + CODE; + return experimentField + CODE; case EXPERIMENT_TYPE: - return PREFIX_EXPERIMENT + PREFIX_EXPERIMENT_TYPE + CODE; + return experimentField + PREFIX_EXPERIMENT_TYPE + CODE; case EXPERIMENT_PROPERTY: - return PREFIX_EXPERIMENT + getPropertyIndexField(searchField.getPropertyCode()); + return experimentField + getPropertyIndexField(searchField.getPropertyCode()); case SAMPLE: return PREFIX_SAMPLE + CODE; case SAMPLE_TYPE: diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentPE.java index f7bf5d0a8ec..0a5d25106f5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/AttachmentPE.java @@ -38,6 +38,7 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.hibernate.search.annotations.ClassBridge; +import org.hibernate.search.annotations.ContainedIn; import org.hibernate.search.annotations.Index; import org.hibernate.search.annotations.Store; import org.hibernate.search.bridge.FieldBridge; @@ -169,6 +170,7 @@ public class AttachmentPE extends HibernateAbstractRegistrationHolder implements @JoinColumn(name = ColumnNames.EXPERIMENT_COLUMN, updatable = false) @Private // for Hibernate and bean conversion only + @ContainedIn public ExperimentPE getParentInternal() { return parent; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java index f66bff73372..6a64b0b7ed8 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ExperimentPE.java @@ -48,6 +48,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.Generated; import org.hibernate.annotations.GenerationTime; +import org.hibernate.search.annotations.ContainedIn; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Index; @@ -144,8 +145,6 @@ public class ExperimentPE implements IEntityPropertiesHolder<ExperimentPropertyP private Date modificationDate; - // private Date modificationDate; - @Column(name = ColumnNames.REGISTRATION_TIMESTAMP_COLUMN, nullable = false, insertable = false, updatable = false) @Generated(GenerationTime.INSERT) public Date getRegistrationDate() @@ -361,7 +360,8 @@ public class ExperimentPE implements IEntityPropertiesHolder<ExperimentPropertyP } @OneToMany(fetch = FetchType.LAZY, mappedBy = "experimentInternal") - @JoinColumn(name = ColumnNames.EXPERIMENT_COLUMN, updatable = false) + @JoinColumn(name = ColumnNames.EXPERIMENT_COLUMN, updatable = true) + @ContainedIn private List<ProcedurePE> getExperimentProcedures() { return procedures; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ProcedurePE.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ProcedurePE.java index 7f3a98ab55e..75a25809122 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ProcedurePE.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/ProcedurePE.java @@ -39,6 +39,9 @@ import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.hibernate.annotations.Generated; import org.hibernate.annotations.GenerationTime; +import org.hibernate.search.annotations.ContainedIn; +import org.hibernate.search.annotations.DocumentId; +import org.hibernate.search.annotations.Indexed; import org.hibernate.search.annotations.IndexedEmbedded; import org.hibernate.validator.NotNull; @@ -53,6 +56,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstant */ @Entity @Table(name = TableNames.PROCEDURES_TABLE) +@Indexed public class ProcedurePE implements IIdHolder, Serializable { public final static ProcedurePE[] EMPTY_ARRAY = new ProcedurePE[0]; @@ -114,6 +118,7 @@ public class ProcedurePE implements IIdHolder, Serializable @SequenceGenerator(name = SequenceNames.PROCEDURE_SEQUENCE, sequenceName = SequenceNames.PROCEDURE_SEQUENCE, allocationSize = 1) @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = SequenceNames.PROCEDURE_SEQUENCE) + @DocumentId public final Long getId() { return id; @@ -169,8 +174,9 @@ public class ProcedurePE implements IIdHolder, Serializable this.inputSamples = inputSamples; } - @OneToMany(fetch = FetchType.LAZY) - @JoinColumn(name = ColumnNames.PROCEDURE_PRODUCED_BY_COLUMN, updatable = false) + @OneToMany(fetch = FetchType.LAZY, mappedBy = "procedure") + @JoinColumn(name = ColumnNames.PROCEDURE_PRODUCED_BY_COLUMN, updatable = true) + @ContainedIn public Set<DataPE> getData() { return data; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java index ffd031c4805..732f929396c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/SearchFieldConstants.java @@ -68,7 +68,7 @@ public final class SearchFieldConstants * bridge class or the field name consists of some other non empty elements). */ - public static final String PREFIX_PROCEDURE = ""; + public static final String PREFIX_PROCEDURE = "in" + SEPARATOR; public static final String PREFIX_EXPERIMENT_ATTACHMENTS = ""; } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOTest.java index 0c8e144e104..86b20e4827e 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOTest.java @@ -59,6 +59,8 @@ import ch.systemsx.cisd.openbis.generic.shared.util.UuidUtil; { AbstractDAO.class }) public abstract class AbstractDAOTest extends AbstractTransactionalTestNGSpringContextTests { + static final String LUCENE_INDEX_PATH = "targets/lucene/indices"; + static { LogInitializer.init(); @@ -66,7 +68,7 @@ public abstract class AbstractDAOTest extends AbstractTransactionalTestNGSpringC System.setProperty("database.kind", "test"); System.setProperty("script-folder", "sourceTest"); System.setProperty("hibernate.search.index-mode", "NO_INDEX"); - System.setProperty("hibernate.search.index-base", "sourceTest/lucene/indices"); + System.setProperty("hibernate.search.index-base", LUCENE_INDEX_PATH); System.setProperty("mass-upload-folder", "sourceTest/sql/postgresql"); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAOTest.java index ee898c2da43..8e72b2d1380 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAOTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAOTest.java @@ -21,30 +21,44 @@ import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.fail; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.Set; +import org.hibernate.classic.Session; +import org.hibernate.search.FullTextSession; +import org.hibernate.search.Search; import org.testng.AssertJUnit; +import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import ch.rinn.restrictions.Friend; +import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.common.test.AssertionUtil; import ch.systemsx.cisd.openbis.generic.server.dataaccess.IHibernateSearchDAO; import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.search.LuceneQueryBuilder; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriterion; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchField; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchFieldKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetSearchCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchCriteriaConnection; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetSearchHitDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPropertyPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.GroupPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.HierarchyType; +import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityPropertiesHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPropertyPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE; import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SearchHit; /** @@ -57,6 +71,24 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SearchHit; @Friend(toClasses = HibernateSearchDAO.class) public final class HibernateSearchDAOTest extends AbstractDAOTest { + private final static String LUCENE_INDEX_TEMPLATE_PATH = "./sourceTest/lucene/indices"; + + @BeforeClass + public void setUpIndex() + { + restoreSearchIndex(); + } + + // create a fresh copy of the Lucene index + private static void restoreSearchIndex() + { + File targetPath = new File(LUCENE_INDEX_PATH); + FileUtilities.deleteRecursively(targetPath); + targetPath.mkdirs(); + File srcPath = new File(LUCENE_INDEX_TEMPLATE_PATH); + FileUtilities.copyDirectory(srcPath, targetPath); + } + @SuppressWarnings("unused") @DataProvider(name = "registratorTerm") private final static Object[][] getRegistratorTerm() @@ -215,7 +247,8 @@ public final class HibernateSearchDAOTest extends AbstractDAOTest // NOTE: such a check depends strongly on the test database content. Use it only when the better // way to check the results is much harder. - private void assertCorrectDatasetsFound(DataSetSearchCriteria criteria, DSLoc... expectedLocations) + private void assertCorrectDatasetsFound(DataSetSearchCriteria criteria, + DSLoc... expectedLocations) { List<DataSetSearchHitDTO> dataSets = searchForDatasets(criteria); AssertJUnit.assertEquals(expectedLocations.length, dataSets.size()); @@ -270,6 +303,26 @@ public final class HibernateSearchDAOTest extends AbstractDAOTest assertCorrectDatasetsFound(criteria, DSLoc.LOC1, DSLoc.LOC2, DSLoc.LOC3); } + @Test + public final void testSearchForDataSetsSpecificSampleProperty() + { + String propertyValue = "stuff"; + DataSetSearchCriterion criterion = + mkCriterion(DataSetSearchField.createSampleProperty("USER.COMMENT"), propertyValue); + DataSetSearchCriteria criteria = createAndDatasetQuery(criterion); + assertCorrectDatasetsFound(criteria, DSLoc.LOC1, DSLoc.LOC2, DSLoc.LOC3); + } + + @Test + public final void testSearchForDataSetsSimpleField() + { + DataSetSearchCriterion criterion = + mkCriterion(DataSetSearchField.createSimpleField(DataSetSearchFieldKind.PROJECT), + "NEMO"); + DataSetSearchCriteria criteria = createAndDatasetQuery(criterion); + assertCorrectDatasetsFound(criteria, DSLoc.LOC1, DSLoc.LOC3, DSLoc.LOC4, DSLoc.LOC5); + } + @Test public final void testSearchForDataSetsAnyProperty() { @@ -303,4 +356,185 @@ public final class HibernateSearchDAOTest extends AbstractDAOTest createAndDatasetQuery(criterion1, criterion2, criterion3, criterion4); assertCorrectDatasetsFound(criteria, DSLoc.LOC4, DSLoc.LOC5); } + + @Test + /* + * Checks if the dataset search index is properly updated after properties for a connected + * sample have changed. + */ + public final void testSearchForDataSetsAfterSamplePropertiesUpdate() + throws InterruptedException + { + String propertyCode = "USER.COMMENT"; + DataSetSearchCriterion criterion = + mkCriterion(DataSetSearchField.createSampleProperty(propertyCode), "stuff"); + + DataSetSearchCriteria criteria = createAndDatasetQuery(criterion); + assertCorrectDatasetsFound(criteria, DSLoc.LOC1, DSLoc.LOC2, DSLoc.LOC3); + + SamplePE sample = findSample("CP-TEST-3", "CISD"); + + String newValue = "Bonanza"; + changeSampleProperty(sample, propertyCode, newValue); + + flushSearchIndices(); + assertCorrectDatasetsFound(criteria, DSLoc.LOC2, DSLoc.LOC3); + restoreSearchIndex(); + } + + @Test + /* + * Checks if the dataset search index is properly updated after properties for a connected + * experiment have changed. + */ + public final void testSearchForDataSetsAfterExperimentPropertiesUpdate() + throws InterruptedException + { + String propertyCode = "USER.GENDER"; + DataSetSearchCriterion criterion = + mkCriterion(DataSetSearchField.createExperimentProperty(propertyCode), "female"); + + DataSetSearchCriteria criteria = createAndDatasetQuery(criterion); + assertCorrectDatasetsFound(criteria, DSLoc.LOC1); + + // This experiment has two datasets. Each of them has "male" value as a gender property. + // We change it to "female" and check, if 2 new search results appear. + ExperimentPE exp = findExperiment("EXP-TEST-2", "NEMO", "CISD"); + String newValue = "male"; + changeExperimentProperty(exp, propertyCode, newValue); + flushSearchIndices(); + assertCorrectDatasetsFound(criteria); + restoreSearchIndex(); + } + + private void flushSearchIndices() + { + Session currentSession = sessionFactory.getCurrentSession(); + FullTextSession fullTextSession = Search.getFullTextSession(currentSession); + fullTextSession.flushToIndexes(); + } + + private void flushSession() + { + sessionFactory.getCurrentSession().flush(); + } + + private void changeExperimentProperty(ExperimentPE exp, String propertyCode, String newValue) + { + ExperimentPropertyPE property = findProperty(exp, propertyCode); + + removeProperty(exp, property); + flushSession(); + + ExperimentPropertyPE newProperty = new ExperimentPropertyPE(); + copyPropertyWithNewValue(newValue, property, newProperty); + addProperty(exp, newProperty); + flushSession(); + } + + private void changeSampleProperty(SamplePE sample, String propertyCode, String newValue) + { + SamplePropertyPE property = findProperty(sample, propertyCode); + + removeProperty(sample, property); + flushSession(); + + SamplePropertyPE newProperty = new SamplePropertyPE(); + copyPropertyWithNewValue(newValue, property, newProperty); + addProperty(sample, newProperty); + flushSession(); + } + + private void copyPropertyWithNewValue(String newValue, EntityPropertyPE oldProperty, + EntityPropertyPE newProperty) + { + newProperty.setEntityTypePropertyType(oldProperty.getEntityTypePropertyType()); + newProperty.setRegistrator(oldProperty.getRegistrator()); + newProperty.setValue(newValue); + } + + private static <T extends EntityPropertyPE> void addProperty( + IEntityPropertiesHolder<T> propertiesHolder, T newProperty) + { + Set<T> properties = getCopiedProperties(propertiesHolder); + properties.add(newProperty); + propertiesHolder.setProperties(properties); + } + + private static <T extends EntityPropertyPE> Set<T> removeProperty( + IEntityPropertiesHolder<T> propertiesHolder, T property) + { + Set<T> properties = getCopiedProperties(propertiesHolder); + boolean removed = properties.remove(property); + assert removed : "property could not be removed"; + propertiesHolder.setProperties(properties); + return properties; + } + + private static <T extends EntityPropertyPE> Set<T> getCopiedProperties( + IEntityPropertiesHolder<T> propertiesHolder) + { + return new HashSet<T>(propertiesHolder.getProperties()); + } + + private static <T extends EntityPropertyPE> T findProperty( + IEntityPropertiesHolder<T> propertiesHolder, String propertyCode) + { + for (T prop : propertiesHolder.getProperties()) + { + if (prop.getEntityTypePropertyType().getPropertyType().getCode().equals(propertyCode)) + { + return prop; + } + } + fail("property not found: " + propertyCode); + return null; // never happens + } + + private ExperimentPE findExperiment(String code, String projectCode, String groupCode) + { + ProjectPE project = findProject(projectCode, groupCode); + return findExperiment(code, project); + } + + private ExperimentPE findExperiment(String code, ProjectPE project) + { + ExperimentPE exp = daoFactory.getExperimentDAO().tryFindByCodeAndProject(project, code); + assert exp != null : "cannot find experiment: " + code; + return exp; + } + + private SamplePE findSample(String sampleCode, String groupCode) + { + GroupPE group = findGroup(groupCode); + SamplePE sample = findSample(sampleCode, group); + return sample; + } + + private SamplePE findSample(String sampleCode, GroupPE group) + { + SamplePE sample = + daoFactory.getSampleDAO().tryFindByCodeAndGroup(sampleCode, group, + HierarchyType.CHILD); + assert sample != null : "cannot find sample: " + sampleCode; + return sample; + } + + private ProjectPE findProject(String code, String groupCode) + { + ProjectPE result = + daoFactory.getProjectDAO().tryFindProject( + daoFactory.getHomeDatabaseInstance().getCode(), groupCode, code); + assert result != null : "cannot find the project: " + code; + return result; + } + + private GroupPE findGroup(String groupCode) + { + GroupPE group = + daoFactory.getGroupDAO().tryFindGroupByCodeAndDatabaseInstance(groupCode, + daoFactory.getHomeDatabaseInstance()); + assert group != null : "cannot find the group: " + groupCode; + return group; + } } diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE/segments_2 b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE/segments_2 index f7433b7f3f18e5c12a34ad24c201054971d067bb..d29e9845bfd6804811fb8c9cf8c33a05245913c8 100644 GIT binary patch delta 23 fcmcDr;`#so|4#-6Mg`;VdQua4v{<|rOUeNNZ$}6D delta 23 fcmcDr;`#so|4#-6Mg=3Y;*g0vS}bPXOTPdBY(faE diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_0.cfs b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_0.cfs index 932e04ae52e5fc32f315e3013967e03eb1baad4f..13746f0fbdb9406cf1722a4d2682f62c510b7564 100644 GIT binary patch literal 3941 zcmdUy>rUfF6vsXGBq0fb01E_mVWVEOQq_%cLbkv+1ZJCxOBCp;{e+A&5bq{-uqQ03 zs;ZCG2kKK)mFPKVY;dYTi?&jQqsg4h|D5<|JCn(TrjB9ybggpUmdZ1JA~(2HF8>W( zFX%<?A4+_!+|(4h(sd)(RBou;-0vjzqS~pK==KAwWuI%>meZ+(!%&J|cwKSauwC){ z!aH-r%7ySm;5wDCV+W#LX-mIiT}u&oc6Zm7cGG&s7R0sP>vx59-3Mt;crvWWYxy50 zbT(IATiY<rwffp-)vRy4`KI>TEV1mjJIAMugYCDLp{364ZYWk6KWXgkF^yGIj9Wi6 z%`}+NScka=!^|*#XdN778Q*Cf@8%#f0huD3+b)MLqLjrg%Pivu+xylGw1H92Gya|5 z@g|wE>x%*er&#v5(K_5dg>#vPP8?!OELD5A(=?YgV{@bWLY1sg$#a(5vG(^*oBP`* z*3-N4o94#G>)QA$U#PunwvL*uhIO*t`Vnry`u}$e>i_l@Fhk=y$H9!`OVf272jmm) z%2Sb1`{~viOr3j7l_dEm`>=Iz^K;_(_%Y#tIUM4^_sh${;F1pXR0d~UfYcJDaW%7F zZf<V=jAEGk6-E(8PSYTBGYw`bA;B~bCHaJvOw*yuY_yo&Edb#&d=v~^(R4ncWo*xv z9T6;|!yVD>E<&EC`(0a#5N&4oZGncCZ;Q|g+`e>uj{+Rp*3mN98=5lFib>f?*9&DZ za8M4NI6Rgg{0}}^Y5(lKa3tw&KZ|pg4SYw0q3c~xKdwYjnpP_rMj4lb_K->u1N$*! z*oSk(j~Ijq181AMa)SX8q?k!LeF#;ciJ9k6M$Bl%%xDucrIXA`kIZNRGfgowWk;Cj zZkfr7m`N8gV?4o3{fJo=C}xZ*W-3KyszYYd5i{i!Gn&9mIbfzaW?q1tVn!=wMw^%^ zon%&eWJU{^X^NRCJHoth%S=|pOuC2};|XT!N6e}~F=JFQQz<f29Ws-Sm?@{2(FA77 z0W-}p^E~7fGg>h-+QdxhB(u^ZGg`n*Q_M`+5$5?@X0jq?(nZV|PcTzIVpau;8Ka7s zN|BlBkePJEOgY7jCNNVDm}wrjv(TBY7t-ptPG^j1M#l+DU}-70XJ3dC^ocec2AYN1 zRX_0ifh(jP3|FCA<I+7pU&UHhg?IclqzP95Gli{~nZ{b!ozPTE<3(ZX<Z(~*{0zo9 z?#8mDFmp;cfm06pL~BP8{pjmXHt*S8F-zj=3{7>K_<Pv7<S}5heKDy71@eJ!3XN3g z!q$#VW=<;wM;=z^NRg^tIel{p&mXro%c!8XFQ^T)U7--Ji_g(Y(YlD{%i?LrJ;R-& z6sJzt4nwB9ZN?o~Em@{5x<ZOJOSxVdqO&mF5td0)9F2i$c{Bp|0GB_dE{)GYRe5~o zBJc-&RlE9-0y=y-nh(T<3k$a`{a~xS=LVrHAKE>^zIZ^kZ^x>Y2UPG`i=$}?&$c?r z`7sI5zZwnWb14EjEPsD&wJN*T@lLDJJZT&qvZZ^3(BrdvQq<$Eb+~J_*jKicw$s7w z{ubP-asL3mE?<eDQm(RBciOTCSLVKgM>Ji3gtqnwt;uHE@V_P$vV3=`^C97>>z<7q zxK72$yi=}5k^3Hrm2vsIXJP)_g+CwXe$ca%pAY*I{4T+OuOf}5rF?#20mFqtsWhFR z&gbA*S%H15J~^4qWpfh~Q&Wa+==1Q(WEh*t&*Y2nnw@=$wQvPASaYHS7fOv8u=d80 LIQREC&SUjomtR-o literal 3864 zcmdUyTTkOg6vsXG<W5Mq-!|KH)v8j}jc@{6;0=M<rs5I>x@w;y;|#>Ri5=_-ODa_D zC+Y|3b3aEvK_z<587CNRkh<zV6i1Uem;V|2H?}8}w5E<>vbA2hXiMc80lC4Ia{2G* zdO<I8|5D-`<tB7=rRzrS*UAl*oBe~tUR0a^6WxA*wd{qa?KquEI1Hueg*O$)4cisJ zFT8U%tXv9D1g=vFJ9Z%2mA3RN){PW_XLt8)X*aAnwkU4wUcW1>n?6W;!joY|-pJ3G z(AivdeSOO`*EiR<tLEm`tM6+s%_WxkVehn6KiYk58Cv4P?uLRhZvEUa6B?^VZ3Frm zG&9Ngv2}EkW_+)Hx}Ska3Ni&Yw_6Tfy#BHn1I#dfw0me3VHjweS;l|#J6?_%`@Wch zV4h`8>&@fc7F@tIj8tO$tbTC7AhpaAwKsbWb44?@x2kKZ@)=dGvh1F9c-U$j?w(ms zZ`QZXt*w`}|JAJLYi}COlSZ>{o$WS%f$87)x6{uIjq4m6GvXgj*L7@=k9{joMIPEu zyLLnrr})@5*u&Uy^XTq&e7t`@Hpv(cZ*PZi+}>VY4F*?qpodYV#6?FfOBz=_`}OYb z?(Zmuxew5a(6X8anY#j*%Q4As;D3OoB>!Rc(sUSQHd?^$-~Vt99|HqdF`cKil<oPl zBZ5VAxFfpVMac7HziUeoqRkAyEzr<%Z4o+w+n28IQGmm+n`jyA6?Lg-m89&H>xD8H zI4FmaI6RW?{C7TCN&oz<a3tx*=i;1Y0^bo~=z5nl9#<kLO{#?qqm0Wzdq|~-f#We_ z*oSMxQw&0cfvZhiyTO1663nEWK7=aJjF@LpM$Bl9n9(L?O2?U%9+}YsX6i=FlzqTF zJ7y*;VkTY0jPV#VjYrI?Krv%fF;girQynssj+iN@n9&4g$^kR=BjyFjDQ2`r%xDuc zrQ^&>kIZNRGj$_o%06IT7&DU<F_SK0#(0dG#v^7`pqMeLn5h(*sScS*N6eH{%xD5L z<$#&`5%WCc6f;^QX0(Z!(s5>`M`pBunYs}(WgjrlkD1Aem`N8gV?4%8;}NqeP|O%r z%v6fZRENx@BWB7eW;B7Ba==Xeq}_zhbUmL`zi~QaOfx!8xCEA#aC`QpSb}k)O@@Ic zzSbs3i<t@Ps;a9ckd$qZ$34;WlcdLORa)sY)YVehWnr9XK`5Xfy~AYlp4}BQB(4^z z+oX=ah22ON14i2yIVG4PA1*qNMj~`!k47dlr!kVRUH1dOAGku=!LS6l8kg?HMG0Y9 z6~6KJle$Fh+Uc9i2#=eX6)dN7uF*N*oX;qPE8!|y30eu!d|qsI+;iL?O3`w<b{I0< zZ8Pq``p8mk(G^m(S>YbKOqqNv0P>}n3m1(GoYE~!NPxaHA$%G5gTAU-do&HTFJj3+ zT)MCv+tLqq$_H)`%JQ+@6YR^!G>7&`vig_=PB9<LNqA7zRl(2B=+2iZ3d*lyF}zzM zki+s%r&hDFZ=LQn>y5Me$uaJ@$CYChRDUrkPSvli<9(~izO|*aoeu8NcVN3aY1{r? z`C0^(a+Q5^uPu8p36B+g!k`<Upsjs^)?_nn_%jj;sV0&hsa!~SYOXVp1CvyY%=;Vh zJc>Ma_e+!V_ji8b!i7H%7k<#Q<L8Hs1-=^4;8mlxvXaX!E@C*JUtTWc3b`yCr4npH z^{J^$Hj_=Kr>70w&==s7N-;K*o5>a7GduefYhea7SVG{y1yN%LES%`!q2eF+DyzO3 F`v+sgMlb*X diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_1.cfs b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_1.cfs index bd7a57d390e1d92e39de4ad65468532b5c03d2be..d88c1bd64a3431538d8ab9b5077fc3995e87f1ba 100644 GIT binary patch literal 3034 zcmb_eS#R4$5a#mGVaM_nJC<VyM9>38A%TZ2TX_>C+EJqml3X->sKAITiwPyFByC7Q z9)kXb{)RsH4;FA|cBNPhWTQYsSUcCZv%`<OvrY;8nI(F9elQ+!OZpAX$PKxf_>)DQ z>D>Gq&2caXCpXZX1oLR}4?frB;N)LyZty!dQwPj+q8D4eq5F;oV>_a~zGsIa5nYGK zecz!Z=}?bG)FFyHR>8Xif=(wia7T0;sSL9f_W|lK?wJJsd)l9)4_3!umbyA}9r!mB zzS4`w5Rl>9cs!ujZWsl2<Oi?R3pWTOwPBAa`Q{N=&0e66A3?!d&*I@|Hle)8y%hn# ze;;=PC%|GfQ?EK!J72Ln<#x5ztu`AZ`v4GfY&&*jhcr^}S6dJ5(ZriCot_&2-I}ZS z$QN_ZL#!OHir>?bormLvcdEZy<Y;B6+^pBFMwcw|#wRx0m!(FvQzv@^7s?;_!N^{I zuOA*@fzj2vYL{P^I##bz>RROGW6(>hQL)<O?(Xg%zVC%MAV0xx3w~?DtNt(_&ccX} z!fC$mhE5*7%lMre=CA1(ws}7v4()(Cc_;Go)-=L%;#J@?v@Ah_47-M=o$I=Gsud0W zw5aQPP8W$JWfa3Oa)w9<$tb32=1f!tY1j{UBv2H0WM9)ANs<I*V0$42O%gWDTcjy) zX=Dep=a5IpOuP><A54}bcQAO4`N%1ZAPQWZF(JVTRdA6+M8hbjE09Mah5{7`qJEwr zB51_~P81D|NqJ01eiBO*eVPP-AR`%R%tG`vtc{o{5yeRg!-_-0zP<$$WMZHY)>&VO zSYu$0v^$#kL1d33X3DoTm@zFepd;I($E*NNI|50FendoBSOYqXInBsvMRW_&^(bPB zsGn{#T!D)-F3!0qq7dZw{&2jGB}<M^pRl5h4HT)q54GHkoeaJLeuRvKFA=)%IWtHz z(Kj&#F*Z3%1(~sQCbLD)Q3zsxvb#j<E~j-DLJBca2(qr77*9cyh{?qX3L#}XxAwSC zoh({uI*kH4qTY;|vgdxFOiTFDkOm>wL!i%Nej-OVgFzOTW+Y~@U}@mZ4l!Hu+7DdM zvzeg`Z$|c*sgiD(2MCZ%L+47NP+$rpYJWl0Gh|5aQ_tH&O__Lb6EIZ}2yAhDWG={e zT#8qXcKz;S{F%*WamT&22u(kJoPy3xK621>3L*a7g5aybi1jZ$UzjW+0s{P!f<=m- zE5=w1&JFm)BJSTWABZmX2we0N{CJNLAab_}<^d273$YOtJXK4kLg3ILKw^plk1WFg z5F8dUlxQzzVjLlhi3|T656hAx;s5k0k*sP`J0$(O-04;8rAuqkgPs$)TfMjdj!qS_ zX8qF2b*)Y}rzfy&B#GRx>diEf%hgV04Ngo7dcqdronRXvr|U%i369_sB2|340f#9= zp1?KGYF;%eJy>lMTrvO)yChv+B!9|JO_uCpgHRVIMGbM&9}?yDRlU>z=3zVU^Zd_P z{ynl*wraIrs|J_AS7wOy?$r!!m_N7L%~rc=bxZBHKviLxDg&u1CW+K&T5+aM=1dvL zRN=oeb+*Km!I?6%WdCymQF)hGkd?e_wyU*T3Fv}D|1e$Z*WFO;ep^jfrd4|r=j-fC zz6|Z5t#!zD#OG^-|L4hXm}8Q-u<E6nbwrNu?+jJbUa>#*vflks)4@Qx&v7W?aJGW@ sbf?;Gl;-<W$NhP}#Jb5@Kgp79wj)*S)+%q*heW!ly#=zNu|7=pzv2zI;s5{u literal 2936 zcmb_dTW=ai6yCEJFm~`YPJD?QQdNCu1=?MFBX0=SHZ3;+uA07}4Lg`k7MAX=Es*k% zpVpWDt4i)UGmDKQP$M-Xm~)+T&U`a-c103nn&=w2{%9y9<tGv&Hxy!`!mZ9E78!}7 zAa+jtMdCP!tw~d?b%k^Cny(H1jK#mX=tM`G-GTd_1tU9R-JWNMA;_)+YR`8VBpv3l zh&iyqCSw-3LpF*s+>)MCp!>@?aUA#`STFY5U0^`}qXp`lz`q@f=!Z+qxc2)wW590Q zFbeF*58h@j+#rlHb$iI*%`%^=J##r&=7K4n&)K5sn2D;kztp1V4|6))ID!;SGuLga zl`C8AQmfMJR2p@7vB(QoZ#i~khb+oGCRq#Z;n<5areXnIH)HnE^SfBH41=RZ_Q(D2 z$L6P1w<~{G@M@u{)Tq_0dIx54pDt{)E{pX_y9T>`7t8Pa!O))H*N=-J;6OF6TcxXF z+v=8!9SdGB^}Dp{Wvd1E_xJyZJ1kux{fz%j{I5!HdxKm!4I?%TC%K**IypR!(R(+{ z-LMf}-d-*o*a35LPUPpTNkn(vE8_t)ElI%$JEpFm8-{+O7fj=%U>HW$kU>$_HPbY+ zrVIe<T0Wo8=82V*K`-1=kkQ<seZ#gCMUk|=?S%|EMN)7dDlv(Og;CZ}F_H$Rifbj= zIM+Z%uAosQ+0;2zM{MXPD7fsi1Ug76ZDWO!fRUnLkWb1)j+12892WMB4P2mtNkm%X z=tcaYaz)A=j{P9AM-dm*I~Ghim*}&h?Xg$909`*s3Sb<9tV*j0L?Nr2S-n7NNx2zD zoRN)_P40Ip$eAGLf)t2I>IZ)?TBVW|$7gH2X!9A7m7b5a+>V?yZGqrRE3}Ew#e+yA zJh;hq3IXOip_I<w(G?3^7TLk{fHu57_C7w*QNqaW_Ye5G6Dm%EQ$fx+k$dB9swO^$ zZE+0SXwx81L{bg?*xW%*fxIBcM5GnlxwA(-=IoJ_Vv{IfL*`AnsCw>4#<_$a4OkEg zK18@Zt_L-`?f3U6H3xl<HmLNy={`kE-uQv*c{Ufc!R^o<aaJ+R{7Z6B@}?n})6-MV zaA0?5z`h_v)gJS_=fr7a5BoP~B?<5{(@+J0H-gH))?2mvPjh2Boz6*5*qLea>C*&x zA&Ob}O(tj(;|_^Pfio4)#{=_Vk|Y^zs8=+qO@1hpJic@nGM=VP2mj?j>s%k8jGyr@ z`hbL%`wbKca?HhNWFCGRXfvJ|4Tq}Y#MwDNWJ!q;W>Lt6y!djQXZkoC=7dA(|1=^Q z7ImR5NL`iM-Ab)^Y0a993ai%d&1}bNcd~{?EhPbJ-KsTKKrL0;<rKcAB=(C95M5#u zT~1a({RN-r8YpF-J;R5VhG*E;n~m#wxr-^*QFQ=nr*d(D$e(OOsx(WnBi_j#>`)8I z%-%*Oq-(wp+SPTfSbqt0fp<lg7d*>zSS?xAYPVU%?*5Iz;eGkPz%dD&LIRX}!+MI% zag2>g*qnYHHtGCt%~qq?s#u+3>m4<lIgm^NQhtv<_;I($h?X$JDS6pwRjSn@B84w} zIa05`?KR?`t*=4K)R$eO1AgugpOehom*y2DF05LyY8}GS<F_ND>u>olb6M;BtQ#m0 z(C0K2XgXT}d8%D$)r;|6G!9_BS^f1X;AeAy=LO)$d$7gtVTQVLMl|GoP%f(P5NB+l H%W?h}FbSg( diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_2.cfs b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_2.cfs index f8262dbb366631519643908ad469f6539fc6e9d1..b7f2872118c7b493814c5625c44333f5826c691e 100644 GIT binary patch literal 5941 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 QnkO$SSN6>*d^~0U1<0fBmH+?% literal 5814 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 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_2_1.del b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_2_1.del new file mode 100644 index 0000000000000000000000000000000000000000..860a7a5ea969fc24bca11aef7f63519b4e376b4a GIT binary patch literal 9 OcmZQzU|?kcVtD`nPyi|b literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_3.cfs b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_3.cfs new file mode 100644 index 0000000000000000000000000000000000000000..23122f0b72fc6962aa05d28312d4eb05d1eda7a4 GIT binary patch literal 5941 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 ZK@tB~6#jXN7yFB#N+egIHshr={|gpW?%n_Z literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_3_1.del b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_3_1.del new file mode 100644 index 0000000000000000000000000000000000000000..860a7a5ea969fc24bca11aef7f63519b4e376b4a GIT binary patch literal 9 OcmZQzU|?kcVtD`nPyi|b literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_4.cfs b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/_4.cfs new file mode 100644 index 0000000000000000000000000000000000000000..1c1fafbf505ae09596baa7a6e5038cb3aa87395f GIT binary patch literal 5941 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 YIHvL`4i-%19_El1i!YJWX@NxczjZ|KE&u=k literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments.gen b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments.gen index 53b46562e0e609d5844673f73639ae03d6cf1368..ae67acc2c5924dab767e15c5265ff24ef4f4a1ef 100644 GIT binary patch literal 20 QcmezW|NlP*2w;cN07?G@3IG5A literal 20 QcmezW|NlP*2w;WL07>fv1^@s6 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments_5 b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments_5 deleted file mode 100644 index dbe882dfb185895fad76acaff02d1ed37d92bdbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmezW|Nl=021W%Vv*JSx3=GU5%oJ|`q?mvh1Q`DV0fYeZm>8Mj4S_UBAqb$#G6Q9e VfTFA*Jum>*%fJZI5q9(2Z2);^Dr*1$ diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments_7 b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE/segments_7 new file mode 100644 index 0000000000000000000000000000000000000000..5942a0034494ede032e7931f8bb35ca98fcdcef9 GIT binary patch literal 178 zcmezW|Nl=021W(r?|Oj@3=FIw%oJ|`q?mvh1Q`DV0fYeZm>8Mj4S_T>ND2s0WtoAp mMnF-JF(7~{%L<e=28!aAH37+j?1KTgy$p;X^UmbnJ_P_n%sY+% literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE/segments_7 b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.MaterialPE/segments_7 index 85e54245c7cf1904e7269682dc07558f6968c3d5..834c4143b4b0328eb519c38abb4fe0bbf75aa9b7 100644 GIT binary patch delta 23 fcma!u;Q9am|4#-6Mg`;VdZH6~JXkg@J^dK~c=HNB delta 23 fcma!u;Q9am|4#-6Mg=3YV*iOe9xUgsg<Asvbh`;1 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_0.cfs b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_0.cfs new file mode 100644 index 0000000000000000000000000000000000000000..137969dd04466ff84ec80bbd651ec37d4b529b92 GIT binary patch literal 5769 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 literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_0_1.del b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_0_1.del new file mode 100644 index 0000000000000000000000000000000000000000..ceed416c5002901fa90aac41beb4c4eadd8b0b7b GIT binary patch literal 10 PcmZQzVBll`;{S{Q0%HLa literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_1.cfs b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/_1.cfs new file mode 100644 index 0000000000000000000000000000000000000000..0dacba9f08824d1c253977c13fb48ef4414efb05 GIT binary patch literal 5769 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 literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/segments.gen b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/segments.gen new file mode 100644 index 0000000000000000000000000000000000000000..f142fa92b471a7c02d273c463b4395b5e21a01a6 GIT binary patch literal 20 QcmezW|NlP*2w;KH07>Bl1ONa4 literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/segments_4 b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.ProcedurePE/segments_4 new file mode 100644 index 0000000000000000000000000000000000000000..0a21f06194b34d510d90d79f88d3bce514baca71 GIT binary patch literal 88 zcmezW|Nl=021W(r?|K>x3=B*l%oJ|`q&R^X1Q`DV0fYeZI2oDZ4M8+W6b9h342&Qh Ias5|>02ezToB#j- literal 0 HcmV?d00001 diff --git a/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE/segments_3 b/openbis/sourceTest/lucene/indices/ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE/segments_3 index 4d8d164ee7bb288cb94de1c4f1240908a1d3c3f9..50192fa9b6f8751127a3209de314b0fb14edcecc 100644 GIT binary patch delta 23 fcma!u;Q9am|4#-6Mg`;Vy6Y$Mc(8aq*tQ4&eCY~B delta 23 fcma!u;Q9am|4#-6Mg=3Yq8Af+JXj|1-HQbPck&5X -- GitLab