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 d62390a8fe3240bd26fce42f44bb0c8d5f684e19..6a4b27348a50e01abd4e602ec932004d61324fd6 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 @@ -176,6 +176,12 @@ public class DataStoreService extends AbstractServiceWithLogger<IDataStoreServic { operationLog.info("Comand executor started."); } + getShareIdManager().isKnown(""); // initializes ShareIdManager: reading all share ids from the data base + if (operationLog.isInfoEnabled()) + { + operationLog.info("Initialization finished."); + } + } private void migrateStore() diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java index 8966c7ca4db9fb566466c38659d5b01fa2153b4d..7222d8f2c0b266c526b93afc105b377bfd324d1d 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/EncapsulatedOpenBISService.java @@ -53,6 +53,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId; import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData; import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; @@ -386,6 +387,19 @@ public final class EncapsulatedOpenBISService implements IEncapsulatedOpenBISSer service.checkSpaceAccess(sToken, spaceId); } + public List<DataSetShareId> listDataSetShareIds() throws UserFailureException + { + List<DataSetShareId> shareIds = service.listShareIds(session.getToken(), session.getDataStoreCode()); + for (DataSetShareId dataSetShareId : shareIds) + { + if (dataSetShareId.getShareId() == null) + { + dataSetShareId.setShareId(ch.systemsx.cisd.openbis.dss.generic.shared.Constants.DEFAULT_SHARE_ID); + } + } + return shareIds; + } + public List<SimpleDataSetInformationDTO> listDataSets() throws UserFailureException { List<SimpleDataSetInformationDTO> dataSets = diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java index 2e29f3e3bd1e55c5436b63578b4c62eaf206e55d..57e0d26ded325b77673f1c9f352108c6783a83fb 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ShareIdManager.java @@ -34,7 +34,7 @@ import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.openbis.dss.generic.shared.Constants; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.IShareIdManager; -import ch.systemsx.cisd.openbis.generic.shared.dto.SimpleDataSetInformationDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId; /** * Immplementation of {@link IShareIdManager} based on {@link CountDownLatch}. @@ -254,12 +254,12 @@ public class ShareIdManager implements IShareIdManager { if (dataSetCodeToShareIdMap == null) { - List<SimpleDataSetInformationDTO> dataSets = service.listDataSets(); + List<DataSetShareId> dataSets = service.listDataSetShareIds(); dataSetCodeToShareIdMap = new HashMap<String, GuardedShareID>(); - for (SimpleDataSetInformationDTO dataSet : dataSets) + for (DataSetShareId dataSet : dataSets) { String dataSetCode = dataSet.getDataSetCode(); - String shareId = dataSet.getDataSetShareId(); + String shareId = dataSet.getShareId(); addShareId(dataSetCodeToShareIdMap, dataSetCode, shareId); } operationLog.info("Share id manager initialized with " + dataSets.size() diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java index eaba07eab1da87c01c06752ad7c9a132fd3852cd..a4d614fb8a83ae8f2b25e700b5d6eed1ea914a36 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/IEncapsulatedOpenBISService.java @@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId; import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData; import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; @@ -243,10 +244,14 @@ public interface IEncapsulatedOpenBISService public List<Sample> listSamplesByCriteria(final ListSamplesByPropertyCriteria criteria) throws UserFailureException; + /** See {@link IETLLIMSService#listShareIds(String, String)} */ + @ManagedAuthentication + public List<DataSetShareId> listDataSetShareIds() throws UserFailureException; + /** See {@link IETLLIMSService#listDataSets(String, String)} */ @ManagedAuthentication public List<SimpleDataSetInformationDTO> listDataSets() throws UserFailureException; - + /** * Creates and returns a unique code for a new data set. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java index b4e820c85082ce07ad8e63eb634d753a0d45b49a..9594114ea895eb2284aeb68ef24748fb80df7923 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java @@ -78,6 +78,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SourceType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePropertyTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE; @@ -729,6 +730,21 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET return SampleTranslator.translate(sampleTable.getSamples(), ""); } + public List<DataSetShareId> listShareIds(String sessionToken, String dataStore) + throws UserFailureException + { + List<ExternalDataPE> dataSets = loadDataSets(sessionToken, dataStore); + ArrayList<DataSetShareId> shareIds = new ArrayList<DataSetShareId>(); + for (ExternalDataPE dataSet : dataSets) + { + DataSetShareId dataSetShareId = new DataSetShareId(); + dataSetShareId.setDataSetCode(dataSet.getCode()); + dataSetShareId.setShareId(dataSet.getShareId()); + shareIds.add(dataSetShareId); + } + return shareIds; + } + public List<SimpleDataSetInformationDTO> listDataSets(String sessionToken, String dataStoreCode) throws UserFailureException { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java index 3966cde76fe4853e9cb4ab4655667ee42fd5b4fa..066d329df93d34a716b76a70a2dfcff8a62dba7f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLServiceLogger.java @@ -43,6 +43,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo; import ch.systemsx.cisd.openbis.generic.shared.dto.DatastoreServiceDescriptions; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityCollectionForCreationOrUpdate; @@ -272,6 +273,13 @@ public class ETLServiceLogger extends AbstractServerLogger implements IETLServic return null; } + public List<DataSetShareId> listShareIds(String sessionToken, String dataStore) + throws UserFailureException + { + logAccess(sessionToken, "listShareIds", "DATA_STORE(%s)", dataStore); + return null; + } + public List<SimpleDataSetInformationDTO> listDataSets(String sessionToken, String dataStore) throws UserFailureException { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java index 70522d379a2b347006c0ca28fef5c972e62ba26c..8f546360b35748d9bdb6a64c59477bb264388411 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java @@ -62,6 +62,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityCollectionForCreationOrUpdate; import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; @@ -406,6 +407,14 @@ public interface IETLLIMSService extends IServer, ISessionProvider @AuthorizationGuard(guardClass = ListSamplesByPropertyPredicate.class) final ListSamplesByPropertyCriteria criteria) throws UserFailureException; + /** + * Lists share ids of all data sets belonging to chosen data store. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) + public List<DataSetShareId> listShareIds(final String sessionToken, + String dataStore) throws UserFailureException; + /** * Lists data sets belonging to chosen data store. */ @@ -413,7 +422,7 @@ public interface IETLLIMSService extends IServer, ISessionProvider @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) public List<SimpleDataSetInformationDTO> listDataSets(final String sessionToken, String dataStore) throws UserFailureException; - + /** * List data sets deleted after specified date. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetShareId.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetShareId.java new file mode 100644 index 0000000000000000000000000000000000000000..f6b6a662f9d40b3797cfe9606af2a4ef25ecf889 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/DataSetShareId.java @@ -0,0 +1,56 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * 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.dto; + +import java.io.Serializable; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; + +/** + * Share id of a data set. + * + * @author Franz-Josef Elmer + */ +public class DataSetShareId implements Serializable +{ + private static final long serialVersionUID = ServiceVersionHolder.VERSION; + + private String dataSetCode; + + private String shareId; + + public String getDataSetCode() + { + return dataSetCode; + } + + public void setDataSetCode(String dataSetCode) + { + this.dataSetCode = dataSetCode; + } + + public String getShareId() + { + return shareId; + } + + public void setShareId(String dataSetShareId) + { + this.shareId = dataSetShareId; + } + +} diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected index 70522d379a2b347006c0ca28fef5c972e62ba26c..8f546360b35748d9bdb6a64c59477bb264388411 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/IETLLIMSService.java.expected @@ -62,6 +62,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.VocabularyTerm; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetShareId; import ch.systemsx.cisd.openbis.generic.shared.dto.DataStoreServerInfo; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityCollectionForCreationOrUpdate; import ch.systemsx.cisd.openbis.generic.shared.dto.ListSamplesByPropertyCriteria; @@ -406,6 +407,14 @@ public interface IETLLIMSService extends IServer, ISessionProvider @AuthorizationGuard(guardClass = ListSamplesByPropertyPredicate.class) final ListSamplesByPropertyCriteria criteria) throws UserFailureException; + /** + * Lists share ids of all data sets belonging to chosen data store. + */ + @Transactional(readOnly = true) + @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) + public List<DataSetShareId> listShareIds(final String sessionToken, + String dataStore) throws UserFailureException; + /** * Lists data sets belonging to chosen data store. */ @@ -413,7 +422,7 @@ public interface IETLLIMSService extends IServer, ISessionProvider @RolesAllowed(RoleWithHierarchy.SPACE_ETL_SERVER) public List<SimpleDataSetInformationDTO> listDataSets(final String sessionToken, String dataStore) throws UserFailureException; - + /** * List data sets deleted after specified date. */