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