From 65a6ac97631d6f3043ea8becc6384a6a85e633b4 Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Tue, 15 Mar 2011 20:43:38 +0000 Subject: [PATCH] LMS-2069, LMS-2085 better error logging, small hcs dropbox API improvement SVN: 20346 --- .../dss/etl/AbstractImageStorageProcessor.java | 4 +++- .../dss/etl/dto/api/v1/SimpleImageDataConfig.java | 12 ++++++++++++ .../dss/etl/jython/JythonPlateDataSetHandler.java | 4 ++-- .../etl/jython/SimpleImageDataSetRegistrator.java | 9 +++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java index 6a4e1f677ca..61124ba7b4c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/AbstractImageStorageProcessor.java @@ -252,6 +252,7 @@ abstract class AbstractImageStorageProcessor extends AbstractStorageProcessor im AbstractStorageProcessorTransaction { private IImagingQueryDAO dbTransaction; + // used when HDF5 is used to store original data private boolean shouldDeleteOriginalDataOnCommit; @@ -618,7 +619,8 @@ abstract class AbstractImageStorageProcessor extends AbstractStorageProcessor im if (imageDataSetInfo.isValid() == false) { throw ConfigurationFailureException - .fromTemplate("Invalid image dataset info object, check if your jython script fills all the fields: " + .fromTemplate("Invalid image dataset info object, check if your jython script fills all the required fields. " + + "Or maybe the recognized files extensions is set incorrectly? Dataset: " + imageDataSetInfo); } Geometry tileGeometry = diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/SimpleImageDataConfig.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/SimpleImageDataConfig.java index dd4e9816b75..221dd019ded 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/SimpleImageDataConfig.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/SimpleImageDataConfig.java @@ -101,6 +101,8 @@ abstract public class SimpleImageDataConfig private boolean generateThumbnailsWithImageMagic = false; + private boolean generateThumbnailsInHighQuality = false; + private double allowedMachineLoadDuringThumbnailsGeneration = 1.0; private boolean storeChannelsOnExperimentLevel = false; @@ -125,6 +127,7 @@ abstract public class SimpleImageDataConfig thumbnailsStorageFormat.setMaxWidth(getMaxThumbnailWidthAndHeight()); thumbnailsStorageFormat.setMaxHeight(getMaxThumbnailWidthAndHeight()); thumbnailsStorageFormat.setGenerateWithImageMagic(generateThumbnailsWithImageMagic); + thumbnailsStorageFormat.setHighQuality(generateThumbnailsInHighQuality); imageStorageConfiguraton.setThumbnailsStorageFormat(thumbnailsStorageFormat); } return imageStorageConfiguraton; @@ -225,6 +228,15 @@ abstract public class SimpleImageDataConfig this.generateThumbnailsWithImageMagic = generateWithImageMagic; } + /** + * if true and thumbnails generation is switched on, thumbnails will be generated with high + * quality. + */ + public void setGenerateHighQualityThumbnails(boolean highQualityThumbnails) + { + this.generateThumbnailsInHighQuality = highQualityThumbnails; + } + /** Should all dataset in one experiment use the same channels? By default set to false. */ public void setStoreChannelsOnExperimentLevel(boolean storeChannelsOnExperimentLevel) { diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java index 3f70572ad39..9caf65bc9e3 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java @@ -86,7 +86,7 @@ public class JythonPlateDataSetHandler extends JythonTopLevelDataSetHandler<Data } /** a simple method to register the described image dataset in a separate transaction */ - public void registerImageDataset(SimpleImageDataConfig imageDataSet, + public boolean registerImageDataset(SimpleImageDataConfig imageDataSet, File incomingDatasetFolder, DataSetRegistrationService<ImageDataSetInformation> service) { @@ -96,7 +96,7 @@ public class JythonPlateDataSetHandler extends JythonTopLevelDataSetHandler<Data service.transaction(incomingDatasetFolder, imageDatasetFactory); IDataSet newDataset = transaction.createNewDataSet(imageDatasetDetails); transaction.moveFile(incomingDatasetFolder.getPath(), newDataset); - transaction.commit(); + return transaction.commit(); } // ---- diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/SimpleImageDataSetRegistrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/SimpleImageDataSetRegistrator.java index 1fb9d628ff5..ca07053cf93 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/SimpleImageDataSetRegistrator.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/SimpleImageDataSetRegistrator.java @@ -22,6 +22,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import ch.systemsx.cisd.common.collections.CollectionUtils; +import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.filesystem.FileOperations; import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationDetails; @@ -117,6 +119,13 @@ public class SimpleImageDataSetRegistrator imageTokens.ensureValid(); imageTokensList.add(new ImageTokensWithPath(imageTokens, imageRelativePath)); } + if (imageTokensList.size() == 0) + { + throw UserFailureException.fromTemplate( + "Incoming directory '%s' contains no images with extensions %s!", + incomingDirectory.getPath(), + CollectionUtils.abbreviate(imageDataSet.getRecognizedImageExtensions(), -1)); + } return imageTokensList; } -- GitLab