From b5297688cf4ee03590ee62fa9c5196eaa3787014 Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Tue, 14 Jul 2009 13:41:42 +0000 Subject: [PATCH] [LMS-970] implemented server side ('Export All Data Sets') SVN: 11749 --- .../web/client/ICommonClientService.java | 4 +- .../web/client/ICommonClientServiceAsync.java | 9 ++- .../ui/data/AbstractExternalDataGrid.java | 34 +++++++++--- .../ui/data/DataSetComputeMenu.java | 20 +------ .../DisplayedOrSelectedDatasetCriteria.java | 5 +- .../client/web/client/dto/ExternalData.java | 11 ++++ .../web/server/CommonClientService.java | 55 ++++++++++++++++--- 7 files changed, 94 insertions(+), 44 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java index 31a4639ae3b..7a6d2c68f0e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientService.java @@ -515,8 +515,8 @@ public interface ICommonClientService extends IClientService * * @return a message or an empty string. */ - public String uploadDataSets(List<String> dataSetCodes, DataSetUploadParameters uploadParameters) - throws UserFailureException; + public String uploadDataSets(DisplayedOrSelectedDatasetCriteria criteria, + DataSetUploadParameters uploadParameters) throws UserFailureException; /** * Information about the time and kind of the last modification, separately for each kind of diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java index 023d79cff53..f9c624b3c2a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/ICommonClientServiceAsync.java @@ -440,9 +440,12 @@ public interface ICommonClientServiceAsync extends IClientServiceAsync /** @see ICommonClientService#listDataSetTypes() */ public void listDataSetTypes(AsyncCallback<List<DataSetType>> callback); - /** @see ICommonClientService#uploadDataSets(List, DataSetUploadParameters) */ - public void uploadDataSets(List<String> dataSetCodes, DataSetUploadParameters uploadParameters, - AsyncCallback<String> callback); + /** + * @see ICommonClientService#uploadDataSets(DisplayedOrSelectedDatasetCriteria, + * DataSetUploadParameters) + */ + public void uploadDataSets(DisplayedOrSelectedDatasetCriteria criteria, + DataSetUploadParameters uploadParameters, AsyncCallback<String> callback); /** @see ICommonClientService#getLastModificationState() */ public void getLastModificationState(AsyncCallback<LastModificationState> asyncCallback); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java index fe36349b850..bc48970d3a7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/AbstractExternalDataGrid.java @@ -16,7 +16,6 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.data; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -53,6 +52,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget. import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.DataSetUtils; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedActionWithResult; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DataSetUploadParameters; +import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DisplayedOrSelectedDatasetCriteria; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IColumnDefinition; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; @@ -170,19 +170,23 @@ public abstract class AbstractExternalDataGrid parameters.setComment(commentField.getValue()); parameters.setUserID(userField.getValue()); parameters.setPassword(passwordField.getValue()); - viewContext.getCommonService().uploadDataSets(getDataSetCodes(data), parameters, + + // TODO 2009-07-14, Piotr Buczek: get uploadSelected value from a radioButton + final boolean uploadSelected = true; + final SelectedAndDisplayedItems selectedAndDisplayedItems = + getSelectedAndDisplayedItemsAction().execute(); + final DisplayedOrSelectedDatasetCriteria uploadCriteria = + createCriteria(selectedAndDisplayedItems, uploadSelected); + + viewContext.getCommonService().uploadDataSets(uploadCriteria, parameters, new UploadCallback(viewContext)); } - } - private List<String> getDataSetCodes(List<ExternalData> dataSets) - { - List<String> dataSetCodes = new ArrayList<String>(); - for (ExternalData externalData : dataSets) + private DisplayedOrSelectedDatasetCriteria createCriteria( + SelectedAndDisplayedItems selectedAndDisplayedItems, boolean uploadSelected) { - dataSetCodes.add(externalData.getCode()); + return selectedAndDisplayedItems.createCriteria(uploadSelected); } - return dataSetCodes; } public static final String SHOW_DETAILS_BUTTON_ID_SUFFIX = "_show-details-button"; @@ -278,6 +282,18 @@ public abstract class AbstractExternalDataGrid { return selectedItems; } + + public DisplayedOrSelectedDatasetCriteria createCriteria(boolean selected) + { + if (selected) + { + return DisplayedOrSelectedDatasetCriteria.createSelectedItems(getSelectedItems()); + } else + { + return DisplayedOrSelectedDatasetCriteria + .createDisplayedItems(getDisplayedItemsConfig()); + } + } } private final IDelegatedActionWithResult<SelectedAndDisplayedItems> getSelectedAndDisplayedItemsAction() diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetComputeMenu.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetComputeMenu.java index 6bd6ad10ff0..deb7411bf1d 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetComputeMenu.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/data/DataSetComputeMenu.java @@ -180,15 +180,7 @@ public class DataSetComputeMenu extends TextToolItem private static DisplayedOrSelectedDatasetCriteria createCriteria( SelectedAndDisplayedItems selectedAndDisplayedItems, boolean computeOnSelected) { - if (computeOnSelected) - { - return DisplayedOrSelectedDatasetCriteria - .createSelectedItems(extractCodes(selectedAndDisplayedItems.getSelectedItems())); - } else - { - return DisplayedOrSelectedDatasetCriteria - .createDisplayedItems(selectedAndDisplayedItems.getDisplayedItemsConfig()); - } + return selectedAndDisplayedItems.createCriteria(computeOnSelected); } public final class ProcessingDisplayCallback extends AbstractAsyncCallback<Void> @@ -234,16 +226,6 @@ public class DataSetComputeMenu extends TextToolItem } } - private static List<String> extractCodes(List<ExternalData> selectedItems) - { - List<String> codes = new ArrayList<String>(); - for (ExternalData dataset : selectedItems) - { - codes.add(dataset.getCode()); - } - return codes; - } - private class ComputationData { private final DataStoreServiceKind pluginTaskKind; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java index 5e363a85d42..396f3782a28 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/DisplayedOrSelectedDatasetCriteria.java @@ -40,9 +40,10 @@ public final class DisplayedOrSelectedDatasetCriteria implements IsSerializable } public static DisplayedOrSelectedDatasetCriteria createSelectedItems( - List<String> selectedDatasetCodes) + List<ExternalData> selectedDatasets) { - return new DisplayedOrSelectedDatasetCriteria(null, selectedDatasetCodes); + return new DisplayedOrSelectedDatasetCriteria(null, ExternalData + .extractCodes(selectedDatasets)); } private DisplayedOrSelectedDatasetCriteria( diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalData.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalData.java index 21ca6e1041a..54601aca8da 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalData.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/ExternalData.java @@ -16,6 +16,7 @@ package ch.systemsx.cisd.openbis.generic.client.web.client.dto; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -348,4 +349,14 @@ public class ExternalData extends CodeWithRegistration<ExternalData> implements { return SourceType.create(isDerived()).name(); } + + public static List<String> extractCodes(List<ExternalData> datasets) + { + List<String> codes = new ArrayList<String>(); + for (ExternalData dataset : datasets) + { + codes.add(dataset.getCode()); + } + return codes; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java index 167554f8f33..4ce2295f4aa 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java @@ -1321,7 +1321,23 @@ public final class CommonClientService extends AbstractClientService implements } } - public String uploadDataSets(List<String> dataSetCodes, DataSetUploadParameters uploadParameters) + public String uploadDataSets( + DisplayedOrSelectedDatasetCriteria displayedOrSelectedDatasetCriteria, + DataSetUploadParameters uploadParameters) + throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException + { + try + { + List<String> datasetCodes = extractDatasetCodes(displayedOrSelectedDatasetCriteria); + return uploadDataSets(datasetCodes, uploadParameters); + } catch (final UserFailureException e) + { + throw UserFailureExceptionTranslator.translate(e); + } + } + + private String uploadDataSets(List<String> dataSetCodes, + DataSetUploadParameters uploadParameters) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { try @@ -1751,9 +1767,15 @@ public final class CommonClientService extends AbstractClientService implements } } + private List<String> extractDatasetCodes( + DisplayedOrSelectedDatasetCriteria displayedOrSelectedDatasetCriteria) + { + return extractDatasetCodes(displayedOrSelectedDatasetCriteria, null); + } + private List<String> extractDatasetCodes( DisplayedOrSelectedDatasetCriteria displayedOrSelectedDatasetCriteria, - DatastoreServiceDescription serviceDescription) + DatastoreServiceDescription serviceDescriptionOrNull) { if (displayedOrSelectedDatasetCriteria.tryGetSelectedItems() != null) { @@ -1763,27 +1785,42 @@ public final class CommonClientService extends AbstractClientService implements TableExportCriteria<ExternalData> displayedItemsCriteria = displayedOrSelectedDatasetCriteria.tryGetDisplayedItems(); assert displayedItemsCriteria != null : "displayedItemsCriteria is null"; - final List<ExternalData> datasets = fetchCachedEntities(displayedItemsCriteria); - return filterDatasets(datasets, serviceDescription.getDatasetTypeCodes()); + List<ExternalData> datasets = fetchCachedEntities(displayedItemsCriteria); + if (serviceDescriptionOrNull != null) + { + datasets = filterDatasets(datasets, serviceDescriptionOrNull.getDatasetTypeCodes()); + } + return ExternalData.extractCodes(datasets); } } - // returns codes of those datasets which have type code belonging to the specified set - private static List<String> filterDatasets(List<ExternalData> datasets, + // returns datasets which have type code belonging to the specified set + private static List<ExternalData> filterDatasets(List<ExternalData> datasets, String[] datasetTypeCodes) { Set<String> datasetTypeCodesMap = new HashSet<String>(Arrays.asList(datasetTypeCodes)); - List<String> datasetCodes = new ArrayList<String>(); + List<ExternalData> result = new ArrayList<ExternalData>(); for (ExternalData dataset : datasets) { if (datasetTypeCodesMap.contains(dataset.getDataSetType().getCode())) { - datasetCodes.add(dataset.getCode()); + result.add(dataset); } } - return datasetCodes; + return result; } + // + // private static List<String> getDatasetCodes(List<ExternalData> datasets) + // { + // List<String> datasetCodes = new ArrayList<String>(); + // for (ExternalData externalData : datasets) + // { + // datasetCodes.add(externalData.getCode()); + // } + // return datasetCodes; + // } + public void processDatasets(DatastoreServiceDescription serviceDescription, DisplayedOrSelectedDatasetCriteria displayedOrSelectedDatasetCriteria) { -- GitLab