/* *------------------------------------------------------------------------------ * Copyright (C) 2015 University of Dundee. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * *------------------------------------------------------------------------------ */ package integration.gateway; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import omero.gateway.SecurityContext; import omero.gateway.exception.DSAccessException; import omero.gateway.exception.DSOutOfServiceException; import omero.gateway.model.SearchParameters; import omero.gateway.model.SearchResultCollection; import omero.gateway.model.SearchScope; import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import omero.gateway.model.DataObject; import omero.gateway.model.DatasetData; import omero.gateway.model.ExperimenterData; import omero.gateway.model.GroupData; import omero.gateway.model.ImageData; import omero.gateway.model.PlateData; import omero.gateway.model.ProjectData; import omero.gateway.model.ScreenData; /** * * @author Dominik Lindner      <a * href="mailto:d.lindner@dundee.ac.uk">d.lindner@dundee.ac.uk</a> * @since 5.1 */ public class SearchFacilityTest extends GatewayTest { private SecurityContext ctx; private GroupData group; private ExperimenterData user; private ProjectData proj; private DatasetData ds; private ScreenData screen; private PlateData plate; private ImageData img; @Override @BeforeClass(alwaysRun = true) protected void setUp() throws Exception { super.setUp(); initData(); // wait a little bit for the search indexer Thread.sleep(30000); } @Test public void testSearch() throws DSOutOfServiceException, DSAccessException { Set<SearchScope> scope = new HashSet<SearchScope>(); scope.add(SearchScope.NAME); List<Class<? extends DataObject>> types = new ArrayList<Class<? extends DataObject>>(); types.add(ProjectData.class); types.add(DatasetData.class); types.add(ScreenData.class); types.add(PlateData.class); types.add(ImageData.class); String query = proj.getName().substring(0, 6) + "*"; SearchParameters param = new SearchParameters(scope, types, query); SearchResultCollection results = searchFacility.search(ctx, param); Assert.assertEquals(results.size(), 1); Assert.assertEquals(results.iterator().next().getType(), ProjectData.class); Assert.assertEquals(results.iterator().next().getObjectId(), proj.getId()); query = ds.getName().substring(0, 6) + "*"; param = new SearchParameters(scope, types, query); results = searchFacility.search(ctx, param); Assert.assertEquals(results.size(), 1); Assert.assertEquals(results.iterator().next().getType(), DatasetData.class); Assert.assertEquals(results.iterator().next().getObjectId(), ds.getId()); query = screen.getName().substring(0, 6) + "*"; param = new SearchParameters(scope, types, query); results = searchFacility.search(ctx, param); Assert.assertEquals(results.size(), 1); Assert.assertEquals(results.iterator().next().getType(), ScreenData.class); Assert.assertEquals(results.iterator().next().getObjectId(), screen.getId()); query = plate.getName().substring(0, 6) + "*"; param = new SearchParameters(scope, types, query); results = searchFacility.search(ctx, param); Assert.assertEquals(results.size(), 1); Assert.assertEquals(results.iterator().next().getType(), PlateData.class); Assert.assertEquals(results.iterator().next().getObjectId(), plate.getId()); query = img.getName().substring(0, 6) + "*"; param = new SearchParameters(scope, types, query); results = searchFacility.search(ctx, param); Assert.assertEquals(results.size(), 1); Assert.assertEquals(results.iterator().next().getType(), ImageData.class); Assert.assertEquals(results.iterator().next().getObjectId(), img.getId()); } private void initData() throws Exception { this.group = createGroup(); this.user = createExperimenter(group); ctx = new SecurityContext(group.getId()); ctx.setExperimenter(user); ctx.sudo(); this.proj = createProject(ctx); this.ds = createDataset(ctx, proj); this.screen = createScreen(ctx); this.plate = createPlate(ctx, screen); this.img = createImage(ctx, ds); } }