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 31a4639ae3bfc73a79adb1715d17c9226651f318..7a6d2c68f0eececd3e1b3c6087a8bbe8d624f1dd 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 023d79cff531afb09000e98d9fd5666126d3493c..f9c624b3c2aaca43035550d62ab929e7b1ed1f75 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 fe36349b850eceb51b165f95caeb6213dee24c56..bc48970d3a77b70db28a394f19eff69c8a2bd4be 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 6bd6ad10ff0d436a208531155581f8df3992fc3e..deb7411bf1d4eb27df8b22703389031bd27bad16 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 5e363a85d42dd856381fa15b015428df6131eed6..396f3782a28d5cc607d3f6495931ccc9d78879ec 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 21ca6e1041a122ea5b7e07193d1884193f443873..54601aca8dafe6562dcbe314cc698eb16e08a60c 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 167554f8f338297c3d01fadd88bbe41840b38af4..4ce2295f4aac6a2705004c5b95c30b0a306106e8 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) {