diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java index 3621e331b362e491216eb868fbd73158bf500aa4..e48e373ea6f00c402a1acec51502e88cb498d9bd 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreService.java @@ -63,7 +63,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.ISessionWorkspaceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v2.ISequenceDatabase; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CustomImportFile; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatastoreServiceDescription; @@ -514,7 +514,7 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic } @Override - public List<SequenceSearchResult> searchForDataSetsWithSequences(String sessionToken, + public List<SearchDomainSearchResult> searchForDataSetsWithSequences(String sessionToken, String preferredSequenceDatabaseOrNull, String sequenceSnippet, Map<String, String> optionalParametersOrNull) { @@ -522,15 +522,15 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic ISequenceDatabase sequenceDatabase = findSequenceDatabase(provider, preferredSequenceDatabaseOrNull); if (sequenceDatabase != null) { - List<SequenceSearchResult> result = sequenceDatabase.search(sequenceSnippet, optionalParametersOrNull); - for (SequenceSearchResult sequenceSearchResult : result) + List<SearchDomainSearchResult> result = sequenceDatabase.search(sequenceSnippet, optionalParametersOrNull); + for (SearchDomainSearchResult sequenceSearchResult : result) { - sequenceSearchResult.setSequenceDatabaseName(sequenceDatabase.getName()); + sequenceSearchResult.setSearchDomain(sequenceDatabase.getName()); } return result; } operationLog.warn("No available sequence database found."); - return new ArrayList<SequenceSearchResult>(); + return new ArrayList<SearchDomainSearchResult>(); } private ISequenceDatabase findSequenceDatabase(PluginTaskProvider<ISequenceDatabase> provider, diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java index 1466957fab368b7466c8d53ce83835e631241990..906252f1d23101cca75e72a144a656eabdfc8a89 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceLogger.java @@ -26,7 +26,7 @@ import ch.systemsx.cisd.common.resource.IInitializable; import ch.systemsx.cisd.common.serviceconversation.ServiceMessage; import ch.systemsx.cisd.openbis.common.spring.IInvocationLoggerContext; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CustomImportFile; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation; @@ -197,7 +197,7 @@ class DataStoreServiceLogger implements IDataStoreService, IInitializable } @Override - public List<SequenceSearchResult> searchForDataSetsWithSequences(String sessionToken, + public List<SearchDomainSearchResult> searchForDataSetsWithSequences(String sessionToken, String preferredSequenceDatabaseOrNull, String sequenceSnippet, Map<String, String> optionalParametersOrNull) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/BlastDatabase.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/BlastDatabase.java index 7e8dd0526039ada26a08e49b284ab5fe78adb614..e6f7a7a7a88fc5d177df3ebb8ce779caaa05ac9a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/BlastDatabase.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/BlastDatabase.java @@ -44,7 +44,8 @@ import ch.systemsx.cisd.common.process.ProcessResult; import ch.systemsx.cisd.etlserver.plugins.BlastDatabaseCreationMaintenanceTask; import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v2.ISequenceDatabase; import ch.systemsx.cisd.openbis.dss.generic.shared.utils.BlastUtils; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFileSearchResultLocation; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; /** * Implementation of {@link ISequenceDatabase} based on <a href="http://blast.ncbi.nlm.nih.gov/Blast.cgi">BLAST</a>. @@ -135,14 +136,14 @@ public class BlastDatabase extends AbstractSequenceDatabase } @Override - public List<SequenceSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull) + public List<SearchDomainSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull) { Map<String, String> parameters = new HashMap<String, String>(); if (optionalParametersOrNull != null) { parameters.putAll(optionalParametersOrNull); } - List<SequenceSearchResult> result = new ArrayList<SequenceSearchResult>(); + List<SearchDomainSearchResult> result = new ArrayList<SearchDomainSearchResult>(); SequenceType sequenceType = FastaUtilities.determineSequenceType(sequenceSnippet); String queryFileName = new MessageFormat(QUERY_FILE_NAME_TEMPLATE).format( new Object[] {new Date(), counter.getAndIncrement()}); @@ -158,11 +159,13 @@ public class BlastDatabase extends AbstractSequenceDatabase Matcher matcher = STITLE_PATTERN.matcher(row[0]); if (matcher.matches()) { - SequenceSearchResult sequenceSearchResult = new SequenceSearchResult(); - sequenceSearchResult.setSequenceIdentifier(matcher.group(1)); - sequenceSearchResult.setDataSetCode(matcher.group(2)); - sequenceSearchResult.setPathInDataSet(matcher.group(3)); - sequenceSearchResult.setPositionInSequence(parse(row[1])); + SearchDomainSearchResult sequenceSearchResult = new SearchDomainSearchResult(); + DataSetFileSearchResultLocation resultLocation = new DataSetFileSearchResultLocation(); + resultLocation.setSequenceIdentifier(matcher.group(1)); + resultLocation.setDataSetCode(matcher.group(2)); + resultLocation.setPathInDataSet(matcher.group(3)); + resultLocation.setPositionInSequence(parse(row[1])); + sequenceSearchResult.setResultLocation(resultLocation); result.add(sequenceSearchResult); } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/EchoDatabase.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/EchoDatabase.java index e53451e969e40e6983050223e32c135031d8c7c2..c552078ed42108706204b90d6253039e40c83267 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/EchoDatabase.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/EchoDatabase.java @@ -25,7 +25,7 @@ import java.util.Properties; import com.fasterxml.jackson.databind.ObjectMapper; import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; /** * A test database that returns a search result that was stored in the parameters map under a key equal to the searched sequence snippet. @@ -46,7 +46,7 @@ public class EchoDatabase extends AbstractSequenceDatabase } @Override - public List<SequenceSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull) + public List<SearchDomainSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull) { String resultStr = optionalParametersOrNull.get(sequenceSnippet); if (resultStr != null) @@ -54,7 +54,7 @@ public class EchoDatabase extends AbstractSequenceDatabase try { ObjectMapper mapper = new ObjectMapper(); - SequenceSearchResult result = mapper.readValue(resultStr, SequenceSearchResult.class); + SearchDomainSearchResult result = mapper.readValue(resultStr, SearchDomainSearchResult.class); return Collections.singletonList(result); } catch (Exception e) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v2/ISequenceDatabase.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v2/ISequenceDatabase.java index 7055d2745406fe656349854daa7bffccab5a5984..1e5894fed4627598654231b9165611b6fb2a60ba 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v2/ISequenceDatabase.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/internal/v2/ISequenceDatabase.java @@ -21,7 +21,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; /** * Interface for a database for nucleotid or amonioacid sequences. @@ -34,7 +34,7 @@ public interface ISequenceDatabase { /** * Returns the name of this sequence database instance. - * Will be used to populated {@link SequenceSearchResult} instances of the search result.. + * Will be used to populated {@link SearchDomainSearchResult} instances of the search result.. */ public String getName(); @@ -50,5 +50,5 @@ public interface ISequenceDatabase * @param optionalParametersOrNull Optional parameters which might be used. Can be <code>null</code>. * @return an empty list if nothing be found. */ - public List<SequenceSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull); + public List<SearchDomainSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull); } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java index 126f3a3a737cb031cde13ce5c13456865061a52a..477b4d6e70f9d83ccdbf81255e84fdcf67ba3ebf 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServiceTest.java @@ -47,7 +47,8 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v2.ISequenceData import ch.systemsx.cisd.openbis.dss.generic.shared.utils.PluginUtilTest; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; import ch.systemsx.cisd.openbis.generic.shared.IServiceForDataStoreServer; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFileSearchResultLocation; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext; import ch.systemsx.cisd.openbis.generic.shared.dto.builders.DatasetDescriptionBuilder; @@ -117,12 +118,14 @@ public class DataStoreServiceTest extends AssertJUnit } @Override - public List<SequenceSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull) + public List<SearchDomainSearchResult> search(String sequenceSnippet, Map<String, String> optionalParametersOrNull) { assertSame(SEQUENCE_SNIPPET, sequenceSnippet); assertSame(OPTIONAL_PARAMETERS, optionalParametersOrNull); - SequenceSearchResult sequenceSearchResult = new SequenceSearchResult(); - sequenceSearchResult.setDataSetCode(dataSetCode); + SearchDomainSearchResult sequenceSearchResult = new SearchDomainSearchResult(); + DataSetFileSearchResultLocation resultLocation = new DataSetFileSearchResultLocation(); + sequenceSearchResult.setResultLocation(resultLocation); + resultLocation.setDataSetCode(dataSetCode); return Arrays.asList(sequenceSearchResult); } @@ -184,7 +187,7 @@ public class DataStoreServiceTest extends AssertJUnit pluginTaskParameters = context.mock(IPluginTaskInfoProvider.class); preparePluginTaskInfoProvider(); - List<SequenceSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, + List<SearchDomainSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, null, SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS); assertEquals(0, result.size()); @@ -197,7 +200,7 @@ public class DataStoreServiceTest extends AssertJUnit pluginTaskParameters = context.mock(IPluginTaskInfoProvider.class); preparePluginTaskInfoProvider("-1", "-2"); - List<SequenceSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, + List<SearchDomainSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, null, SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS); assertEquals(0, result.size()); @@ -210,10 +213,10 @@ public class DataStoreServiceTest extends AssertJUnit pluginTaskParameters = context.mock(IPluginTaskInfoProvider.class); preparePluginTaskInfoProvider("1", "2"); - List<SequenceSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, + List<SearchDomainSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, null, SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS); - assertEquals("DS-1", result.get(0).getDataSetCode()); + assertEquals("DS-1", ((DataSetFileSearchResultLocation) result.get(0).getResultLocation()).getDataSetCode()); assertEquals(1, result.size()); context.assertIsSatisfied(); } @@ -224,10 +227,10 @@ public class DataStoreServiceTest extends AssertJUnit pluginTaskParameters = context.mock(IPluginTaskInfoProvider.class); preparePluginTaskInfoProvider("1", "2"); - List<SequenceSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, + List<SearchDomainSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, "db-2", SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS); - assertEquals("DS-2", result.get(0).getDataSetCode()); + assertEquals("DS-2", ((DataSetFileSearchResultLocation) result.get(0).getResultLocation()).getDataSetCode()); assertEquals(1, result.size()); context.assertIsSatisfied(); } @@ -238,10 +241,10 @@ public class DataStoreServiceTest extends AssertJUnit pluginTaskParameters = context.mock(IPluginTaskInfoProvider.class); preparePluginTaskInfoProvider("-1", "2", "-3", "4"); - List<SequenceSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, + List<SearchDomainSearchResult> result = createService().searchForDataSetsWithSequences(sessionToken, "db-3", SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS); - assertEquals("DS-2", result.get(0).getDataSetCode()); + assertEquals("DS-2", ((DataSetFileSearchResultLocation) result.get(0).getResultLocation()).getDataSetCode()); assertEquals(1, result.size()); context.assertIsSatisfied(); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java index 48d4adc7c275e2683a617fc6ba96893a7b906c09..363a4bdf374728c3d9a1adf5de4786311507bfca 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java @@ -86,7 +86,7 @@ import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ExternalD import ch.systemsx.cisd.openbis.generic.server.authorization.validator.MatchingEntityValidator; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.ProjectValidator; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SampleValidator; -import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SequenceSearchResultValidator; +import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SearchDomainSearchResultValidator; import ch.systemsx.cisd.openbis.generic.server.authorization.validator.SpaceValidator; import ch.systemsx.cisd.openbis.generic.server.business.IPropertiesBatchManager; import ch.systemsx.cisd.openbis.generic.server.business.bo.DataAccessExceptionTranslator; @@ -1615,15 +1615,14 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt @Override @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) - @ReturnValueFilter(validatorClass = SequenceSearchResultValidator.class) - public List<SequenceSearchResultWithFullDataSet> searchForDataSetsWithSequences(String sessionToken, - String preferredSequenceDatabaseOrNull, String sequenceSnippet, - Map<String, String> optionalParametersOrNull) + @ReturnValueFilter(validatorClass = SearchDomainSearchResultValidator.class) + public List<SearchDomainSearchResultWithFullDataSet> searchOnSearchDomain(String sessionToken, + String preferredSearchDomainOrNull, String searchString, Map<String, String> optionalParametersOrNull) { Session session = getSession(sessionToken); IDataSetTable dataSetTable = businessObjectFactory.createDataSetTable(session); - return dataSetTable.searchForDataSetsWithSequences(preferredSequenceDatabaseOrNull, sequenceSnippet, + return dataSetTable.searchForDataSetsWithSequences(preferredSearchDomainOrNull, searchString, optionalParametersOrNull); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java index 4c5b2d1a5340c82167f197cc1bca5b576d3fddde..819d6968cae6936f90b4325664bb458c100ba947 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServerLogger.java @@ -109,7 +109,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Script; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptUpdateResult; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SequenceSearchResultWithFullDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchDomainSearchResultWithFullDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; @@ -697,12 +697,11 @@ final class CommonServerLogger extends AbstractServerLogger implements ICommonSe } @Override - public List<SequenceSearchResultWithFullDataSet> searchForDataSetsWithSequences(String sessionToken, - String preferredSequenceDatabaseOrNull, String sequenceSnippet, - Map<String, String> optionalParametersOrNull) + public List<SearchDomainSearchResultWithFullDataSet> searchOnSearchDomain(String sessionToken, + String preferredSearchDomainOrNull, String searchString, Map<String, String> optionalParametersOrNull) { - logAccess(sessionToken, "search_for_datasets_with_sequences", "preferred_database(%s) sequence_snippet(%s)", - preferredSequenceDatabaseOrNull, sequenceSnippet); + logAccess(sessionToken, "search_on_search_domain", "preferred_search_domain(%s) seerch_string(%s)", + preferredSearchDomainOrNull, searchString); return null; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java index a3d377ebfc265806c594cf2a452b880976485129..ef3ad1162b1ffaf70c11c7a7510f4537352703f5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java @@ -93,8 +93,8 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleFetchOption; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchableEntityKind; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Vocabulary; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.IObjectId; @@ -114,7 +114,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListMaterialCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListSampleCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SequenceSearchResultWithFullDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchDomainSearchResultWithFullDataSet; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentHolderPE; import ch.systemsx.cisd.openbis.generic.shared.dto.AttachmentPE; import ch.systemsx.cisd.openbis.generic.shared.dto.AuthorizationGroupPE; @@ -951,22 +951,22 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio @Transactional(readOnly = true) @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) // There is no @ReturnValueFilter because commonServer.searchForDataSetsWithSequences() does already the filtering. - public List<SequenceSearchResult> searchForDataSetsWithSequences(String sessionToken, - String preferredSequenceDatabaseOrNull, String sequenceSnippet, - Map<String, String> optionalParametersOrNull) + public List<SearchDomainSearchResult> searchOnSearchDomain(String sessionToken, String preferredSearchDomainOrNull, + String searchString, Map<String, String> optionalParametersOrNull) { checkSession(sessionToken); - List<SequenceSearchResult> result = new ArrayList<SequenceSearchResult>(); - List<SequenceSearchResultWithFullDataSet> list = commonServer.searchForDataSetsWithSequences(sessionToken, - preferredSequenceDatabaseOrNull, sequenceSnippet, optionalParametersOrNull); - for (SequenceSearchResultWithFullDataSet sequenceSearchResult : list) + List<SearchDomainSearchResult> result = new ArrayList<SearchDomainSearchResult>(); + List<SearchDomainSearchResultWithFullDataSet> list = commonServer.searchOnSearchDomain(sessionToken, + preferredSearchDomainOrNull, searchString, optionalParametersOrNull); + for (SearchDomainSearchResultWithFullDataSet sequenceSearchResult : list) { result.add(sequenceSearchResult.getSearchResult()); } return result; } + @Override @Transactional(readOnly = true) @RolesAllowed(RoleWithHierarchy.SPACE_OBSERVER) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceLogger.java index 8c810eeab6fe2ec71d004146ad95e763d0f8db29..d8affd3285e803cd6ef80e7831a4f79b781b0709 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationServiceLogger.java @@ -46,7 +46,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleFetchOption; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.experiment.IExperimentId; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.IMetaprojectId; @@ -296,12 +296,11 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements } @Override - public List<SequenceSearchResult> searchForDataSetsWithSequences(String sessionToken, - String preferredSequenceDatabaseOrNull, String sequenceSnippet, - Map<String, String> optionalParametersOrNull) + public List<SearchDomainSearchResult> searchOnSearchDomain(String sessionToken, String preferredSearchDomainOrNull, + String searchString, Map<String, String> optionalParametersOrNull) { - logAccess(sessionToken, "search-for-data-sets-with-sequences", "PREFERRED_DATABASE(%s) SEQUENCE_SNIPPET(%s)", - preferredSequenceDatabaseOrNull, sequenceSnippet); + logAccess(sessionToken, "search-on-search-domain", "PREFERRED_SEARCH_DOMAIN(%s) SEARCH_STRING(%s)", + preferredSearchDomainOrNull, searchString); return null; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SequenceSearchResultValidator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SearchDomainSearchResultValidator.java similarity index 72% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SequenceSearchResultValidator.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SearchDomainSearchResultValidator.java index 694c157557f014f2dcfc7fa08ab832d7a13c3a50..0b70d7dc4221391a4f1c0b4c1bd78ed7dde5296e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SequenceSearchResultValidator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/authorization/validator/SearchDomainSearchResultValidator.java @@ -16,20 +16,20 @@ package ch.systemsx.cisd.openbis.generic.server.authorization.validator; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SequenceSearchResultWithFullDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchDomainSearchResultWithFullDataSet; import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE; /** - * Validator of @SequenceSearchResult. + * Validator of @SearchdoquenceSearchResult. * * @author Franz-Josef Elmer */ -public class SequenceSearchResultValidator extends AbstractValidator<SequenceSearchResultWithFullDataSet> +public class SearchDomainSearchResultValidator extends AbstractValidator<SearchDomainSearchResultWithFullDataSet> { private final ExternalDataValidator validator = new ExternalDataValidator(); @Override - public boolean doValidation(PersonPE person, SequenceSearchResultWithFullDataSet value) + public boolean doValidation(PersonPE person, SearchDomainSearchResultWithFullDataSet value) { return validator.isValid(person, value.getDataSet()); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java index c6611cc505c20e3d11d60c4e73adc7dc17395bb0..effdb604904a17348661ec0bce830dc28305c0b2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java @@ -61,7 +61,9 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.event.DeleteDataSetEve import ch.systemsx.cisd.openbis.generic.server.dataaccess.util.KeyExtractorFactory; import ch.systemsx.cisd.openbis.generic.shared.Constants; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFileSearchResultLocation; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.ISearchDomainResultLocation; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; import ch.systemsx.cisd.openbis.generic.shared.basic.TableModelAppender; import ch.systemsx.cisd.openbis.generic.shared.basic.TableModelAppender.TableModelWithDifferentColumnCountException; @@ -75,7 +77,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetBatchUpdateDetai import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStoreServiceKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Metaproject; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SequenceSearchResultWithFullDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchDomainSearchResultWithFullDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetBatchUpdatesDTO; @@ -276,26 +278,31 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements } @Override - public List<SequenceSearchResultWithFullDataSet> searchForDataSetsWithSequences(String preferredSequenceDatabaseOrNull, + public List<SearchDomainSearchResultWithFullDataSet> searchForDataSetsWithSequences(String preferredSequenceDatabaseOrNull, String sequenceSnippet, Map<String, String> optionalParametersOrNull) { - List<SequenceSearchResult> result = askAllDataStoreServers(preferredSequenceDatabaseOrNull, + List<SearchDomainSearchResult> result = askAllDataStoreServers(preferredSequenceDatabaseOrNull, sequenceSnippet, optionalParametersOrNull); TableMap<String, AbstractExternalData> fullDataSetsByCode = listFullDataSets(result); return filterSearchResultAndInjectFullDataSets(result, fullDataSetsByCode); } - private List<SequenceSearchResultWithFullDataSet> filterSearchResultAndInjectFullDataSets(List<SequenceSearchResult> result, + private List<SearchDomainSearchResultWithFullDataSet> filterSearchResultAndInjectFullDataSets(List<SearchDomainSearchResult> result, TableMap<String, AbstractExternalData> fullDataSetsByCode) { - List<SequenceSearchResultWithFullDataSet> filteredResult = new ArrayList<SequenceSearchResultWithFullDataSet>(); - for (SequenceSearchResult sequenceSearchResult : result) + List<SearchDomainSearchResultWithFullDataSet> filteredResult = new ArrayList<SearchDomainSearchResultWithFullDataSet>(); + for (SearchDomainSearchResult sequenceSearchResult : result) { - String dataSetCode = sequenceSearchResult.getDataSetCode(); + ISearchDomainResultLocation resultLocation = sequenceSearchResult.getResultLocation(); + if (resultLocation instanceof DataSetFileSearchResultLocation == false) + { + continue; + } + String dataSetCode = ((DataSetFileSearchResultLocation) resultLocation).getDataSetCode(); AbstractExternalData fullDataSet = fullDataSetsByCode.tryGet(dataSetCode); if (fullDataSet != null) { - SequenceSearchResultWithFullDataSet resultWithFullDataSet = new SequenceSearchResultWithFullDataSet(); + SearchDomainSearchResultWithFullDataSet resultWithFullDataSet = new SearchDomainSearchResultWithFullDataSet(); resultWithFullDataSet.setDataSet(fullDataSet); resultWithFullDataSet.setSearchResult(sequenceSearchResult); filteredResult.add(resultWithFullDataSet); @@ -304,7 +311,7 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements return filteredResult; } - private TableMap<String, AbstractExternalData> listFullDataSets(List<SequenceSearchResult> result) + private TableMap<String, AbstractExternalData> listFullDataSets(List<SearchDomainSearchResult> result) { IKeyExtractor<String, AbstractExternalData> codeKeyExtractor = KeyExtractorFactory.<AbstractExternalData> createCodeKeyExtractor(); if (result.isEmpty()) @@ -312,9 +319,14 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements return new TableMap<String, AbstractExternalData>(codeKeyExtractor); } Set<String> codes = new LinkedHashSet<String>(); - for (SequenceSearchResult sequenceSearchResult : result) + for (SearchDomainSearchResult sequenceSearchResult : result) { - codes.add(sequenceSearchResult.getDataSetCode()); + ISearchDomainResultLocation resultLocation = sequenceSearchResult.getResultLocation(); + if (resultLocation instanceof DataSetFileSearchResultLocation == false) + { + continue; + } + codes.add(((DataSetFileSearchResultLocation) resultLocation).getDataSetCode()); } List<DataPE> fullDataSetPEs = getDataDAO().tryToFindFullDataSetsByCodes(codes, false, false); List<AbstractExternalData> fullDataSets = DataSetTranslator.translate(fullDataSetPEs, "?", "?", @@ -322,10 +334,10 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements return new TableMap<String, AbstractExternalData>(fullDataSets, codeKeyExtractor); } - private List<SequenceSearchResult> askAllDataStoreServers(String preferredSequenceDatabaseOrNull, + private List<SearchDomainSearchResult> askAllDataStoreServers(String preferredSequenceDatabaseOrNull, String sequenceSnippet, Map<String, String> optionalParametersOrNull) { - List<SequenceSearchResult> result = new ArrayList<SequenceSearchResult>(); + List<SearchDomainSearchResult> result = new ArrayList<SearchDomainSearchResult>(); List<DataStorePE> stores = getDataStoreDAO().listDataStores(); for (DataStorePE dataStore : stores) { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java index 714ba7e419d025600d0b29abdf3003dfecb40451..36d6cc6112335fe9c628b115e89881e36469bc83 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/IDataSetTable.java @@ -21,7 +21,7 @@ import java.util.Map; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LinkModel; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SequenceSearchResultWithFullDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchDomainSearchResultWithFullDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetBatchUpdatesDTO; @@ -39,7 +39,7 @@ public interface IDataSetTable /** * Searchs for data sets with sequences. */ - List<SequenceSearchResultWithFullDataSet> searchForDataSetsWithSequences(String preferredSequenceDatabaseOrNull, + List<SearchDomainSearchResultWithFullDataSet> searchForDataSetsWithSequences(String preferredSequenceDatabaseOrNull, String sequenceSnippet, Map<String, String> optionalParametersOrNull); /** diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java index 3f371a0afbaef74a0c91fab0c9540c6f0305141d..1c50d89ca71267866fb0097441a2a46a08e61b3b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ICommonServer.java @@ -104,7 +104,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleUpdateResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Script; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ScriptUpdateResult; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SequenceSearchResultWithFullDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchDomainSearchResultWithFullDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary; @@ -659,12 +659,11 @@ public interface ICommonServer extends IServer DetailedSearchCriteria criteria); /** - * Searches for data sets which have nucleotid or aminoacid sequences in there files. + * Searches on a search domain. */ @Transactional(readOnly = true) - public List<SequenceSearchResultWithFullDataSet> searchForDataSetsWithSequences(String sessionToken, - String preferredSequenceDatabaseOrNull, String sequenceSnippet, - Map<String, String> optionalParametersOrNull); + public List<SearchDomainSearchResultWithFullDataSet> searchOnSearchDomain(String sessionToken, + String preferredSearchDomainOrNull, String searchString, Map<String, String> optionalParametersOrNull); /** * Searches for data sets that fulfill the specified search criteria. diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java index 566fa5ae5ce92c7f76ee3ac923aecb4dfd4d5f14..5ec24e9c623e6abdd571d846f0953d171a9c211b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IDataStoreService.java @@ -22,7 +22,7 @@ import java.util.Map; import ch.systemsx.cisd.common.exceptions.InvalidAuthenticationException; import ch.systemsx.cisd.openbis.common.conversation.annotation.Conversational; import ch.systemsx.cisd.openbis.common.conversation.annotation.Progress; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.CustomImportFile; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation; @@ -175,7 +175,7 @@ public interface IDataStoreService * @since 10 */ @Conversational(progress = Progress.AUTOMATIC) - public List<SequenceSearchResult> searchForDataSetsWithSequences(String sessionToken, + public List<SearchDomainSearchResult> searchForDataSetsWithSequences(String sessionToken, String preferredSequenceDatabaseOrNull, String sequenceSnippet, Map<String, String> optionalParametersOrNull); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SequenceSearchResultWithFullDataSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SearchDomainSearchResultWithFullDataSet.java similarity index 76% rename from openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SequenceSearchResultWithFullDataSet.java rename to openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SearchDomainSearchResultWithFullDataSet.java index a796500f26e34e0653098fa1e5f96d461fe471ae..7d504b3c4db3b059ac3cabe3457eb87db62d6c14 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SequenceSearchResultWithFullDataSet.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/SearchDomainSearchResultWithFullDataSet.java @@ -18,20 +18,20 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; import java.io.Serializable; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; /** - * Result of a sequence search. + * Result of a search in a search domain. * * @author Franz-Josef Elmer */ -public class SequenceSearchResultWithFullDataSet implements Serializable +public class SearchDomainSearchResultWithFullDataSet implements Serializable { private static final long serialVersionUID = ServiceVersionHolder.VERSION; private AbstractExternalData dataSet; - private SequenceSearchResult searchResult; + private SearchDomainSearchResult searchResult; public AbstractExternalData getDataSet() { @@ -43,12 +43,12 @@ public class SequenceSearchResultWithFullDataSet implements Serializable this.dataSet = dataSet; } - public SequenceSearchResult getSearchResult() + public SearchDomainSearchResult getSearchResult() { return searchResult; } - public void setSearchResult(SequenceSearchResult searchResult) + public void setSearchResult(SearchDomainSearchResult searchResult) { this.searchResult = searchResult; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js index 6f88786baf584ef75507173c6210f2b14946ade1..158e9b2eea8a9a6ea99132e152fd3025b9bf0f8f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js +++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/js/openbis.js @@ -861,16 +861,16 @@ openbis.prototype.searchForDataSetsOnBehalfOfUser = function(searchCriteria, use } /** - * @see IGeneralInformationService.searchForDataSetsWithSequences(String, String, String, Map<String, String>) + * @see IGeneralInformationService.searchOnSearchDomain(String, String, String, Map<String, String>) * @method */ -openbis.prototype.searchForDataSetsWithSequences = function(preferredSequenceDatabaseOrNull, sequenceSnippet, optionalParametersOrNull, action) { +openbis.prototype.searchOnSearchDomain = function(preferredSearchDomainOrNull, searchString, optionalParametersOrNull, action) { this._internal.ajaxRequest({ url: this._internal.generalInfoServiceUrl, - data: { "method" : "searchForDataSetsWithSequences", + data: { "method" : "searchOnSearchDomain", "params" : [ this.getSession(), - preferredSequenceDatabaseOrNull, - sequenceSnippet, optionalParametersOrNull ] }, + preferredSearchDomainOrNull, + searchString, optionalParametersOrNull ] }, success: action }); } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java index 849953c59b21e12ac5a17bd1fff45c89929d5f79..b13e6887d3289ed78b411793e353b246aba37927 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java @@ -47,14 +47,15 @@ import ch.systemsx.cisd.openbis.generic.server.business.ManagerTestTool; import ch.systemsx.cisd.openbis.generic.server.dataaccess.event.DeleteDataSetEventBuilder; import ch.systemsx.cisd.openbis.generic.shared.CommonTestUtils; import ch.systemsx.cisd.openbis.generic.shared.IDataStoreService; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetFileSearchResultLocation; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.basic.BasicConstant; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetArchivingStatus; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SequenceSearchResultWithFullDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SearchDomainSearchResultWithFullDataSet; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; @@ -186,18 +187,21 @@ public final class DataSetTableTest extends AbstractBOTest } }); - List<SequenceSearchResultWithFullDataSet> results = + List<SearchDomainSearchResultWithFullDataSet> results = createDataSetTable().searchForDataSetsWithSequences(SEQUENCE_DATABASE, SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS); - assertEquals("Database: test-db, Data set: ds1, path: ds1/path, identifier: [id-ds1], position: 42", + assertEquals("Search Domain: test-db, Result location: [Data set: ds1, path: ds1/path, " + + "identifier: [id-ds1], position: 42]", results.get(0).getSearchResult().toString()); assertEquals(ds1.getCode(), results.get(0).getDataSet().getCode()); assertEquals("/G1/P1/exp1", results.get(0).getDataSet().getExperiment().getIdentifier()); - assertEquals("Database: test-db, Data set: ds3, path: ds3/path, identifier: [id-ds3], position: 42", + assertEquals("Search Domain: test-db, Result location: [Data set: ds3, path: ds3/path, " + + "identifier: [id-ds3], position: 42]", results.get(1).getSearchResult().toString()); assertEquals(ds3.getCode(), results.get(1).getDataSet().getCode()); assertEquals("/G1/P1/exp1", results.get(1).getDataSet().getExperiment().getIdentifier()); - assertEquals("Database: test-db, Data set: ds3, path: ds3/path, identifier: [id-ds3], position: 42", + assertEquals("Search Domain: test-db, Result location: [Data set: ds3, path: ds3/path, " + + "identifier: [id-ds3], position: 42]", results.get(2).getSearchResult().toString()); assertEquals(ds3.getCode(), results.get(2).getDataSet().getCode()); assertEquals("/G1/P1/exp1", results.get(2).getDataSet().getExperiment().getIdentifier()); @@ -227,15 +231,17 @@ public final class DataSetTableTest extends AbstractBOTest one(service).searchForDataSetsWithSequences(dataStore.getSessionToken(), SEQUENCE_DATABASE, SEQUENCE_SNIPPET, OPTIONAL_PARAMETERS); - List<SequenceSearchResult> results = new ArrayList<SequenceSearchResult>(); + List<SearchDomainSearchResult> results = new ArrayList<SearchDomainSearchResult>(); for (String foundDataSet : foundDataSets) { - SequenceSearchResult result = new SequenceSearchResult(); - result.setSequenceDatabaseName("test-db"); - result.setDataSetCode(foundDataSet); - result.setPathInDataSet(foundDataSet + "/path"); - result.setPositionInSequence(42); - result.setSequenceIdentifier("id-" + foundDataSet); + SearchDomainSearchResult result = new SearchDomainSearchResult(); + result.setSearchDomain("test-db"); + DataSetFileSearchResultLocation resultLocation = new DataSetFileSearchResultLocation(); + resultLocation.setDataSetCode(foundDataSet); + resultLocation.setPathInDataSet(foundDataSet + "/path"); + resultLocation.setPositionInSequence(42); + resultLocation.setSequenceIdentifier("id-" + foundDataSet); + result.setResultLocation(resultLocation); results.add(result); } will(returnValue(results)); diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationService.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationService.java index 75153ba64d53ec09b8e87fd9d37b72524ff028d9..6ba9353657ccee4e693710707ee19c1205b9e542 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationService.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/IGeneralInformationService.java @@ -44,7 +44,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleFetchOption; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SequenceSearchResult; +import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchResult; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.experiment.IExperimentId; import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.id.metaproject.IMetaprojectId; @@ -398,18 +398,17 @@ public interface IGeneralInformationService extends IRpcService EnumSet<DataSetFetchOption> fetchOptions); /** - * Searches for data sets which have nucleotid or amoniacid sequences in there files. - * If no preferred sequence database is specified the first available one will be used. If the - * preferred sequence database doesn't exist or isn't available also the first available database will be used. + * Searches on a search domain. If no preferred search domain is specified the first available one will be used. + * If the preferred sequence search domain doesn't exist or isn't available also the first available one will be used. * - * @param preferredSequenceDatabaseOrNull The key of the preferred sequence database or <code>null</code>. - * @param sequenceSnippet A snippet of a sequence to search for. + * @param preferredSearchDomainOrNull The key of the preferred search domain or <code>null</code>. + * @param searchString The search string. * @param optionalParametersOrNull Optional parameters. Can be <code>null</code>. - * The semantics depends on the type of the used sequence database. + * The semantics depends on the type of search domain. * @since 1.29 */ - public List<SequenceSearchResult> searchForDataSetsWithSequences(String sessionToken, - String preferredSequenceDatabaseOrNull, String sequenceSnippet, + public List<SearchDomainSearchResult> searchOnSearchDomain(String sessionToken, + String preferredSearchDomainOrNull, String searchString, Map<String, String> optionalParametersOrNull); /** diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SequenceSearchResult.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetFileSearchResultLocation.java similarity index 72% rename from openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SequenceSearchResult.java rename to openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetFileSearchResultLocation.java index bec456d9040047cdcb482fa411cafd3f7b912fb0..f8af6ad5beb101b66cacfc6d0676376a0fc739ad 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SequenceSearchResult.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSetFileSearchResultLocation.java @@ -16,23 +16,18 @@ package ch.systemsx.cisd.openbis.generic.shared.api.v1.dto; -import java.io.Serializable; - import ch.systemsx.cisd.base.annotation.JsonObject; /** - * Result of a sequence search. Returns the code of the data set where the sequence has been found, - * the path of the file inside the data set which has the found sequence, and the sequence identifier. + * Result location for a search in a sequence in a file in data set. * * @author Franz-Josef Elmer */ -@JsonObject("SequenceSearchResult") -public class SequenceSearchResult implements Serializable +@JsonObject("DataSetFileSearchResultLocation") +public class DataSetFileSearchResultLocation implements ISearchDomainResultLocation { private static final long serialVersionUID = 1L; - private String sequenceDatabaseName; - private String dataSetCode; private String pathInDataSet; @@ -41,16 +36,6 @@ public class SequenceSearchResult implements Serializable private int positionInSequence; - public String getSequenceDatabaseName() - { - return sequenceDatabaseName; - } - - public void setSequenceDatabaseName(String sequenceDatabaseKey) - { - this.sequenceDatabaseName = sequenceDatabaseKey; - } - public String getDataSetCode() { return dataSetCode; @@ -94,8 +79,9 @@ public class SequenceSearchResult implements Serializable @Override public String toString() { - return "Database: " + sequenceDatabaseName + ", Data set: " + dataSetCode + ", path: " + pathInDataSet + return "Data set: " + dataSetCode + ", path: " + pathInDataSet + ", identifier: [" + sequenceIdentifier + "], position: " + positionInSequence; } + } diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/ISearchDomainResultLocation.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/ISearchDomainResultLocation.java new file mode 100644 index 0000000000000000000000000000000000000000..276bacfce0d47af0fe570ca58ec91db30857f0af --- /dev/null +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/ISearchDomainResultLocation.java @@ -0,0 +1,29 @@ +/* + * Copyright 2014 ETH Zuerich, SIS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.shared.api.v1.dto; + +import java.io.Serializable; + +/** + * Marker interface specifying the location of search result on a search domain. + * + * @author Franz-Josef Elmer + */ +public interface ISearchDomainResultLocation extends Serializable +{ + +} diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchDomainSearchResult.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchDomainSearchResult.java new file mode 100644 index 0000000000000000000000000000000000000000..868ee97cec5f89df13464bdff526c6a34d4bc715 --- /dev/null +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SearchDomainSearchResult.java @@ -0,0 +1,63 @@ +/* + * Copyright 2014 ETH Zuerich, SIS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.shared.api.v1.dto; + +import java.io.Serializable; + +import ch.systemsx.cisd.base.annotation.JsonObject; + +/** + * Result of a search on a search domain. + * + * @author Franz-Josef Elmer + */ +@JsonObject("SearchDomainSearchResult") +public class SearchDomainSearchResult implements Serializable +{ + private static final long serialVersionUID = 1L; + + private String searchDomain; + + private ISearchDomainResultLocation resultLocation; + + public String getSearchDomain() + { + return searchDomain; + } + + public void setSearchDomain(String searchDomain) + { + this.searchDomain = searchDomain; + } + + public ISearchDomainResultLocation getResultLocation() + { + return resultLocation; + } + + public void setResultLocation(ISearchDomainResultLocation resultLocation) + { + this.resultLocation = resultLocation; + } + + @Override + public String toString() + { + return "Search Domain: " + getSearchDomain() + ", Result location: [" + resultLocation + "]"; + } + +}