From 84d99d0f0700b2a19f504b21b1747275251305d8 Mon Sep 17 00:00:00 2001
From: Leonardo Vannucci <leonardo.vannucci@grupposistematica.it>
Date: Wed, 03 Apr 2019 10:40:10 +0200
Subject: [PATCH] Gstione customKey
---
dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java | 48 ++++++++++++++++++++++++------------------------
1 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java b/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java
index 39a2d6a..0fe93bd 100644
--- a/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java
+++ b/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java
@@ -18,6 +18,7 @@
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
+import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -165,10 +166,17 @@
throw new RuntimeException("Errore caricamento classe dal json del descrittore", e);
}
- logger.debug("Controllo esistenza file sul db");
- RegDocument regDocument = regDocumentRepository.findOneByHashAndName(uploadedFileDescriptor.getSha256(), uploadedFileDescriptor.getFileName());
-
String userName = cloudFileDescriptor.getParentFile().getName();
+
+ RegDocument regDocument = null;
+ if ( Strings.isBlank(uploadedFileDescriptor.getCustomKey()) == false ) {
+ logger.debug("Controllo esistenza file sul db tramite customKey {}", uploadedFileDescriptor.getCustomKey());
+ regDocument = regDocumentRepository.findOneByCustomKey(uploadedFileDescriptor.getCustomKey());
+ } else {
+ logger.debug("Controllo esistenza file sul db");
+ regDocument = regDocumentRepository.findOneByHashAndName(uploadedFileDescriptor.getSha256(),
+ uploadedFileDescriptor.getFileName(), userName);
+ }
File uploadedFile = new File(getUploadedFilePath(cloudFileDescriptorPath));
@@ -177,19 +185,20 @@
logger.debug("Creazione nuovo record per il documento da conservare");
regDocument = new RegDocument();
regDocument.setCreatedBy(userName);
- regDocument.setModifiedBy(userName);
- regDocument.setFileHash(uploadedFileDescriptor.getSha256());
- regDocument.setFileName(uploadedFileDescriptor.getFileName());
- regDocument.setFileSize(uploadedFile.length());
- regDocument.setDueDate(uploadedFileDescriptor.getDueDate());
- regDocument.setFilePath("");
- regDocument.setSecretKey(uploadedFileDescriptor.getSecretKey());
-
- regDocumentRepository.save(regDocument);
-
} else {
logger.debug("Trovato 1 record per il documento da memorizzare");
}
+
+ regDocument.setModifiedBy(userName);
+ regDocument.setFileHash(uploadedFileDescriptor.getSha256());
+ regDocument.setFileName(uploadedFileDescriptor.getFileName());
+ regDocument.setFileSize(uploadedFile.length());
+ regDocument.setDueDate(uploadedFileDescriptor.getDueDate());
+ regDocument.setFilePath("");
+ regDocument.setSecretKey(uploadedFileDescriptor.getSecretKey());
+ regDocument.setCustomKey(uploadedFileDescriptor.getCustomKey());
+
+ regDocumentRepository.save(regDocument);
try {
moveUploadedFileToStorage(uploadedFile.getAbsolutePath(), regDocument);
@@ -216,8 +225,6 @@
private void moveUploadedFileToStorage( String source, RegDocument regDocument ) throws IOException {
logger.debug("Spostamento file nello storage");
- String sha256Descriptor = regDocument.getFileHash();
-
File sourceFile = new File(source);
File destinationFile = new File(generateStoragePath(regDocument));
@@ -226,15 +233,8 @@
FileUtils.forceMkdirParent(destinationFile);
FileUtils.copyFile(sourceFile, destinationFile);
} else {
- logger.debug("Il file risulta gia' presente nello storage. Verifico l'integrita'");
- FileInputStream fis = new FileInputStream(destinationFile);
- String hash = DigestUtils.sha256Hex(fis);
- fis.close();
- if ( sha256Descriptor.equalsIgnoreCase(hash) == false ) {
- throw new IllegalStateException("L'hash del file nello storage non corrisponde con l'hash dichiarato nel descrittore del file:\n\t" +
- "hash file inviato: " + hash + "\n\t" +
- "hash dichiarato nel descrittore: " + sha256Descriptor);
- }
+ logger.debug("Il file risulta gia' presente nello storage. Aggiorno il file");
+ FileUtils.copyFile(sourceFile, destinationFile);
}
regDocument.setFilePath(destinationFile.getAbsolutePath());
--
Gitblit v1.6.2