From 505e8f236c903f9955917dda576bcae4e269426f Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Wed, 24 May 2023 16:59:32 -0400 Subject: [PATCH] switch to mime type check #9601 --- .../dataverse/ingest/IngestServiceBean.java | 52 +++---------------- .../harvard/iq/dataverse/util/FileUtil.java | 4 ++ 2 files changed, 11 insertions(+), 45 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java index 9d3e7fb1161..560843a7e71 100644 --- a/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/ingest/IngestServiceBean.java @@ -1185,52 +1185,14 @@ public boolean fileMetadataExtractable(DataFile dataFile) { // Inspired by fileMetadataExtractable, above public boolean fileMetadataExtractableFromNetcdf(DataFile dataFile, Path tempLocationPath) { logger.fine("fileMetadataExtractableFromNetcdf dataFileIn: " + dataFile + ". tempLocationPath: " + tempLocationPath); - boolean extractable = false; - String dataFileLocation = null; - if (tempLocationPath != null) { - // This file was just uploaded and hasn't been saved to S3 or local storage. - dataFileLocation = tempLocationPath.toString(); - } else { - // This file is already on S3 or local storage. - File tempFile = null; - File localFile; - StorageIO storageIO; - try { - storageIO = dataFile.getStorageIO(); - storageIO.open(); - if (storageIO.isLocalFile()) { - localFile = storageIO.getFileSystemPath().toFile(); - dataFileLocation = localFile.getAbsolutePath(); - logger.info("fileMetadataExtractable2: file is local. Path: " + dataFileLocation); - } else { - // Need to create a temporary local file: - tempFile = File.createTempFile("tempFileExtractMetadataNcml", ".tmp"); - try ( ReadableByteChannel targetFileChannel = (ReadableByteChannel) storageIO.getReadChannel(); FileChannel tempFileChannel = new FileOutputStream(tempFile).getChannel();) { - tempFileChannel.transferFrom(targetFileChannel, 0, storageIO.getSize()); - } - dataFileLocation = tempFile.getAbsolutePath(); - logger.info("fileMetadataExtractable2: file is on S3. Downloaded and saved to temp path: " + dataFileLocation); - } - } catch (IOException ex) { - logger.info("fileMetadataExtractable2, could not use storageIO for data file id " + dataFile.getId() + ". Exception: " + ex); - } - } - if (dataFileLocation != null) { - try ( NetcdfFile netcdfFile = NetcdfFiles.open(dataFileLocation)) { - logger.info("fileMetadataExtractable2: trying to open " + dataFileLocation); - if (netcdfFile != null) { - logger.info("fileMetadataExtractable2: returning true"); - extractable = true; - } else { - logger.info("NetcdfFiles.open() could not open file id " + dataFile.getId() + " (null returned)."); - } - } catch (IOException ex) { - logger.info("NetcdfFiles.open() could not open file id " + dataFile.getId() + ". Exception caught: " + ex); - } - } else { - logger.info("dataFileLocation is null for file id " + dataFile.getId() + ". Can't extract NcML."); + logger.info("fileMetadataExtractableFromNetcdf dataFileIn: " + dataFile + ". tempLocationPath: " + tempLocationPath + ". contentType: " + dataFile.getContentType()); + if (dataFile.getContentType() != null + && (dataFile.getContentType().equals(FileUtil.MIME_TYPE_NETCDF) + || dataFile.getContentType().equals(FileUtil.MIME_TYPE_XNETCDF) + || dataFile.getContentType().equals(FileUtil.MIME_TYPE_HDF5))) { + return true; } - return extractable; + return false; } /* diff --git a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java index 6bb7e1d583b..7137db9ca78 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/FileUtil.java @@ -182,6 +182,10 @@ public class FileUtil implements java.io.Serializable { //Todo - this is the same as MIME_TYPE_TSV_ALT public static final String MIME_TYPE_INGESTED_FILE = "text/tab-separated-values"; + public static final String MIME_TYPE_NETCDF = "application/netcdf"; + public static final String MIME_TYPE_XNETCDF = "application/x-netcdf"; + public static final String MIME_TYPE_HDF5 = "application/x-hdf5"; + // File type "thumbnail classes" tags: public static final String FILE_THUMBNAIL_CLASS_AUDIO = "audio";