From 5d006397a51216e435d9ef3a3a9bec28caae65a6 Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Tue, 15 Jun 2010 19:28:53 +0000 Subject: [PATCH] LMS-1541 Reviewing panel improvements SVN: 16535 --- .../client/web/client/application/Dict.java | 2 + .../detailviewers/PlateMaterialReviewer.java | 39 ++++---- .../detailviewers/WellContentDialog.java | 63 +++++++++---- .../PlateMaterialReviewerColDefKind.java | 9 +- .../client/web/public/screening-dictionary.js | 2 +- .../logic/GenePlateLocationsLoader.java | 92 +++++++++++++------ .../server/logic/ScreeningUtils.java | 6 +- .../basic/dto/DatasetImagesReference.java | 4 +- .../shared/basic/dto/DatasetReference.java | 11 ++- 9 files changed, 151 insertions(+), 77 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java index a8404e35755..6bbcfbebb17 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/Dict.java @@ -38,6 +38,8 @@ public final class Dict extends ch.systemsx.cisd.openbis.generic.client.web.clie public static final String WELL = "WELL"; + public static final String WELL_IMAGES = "WELL_IMAGES"; + public static final String IMPORT_SCHEDULED_MESSAGE = "import_scheduled"; public static final String REGISTER = "register"; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java index b15e9ad67be..34ad14c59ae 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/PlateMaterialReviewer.java @@ -30,7 +30,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.Co import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListener; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityDetailsTabAction; -import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listener.OpenEntityEditorTabClickListener; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ResultSet; import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria; @@ -53,9 +52,9 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellContent; */ public class PlateMaterialReviewer extends AbstractSimpleBrowserGrid<WellContent> { - private static final int IMAGE_WIDTH_PX = 100; + private static final int IMAGE_WIDTH_PX = 200; - private static final int IMAGE_HEIGHT_PX = 60; + private static final int IMAGE_HEIGHT_PX = 120; public static final String BROWSER_ID = GenericConstants.ID_PREFIX + "PlateMaterialReviewerGrid"; @@ -103,6 +102,11 @@ public class PlateMaterialReviewer extends AbstractSimpleBrowserGrid<WellContent { public void handle(WellContent wellContent, boolean specialKeyPressed) { + // EntityReference nestedMaterial = + // wellContent.tryGetNestedMaterialContent(); + // ClientPluginFactory.openGeneMaterialViewer(nestedMaterial, + // experiment, + // viewContext); showEntityViewer(wellContent.tryGetNestedMaterialContent(), specialKeyPressed); } @@ -149,18 +153,10 @@ public class PlateMaterialReviewer extends AbstractSimpleBrowserGrid<WellContent { public void handle(WellContent wellContent, boolean specialKeyPressed) { - WellContentDialog.createImageViewer(wellContent, channelState, + WellContentDialog.showContentDialog(wellContent, channelState, viewContext, IMAGE_WIDTH_PX, IMAGE_HEIGHT_PX); } }); - registerLinkClickListenerFor(PlateMaterialReviewerColDefKind.EDIT.id(), - new ICellListener<WellContent>() - { - public void handle(WellContent wellContent, boolean specialKeyPressed) - { - showEntityEditor(wellContent.getWell(), specialKeyPressed); - } - }); } private void showEntityViewer(IEntityInformationHolder entityOrNull, boolean specialKeyPressed) @@ -171,21 +167,18 @@ public class PlateMaterialReviewer extends AbstractSimpleBrowserGrid<WellContent } } - private void showEntityEditor(IEntityInformationHolder entity, boolean specialKeyPressed) - { - OpenEntityEditorTabClickListener.showEntityEditor(viewContext, entity, specialKeyPressed); - } - @Override protected ColumnDefsAndConfigs<WellContent> createColumnsDefinition() { ColumnDefsAndConfigs<WellContent> schema = super.createColumnsDefinition(); - setLinksRenderer(schema, new PlateMaterialReviewerColDefKind[] - { PlateMaterialReviewerColDefKind.WELL_NESTED_MATERIAL, - PlateMaterialReviewerColDefKind.WELL_CONTENT_MATERIAL, - PlateMaterialReviewerColDefKind.PLATE, PlateMaterialReviewerColDefKind.WELL, - PlateMaterialReviewerColDefKind.DATASET, PlateMaterialReviewerColDefKind.IMAGE, - PlateMaterialReviewerColDefKind.EDIT }); + setLinksRenderer(schema, + new PlateMaterialReviewerColDefKind[] + { PlateMaterialReviewerColDefKind.WELL_NESTED_MATERIAL, + PlateMaterialReviewerColDefKind.WELL_CONTENT_MATERIAL, + PlateMaterialReviewerColDefKind.PLATE, + PlateMaterialReviewerColDefKind.WELL, + PlateMaterialReviewerColDefKind.DATASET, + PlateMaterialReviewerColDefKind.IMAGE }); return schema; } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java index e51166f61a7..6db431533e2 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java @@ -40,12 +40,14 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.listene import ch.systemsx.cisd.openbis.generic.client.web.client.dto.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityReference; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ScreeningViewContext; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ChannelChooser.DefaultChannelState; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers.ChannelChooser.IChanneledViewerFactory; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.DatasetImagesReference; +import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.PlateImageParameters; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellContent; import ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.WellLocation; @@ -83,15 +85,15 @@ public class WellContentDialog extends Dialog createImageViewer(images, channelState, viewContext, imgW, imgH); container.add(imageViewer); - dialogWidth = imgW * Math.max(2, images.getTileColsNum()); - dialogHeight = imgH * images.getTileRowsNum() + 200; + dialogWidth = imgW * Math.max(2, images.getTileColsNum()) + 100; + dialogHeight = imgH * images.getTileRowsNum() + 300; } else { dialogWidth = 300; dialogHeight = 160; } String title = "Well Content: " + wellData.getWellContentDescription(); - contentDialog.setupContentAndShow(container, dialogWidth, dialogHeight, title); + setupContentAndShow(contentDialog, container, dialogWidth, dialogHeight, title); } // ---------------- @@ -110,16 +112,17 @@ public class WellContentDialog extends Dialog this.viewContext = viewContext; } - private void setupContentAndShow(LayoutContainer container, int width, int height, String title) + private static void setupContentAndShow(Dialog dialog, Widget content, int width, int height, + String title) { - setHeading(title); - setLayout(new FitLayout()); - setScrollMode(Scroll.AUTO); - setHideOnButtonClick(true); - add(container); - setWidth(width); - setHeight(height); - show(); + dialog.setHeading(title); + dialog.setLayout(new FitLayout()); + dialog.setScrollMode(Scroll.AUTO); + dialog.setHideOnButtonClick(true); + dialog.add(content); + dialog.setWidth(width); + dialog.setHeight(height); + dialog.show(); } private LayoutContainer createContentDescription() @@ -202,7 +205,7 @@ public class WellContentDialog extends Dialog } /** view with channel chooser, no metadata are displayed */ - public static LayoutContainer createImageViewer(final WellContent wellContent, + public static void showContentDialog(final WellContent wellContent, DefaultChannelState channelState, final IViewContext<?> viewContext, final int imageWidthPx, final int imageHeightPx) { @@ -215,13 +218,41 @@ public class WellContentDialog extends Dialog } }; DatasetImagesReference imageDataset = wellContent.tryGetImages(); + + int dialogWidth; + int dialogHeight; List<String> channelsNames = new ArrayList<String>(); if (imageDataset != null) { - channelsNames = imageDataset.getImageParameters().getChannelsNames(); + PlateImageParameters imageParameters = imageDataset.getImageParameters(); + channelsNames = imageParameters.getChannelsNames(); + dialogWidth = imageWidthPx * Math.max(2, imageParameters.getTileColsNum()) + 100; + dialogHeight = imageHeightPx * imageParameters.getTileRowsNum() + 300; + } else + { + dialogWidth = 300; + dialogHeight = 160; + } + Widget content = + ChannelChooser.createViewerWithChannelChooser(viewerFactory, channelState, + channelsNames); + setupContentAndShow(new Dialog(), content, dialogWidth, dialogHeight, + createDialogTitle(wellContent)); + } + + private static String createDialogTitle(WellContent wellContent) + { + String content; + EntityReference nestedMaterial = wellContent.tryGetNestedMaterialContent(); + if (nestedMaterial != null) + { + content = nestedMaterial.getCode(); + } else + { + content = wellContent.getMaterialContent().getCode(); } - return ChannelChooser.createViewerWithChannelChooser(viewerFactory, channelState, - channelsNames); + return "Plate: " + wellContent.getPlate().getCode() + ", well: " + + wellContent.getWell().getCode() + ", content: " + content; } /** diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ui/columns/specific/PlateMaterialReviewerColDefKind.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ui/columns/specific/PlateMaterialReviewerColDefKind.java index 09dd15a214e..e3ad59488ef 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ui/columns/specific/PlateMaterialReviewerColDefKind.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/ui/columns/specific/PlateMaterialReviewerColDefKind.java @@ -137,22 +137,23 @@ public enum PlateMaterialReviewerColDefKind implements IColumnDefinitionKind<Wel } }), - IMAGE(new AbstractColumnDefinitionKind<WellContent>(Dict.BUTTON_SHOW) + DATASET_FILE_TYPE(new AbstractColumnDefinitionKind<WellContent>(Dict.FILE_FORMAT_TYPE) { @Override public String tryGetValue(WellContent entity) { DatasetImagesReference imageDataset = entity.tryGetImages(); - return imageDataset != null ? imageDataset.getDatasetReference().getCode() : null; + return imageDataset != null ? imageDataset.getDatasetReference().getFileTypeCode() + : null; } }), - EDIT(new AbstractColumnDefinitionKind<WellContent>(Dict.BUTTON_EDIT) + IMAGE(new AbstractColumnDefinitionKind<WellContent>(Dict.WELL_IMAGES) { @Override public String tryGetValue(WellContent entity) { - return "Annotate"; + return "Show"; } }), diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js index 5dccc50812a..d7417de90d2 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/public/screening-dictionary.js @@ -12,7 +12,7 @@ var screening = { WELL_ROW: "Well Row", WELL_COLUMN: "Well Column", WELL: "Well", - + WELL_IMAGES: "Well Images", // // Sample Viewer diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java index ff3398659d2..6fc94e9f1d8 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/GenePlateLocationsLoader.java @@ -18,6 +18,8 @@ package ch.systemsx.cisd.openbis.plugin.screening.server.logic; import java.sql.Connection; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -37,6 +39,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityReference; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; @@ -109,15 +112,17 @@ public class GenePlateLocationsLoader private List<WellContent> enrichPlateLocationsWithImages(List<WellContent> locations, List<ExternalDataPE> imageDatasets) { - Map<String, PlateImageParameters> imageParams = loadImagesReport(imageDatasets); - return enrichWithImages(locations, imageDatasets, imageParams); + Map<Long/* plate id */, List<ExternalDataPE>> plateToDatasetMap = + createPlateToDatasetMap(imageDatasets); + List<ExternalDataPE> usedDatasets = extractUsedDatasets(locations, plateToDatasetMap); + Map<String, PlateImageParameters> imageParams = loadImagesReport(usedDatasets); + return enrichWithImages(locations, plateToDatasetMap, imageParams); } private static List<WellContent> enrichWithImages(List<WellContent> wellContents, - List<ExternalDataPE> imageDatasets, Map<String, PlateImageParameters> imageParams) + Map<Long/* plate id */, List<ExternalDataPE>> plateToDatasetMap, + Map<String, PlateImageParameters> imageParams) { - Map<Long/* plate id */, List<ExternalDataPE>> plateToDatasetMap = - createPlateToDatasetMap(imageDatasets); List<WellContent> wellsWithImages = new ArrayList<WellContent>(); for (WellContent wellContent : wellContents) { @@ -151,41 +156,67 @@ public class GenePlateLocationsLoader return wellsWithImages; } + private static List<ExternalDataPE> extractUsedDatasets(List<WellContent> wellContents, + Map<Long/* plate id */, List<ExternalDataPE>> plateToDatasetMap) + { + List<ExternalDataPE> datasets = new ArrayList<ExternalDataPE>(); + for (WellContent wellContent : wellContents) + { + datasets.addAll(plateToDatasetMap.get(wellContent.getPlate().getId())); + } + return datasets; + } + private static Map<Long/* sample id */, List<ExternalDataPE>> createPlateToDatasetMap( List<ExternalDataPE> datasets) { Map<Long, List<ExternalDataPE>> map = new HashMap<Long, List<ExternalDataPE>>(); for (ExternalDataPE dataset : datasets) { - Long sampleId = HibernateUtils.getId(dataset.tryGetSample()); - - List<ExternalDataPE> plateDatasets = map.get(sampleId); - if (plateDatasets == null) + SamplePE sample = dataset.tryGetSample(); + if (sample != null) { - plateDatasets = new ArrayList<ExternalDataPE>(); - map.put(sampleId, plateDatasets); + Long sampleId = HibernateUtils.getId(sample); + + List<ExternalDataPE> plateDatasets = map.get(sampleId); + if (plateDatasets == null) + { + plateDatasets = new ArrayList<ExternalDataPE>(); + map.put(sampleId, plateDatasets); + } + plateDatasets.add(dataset); } - plateDatasets.add(dataset); } return map; } private Map<String/* dataset code */, PlateImageParameters> loadImagesReport( - List<ExternalDataPE> imageDatasets) + List<ExternalDataPE> usedDatasets) { - if (imageDatasets.size() == 0) + List<String> datasetCodes = extractDatasetCodes(usedDatasets); + if (datasetCodes.size() == 0) { return new HashMap<String, PlateImageParameters>(); } - List<String> datasetCodes = asCodes(imageDatasets); + // NOTE: assumes that all datasets are from the same datastore - String datastoreCode = imageDatasets.get(0).getDataStore().getCode(); + String datastoreCode = usedDatasets.get(0).getDataStore().getCode(); List<PlateImageParameters> imageParameters = DatasetReportsLoader.loadPlateImageParameters(datasetCodes, datastoreCode, externalDataTable); return asDatasetToParamsMap(imageParameters); } + private static List<String> extractDatasetCodes(List<ExternalDataPE> usedDatasets) + { + Set<String> codes = new HashSet<String>(); + for (ExternalDataPE dataset : usedDatasets) + { + codes.add(dataset.getCode()); + } + return new ArrayList<String>(codes); + } + private static Map<String/* dataset code */, PlateImageParameters> asDatasetToParamsMap( List<PlateImageParameters> imageParameters) { @@ -197,16 +228,6 @@ public class GenePlateLocationsLoader return map; } - private static List<String> asCodes(List<ExternalDataPE> datasets) - { - List<String> codes = new ArrayList<String>(); - for (ExternalDataPE dataset : datasets) - { - codes.add(dataset.getCode()); - } - return codes; - } - private static List<ExternalDataPE> loadImageDatasets(List<WellContent> locations, IExternalDataTable externalDataTable) { @@ -286,9 +307,28 @@ public class GenePlateLocationsLoader { wellLocations.add(convert(location)); } + sortByMaterialName(wellLocations); return wellLocations; } + private static void sortByMaterialName(List<WellContent> wellLocations) + { + Collections.sort(wellLocations, new Comparator<WellContent>() + { + public int compare(WellContent o1, WellContent o2) + { + EntityReference m1 = o1.tryGetNestedMaterialContent(); + EntityReference m2 = o2.tryGetNestedMaterialContent(); + if (m1 == null || m2 == null) + { + m1 = o1.getMaterialContent(); + m2 = o2.getMaterialContent(); + } + return m1.getCode().compareTo(m2.getCode()); + } + }); + } + private static WellContent convert( ch.systemsx.cisd.openbis.plugin.screening.server.dataaccess.WellContent loc) { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java index 62ac9b54693..ae77f0f036b 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ScreeningUtils.java @@ -49,8 +49,10 @@ public class ScreeningUtils public static DatasetReference createDatasetReference(ExternalDataPE dataset) { DataStorePE dataStore = dataset.getDataStore(); - return new DatasetReference(dataset.getId(), dataset.getCode(), dataset.getDataSetType() - .getCode(), dataStore.getCode(), dataStore.getDownloadUrl()); + String dataTypeCode = dataset.getDataSetType().getCode(); + String fileTypeCode = dataset.getFileFormatType().getCode(); + return new DatasetReference(dataset.getId(), dataset.getCode(), dataTypeCode, fileTypeCode, + dataStore.getCode(), dataStore.getDownloadUrl()); } public static List<ExternalDataPE> filterImageAnalysisDatasets(List<ExternalDataPE> datasets) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetImagesReference.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetImagesReference.java index 5ba9a52b9e2..a4596b7bc81 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetImagesReference.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetImagesReference.java @@ -18,8 +18,6 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto; import com.google.gwt.user.client.rpc.IsSerializable; -import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolderWithPermId; - /** * Describes images in one dataset and the way to access them. * @@ -54,7 +52,7 @@ public class DatasetImagesReference implements IsSerializable return dataset.getDownloadUrl(); } - public IEntityInformationHolderWithPermId getDatasetReference() + public DatasetReference getDatasetReference() { return dataset; } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java index 6b5683f97c9..ff1b0d71ccd 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/basic/dto/DatasetReference.java @@ -41,6 +41,8 @@ public class DatasetReference implements Serializable, IsSerializable, private String typeCode; + private String fileTypeCode; + private String datastoreCode; private String downloadUrl; @@ -51,12 +53,13 @@ public class DatasetReference implements Serializable, IsSerializable, { } - public DatasetReference(long id, String code, String typeCode, String datastoreCode, - String downloadUrl) + public DatasetReference(long id, String code, String typeCode, String fileTypeCode, + String datastoreCode, String downloadUrl) { this.id = id; this.datasetCode = code; this.typeCode = typeCode; + this.fileTypeCode = fileTypeCode; this.datastoreCode = datastoreCode; this.downloadUrl = downloadUrl; } @@ -98,4 +101,8 @@ public class DatasetReference implements Serializable, IsSerializable, return datasetCode; } + public String getFileTypeCode() + { + return fileTypeCode; + } } -- GitLab