From 5b597ad7802d28ef2d321db0cc68249839c3d3fe Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 25 Jun 2013 09:05:35 +0000 Subject: [PATCH] SP-724, BIS-428: AbstractDataSetPackager.addTo() improved by delegating methods to the node instead of the file because of recent improvements in hierarchical content node implementations. SVN: 29452 --- .../server/AbstractDataSetPackager.java | 34 ++----------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java index 69ac020c484..b1a0a4d0580 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java @@ -16,16 +16,13 @@ package ch.systemsx.cisd.openbis.dss.generic.server; -import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.InputStream; import java.util.List; import java.util.zip.CRC32; import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.io.IOUtilities; import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent; import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContentNode; import ch.systemsx.cisd.openbis.dss.generic.shared.IHierarchicalContentProvider; @@ -150,12 +147,11 @@ public abstract class AbstractDataSetPackager } } else if (file.isFile()) { - long size = file.length(); - long checksum = calculateChecksum(node, file); + long size = node.getFileLength(); + long checksum = isChecksumNeeded() ? node.getChecksumCRC32() : 0; try { - FileInputStream fileInputStream = new FileInputStream(file); - addEntry(entryPath, file.lastModified(), size, checksum, new BufferedInputStream(fileInputStream)); + addEntry(entryPath, node.getLastModified(), size, checksum, node.getInputStream()); } catch (Exception ex) { throw CheckedExceptionTunnel.wrapIfNecessary(ex); @@ -165,28 +161,4 @@ public abstract class AbstractDataSetPackager throw new IllegalStateException("Node '" + node.getRelativePath() + "' is a real folder"); } } - - private long calculateChecksum(IHierarchicalContentNode node, File file) - { - long checksum = 0; - if (isChecksumNeeded()) - { - boolean checksumCRC32Precalculated = node.isChecksumCRC32Precalculated(); - if (checksumCRC32Precalculated) - { - checksum = node.getChecksumCRC32(); - } else - { - try - { - FileInputStream fileInputStream = new FileInputStream(file); - checksum = IOUtilities.getChecksumCRC32(new BufferedInputStream(fileInputStream)); - } catch (Exception ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - } - return checksum; - } } -- GitLab