diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java index eeb845ae0826f4c0896febee33a24c4397d1e5e2..1dc04eff195b9120ebf9ec2f2f1ee30df36de9bb 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatabaseBasedDataSetPathInfoProvider.java @@ -137,16 +137,17 @@ public class DatabaseBasedDataSetPathInfoProvider implements IDataSetPathInfoPro } @Override - public List<DataSetPathInfo> listPathInfosByRegularExpression( + public Map<String, List<DataSetPathInfo>> listPathInfosByRegularExpression( String substring) { List<ExtendedDataSetFileRecord> fileRecords = getDao().listFilesByRelativePathLikeExpression("%" + substring + "%"); - List<DataSetPathInfo> pathInfos = new ArrayList<DataSetPathInfo>(fileRecords.size()); + + Map<String, List<DataSetPathInfo>> allPathInfos = new HashMap<String, List<DataSetPathInfo>>(); for (ExtendedDataSetFileRecord fileRecord : fileRecords) { + // Build new info DataSetPathInfo dataSetPathInfo = new DataSetPathInfo(); dataSetPathInfo.setChecksumCRC32(fileRecord.checksum_crc32); - dataSetPathInfo.setDataSetCode(fileRecord.code); dataSetPathInfo.setDirectory(fileRecord.is_directory); dataSetPathInfo.setFileName(fileRecord.file_name); dataSetPathInfo.setId(fileRecord.id); @@ -159,9 +160,17 @@ public class DatabaseBasedDataSetPathInfoProvider implements IDataSetPathInfoPro dataSetPathInfoParent.setId(fileRecord.parent_id); dataSetPathInfo.setParent(dataSetPathInfoParent); } - pathInfos.add(dataSetPathInfo); + + // Add to dataSetCode list + List<DataSetPathInfo> dataSetPathInfos = allPathInfos.get(fileRecord.code); + if (dataSetPathInfos == null) + { + dataSetPathInfos = new ArrayList<DataSetPathInfo>(); + allPathInfos.put(fileRecord.code, dataSetPathInfos); + } + dataSetPathInfos.add(dataSetPathInfo); } - return pathInfos; + return allPathInfos; } @Override diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/FileSearchDomain.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/FileSearchDomain.java index 3745f19a9a44a6b1cc8ac066da3367e746aee8f6..d6918b99434997d6f434853e72b13e9e4ed41005 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/FileSearchDomain.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v2/sequencedatabases/FileSearchDomain.java @@ -33,30 +33,33 @@ public class FileSearchDomain extends AbstractSearchDomainService public List<SearchDomainSearchResult> search(String searchString, Map<String, String> optionalParametersOrNull) { IDataSetPathInfoProvider dataSetPathInfoProvider = ServiceProvider.getDataSetPathInfoProvider(); - List<DataSetPathInfo> dataSetPathInfos = dataSetPathInfoProvider.listPathInfosByRegularExpression(searchString); + Map<String, List<DataSetPathInfo>> allPathInfos = dataSetPathInfoProvider.listPathInfosByRegularExpression(searchString); List<SearchDomainSearchResult> results = new ArrayList<SearchDomainSearchResult>(); - for (DataSetPathInfo dataSetPathInfo : dataSetPathInfos) + for (String datasetCode : allPathInfos.keySet()) { + List<DataSetPathInfo> dataSetPathInfos = allPathInfos.get(datasetCode); - SearchDomainSearchResult searchDomainSearchResult = new SearchDomainSearchResult(); + for (DataSetPathInfo dataSetPathInfo : dataSetPathInfos) + { + SearchDomainSearchResult searchDomainSearchResult = new SearchDomainSearchResult(); - SearchDomain searchDomain = new SearchDomain(); - searchDomain.setName("File"); - searchDomain.setLabel("File"); + SearchDomain searchDomain = new SearchDomain(); + searchDomain.setName("File"); + searchDomain.setLabel("File"); - searchDomainSearchResult.setSearchDomain(searchDomain); + searchDomainSearchResult.setSearchDomain(searchDomain); - DataSetFileSearchResultLocation dfsrl = new DataSetFileSearchResultLocation(); - dfsrl.setPermId(dataSetPathInfo.getDataSetCode()); - dfsrl.setCode(dataSetPathInfo.getDataSetCode()); - dfsrl.setIdentifier(dataSetPathInfo.getDataSetCode()); - dfsrl.setPathInDataSet(dataSetPathInfo.getRelativePath()); - dfsrl.setEntityKind(EntityKind.DATA_SET); + DataSetFileSearchResultLocation dfsrl = new DataSetFileSearchResultLocation(); + dfsrl.setPermId(datasetCode); + dfsrl.setCode(datasetCode); + dfsrl.setPathInDataSet(dataSetPathInfo.getRelativePath()); + dfsrl.setEntityKind(EntityKind.DATA_SET); - searchDomainSearchResult.setResultLocation(dfsrl); - results.add(searchDomainSearchResult); + searchDomainSearchResult.setResultLocation(dfsrl); + results.add(searchDomainSearchResult); + } } return results; diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IDataSetPathInfoProvider.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IDataSetPathInfoProvider.java index ed4ae0c63babf7bcf4e03671be1062961c8be1b1..318068b658d1dfcb61402d11e7301c0619fb0270 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IDataSetPathInfoProvider.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IDataSetPathInfoProvider.java @@ -31,7 +31,7 @@ public interface IDataSetPathInfoProvider public List<DataSetPathInfo> listPathInfosByRegularExpression(String dataSetCode, String regularExpression); - public List<DataSetPathInfo> listPathInfosByRegularExpression(String regularExpression); + public Map<String, List<DataSetPathInfo>> listPathInfosByRegularExpression(String regularExpression); public DataSetPathInfo tryGetFullDataSetRootPathInfo(String dataSetCode); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetPathInfo.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetPathInfo.java index 5cc02a18a0088f3fceb5ea5beb641b0723a74aa6..6f8bf177b7606fb21924bd84498fdd31b7880f9a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetPathInfo.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/dto/DataSetPathInfo.java @@ -27,8 +27,6 @@ public class DataSetPathInfo { private long id; - private String dataSetCode; - private String fileName; private String relativePath; @@ -137,14 +135,4 @@ public class DataSetPathInfo { children.add(child); } - - public String getDataSetCode() - { - return dataSetCode; - } - - public void setDataSetCode(String dataSetCode) - { - this.dataSetCode = dataSetCode; - } }