From e9e1539e1626d59aee82503d71b16b18b9143a0a Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 3 Feb 2020 15:50:58 +0100 Subject: [PATCH] Catching situation where the file was not persisted by gcat --- .../gcat/persistence/ckan/CKANResource.java | 52 ++++++++++++------- .../CatalogueStorageHubManagement.java | 8 ++- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java b/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java index 9faf620..8f2fd59 100644 --- a/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java +++ b/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java @@ -398,28 +398,40 @@ public class CKANResource extends CKAN { String oldURL = previousRepresentation.get(CKANResource.URL_KEY).asText(); String newURL = resourceNode.get(CKANResource.URL_KEY).asText(); - if(oldURL.compareTo(newURL) == 0) { - logger.trace("The URL of the resource with id {} was not changed", resourceID); - storageHubManagement = new CatalogueStorageHubManagement(); - this.mimeType = previousRepresentation.get(CKANResource.MIME_TYPE_KEY).asText(); - storageHubManagement.getPersistedFile(resourceID, mimeType); - } else { - logger.trace("The URL of resource with id {} has been changed the old URL was {}, the new URL is {}", - resourceID, oldURL, newURL); - resourceNode = persistStorageFile(resourceNode); - /* - try { - URL urlOLD = new URL(oldURL); - deleteStorageResource(urlOLD); - }catch (Exception e) { - logger.error("Unable to remove old file at URL {}", oldURL); + + if(!previousRepresentation.equals(resourceNode)) { + if(oldURL.compareTo(newURL) != 0) { + logger.trace("The URL of the resource with id {} was not changed", resourceID); + storageHubManagement = new CatalogueStorageHubManagement(); + + this.mimeType = previousRepresentation.get(CKANResource.MIME_TYPE_KEY)!= null ? previousRepresentation.get(CKANResource.MIME_TYPE_KEY).asText() : null; + try { + storageHubManagement.retrievePersistedFile(resourceID, mimeType); + }catch (Exception e) { + + } + } else { + logger.trace("The URL of resource with id {} has been changed the old URL was {}, the new URL is {}", + resourceID, oldURL, newURL); + resourceNode = persistStorageFile(resourceNode); + /* + try { + URL urlOLD = new URL(oldURL); + deleteStorageResource(urlOLD); + }catch (Exception e) { + logger.error("Unable to remove old file at URL {}", oldURL); + } + */ } - */ + String ret = super.update(getAsString(resourceNode)); + if(storageHubManagement.getPersistedFile()!= null) { + String revisionID = result.get(REVISION_ID_KEY).asText(); + storageHubManagement.addRevisionID(resourceID, revisionID); + } + return ret; } - String ret = super.update(getAsString(resourceNode)); - String revisionID = result.get(REVISION_ID_KEY).asText(); - storageHubManagement.addRevisionID(resourceID, revisionID); - return ret; + + return previousRepresentation.asText(); } @Override diff --git a/src/main/java/org/gcube/gcat/workspace/CatalogueStorageHubManagement.java b/src/main/java/org/gcube/gcat/workspace/CatalogueStorageHubManagement.java index 2815827..e9b1716 100644 --- a/src/main/java/org/gcube/gcat/workspace/CatalogueStorageHubManagement.java +++ b/src/main/java/org/gcube/gcat/workspace/CatalogueStorageHubManagement.java @@ -117,14 +117,18 @@ public class CatalogueStorageHubManagement { } } - public void getPersistedFile(String id, String mimeType) throws Exception { + public FileContainer retrievePersistedFile(String id, String mimeType) throws Exception { ApplicationMode applicationMode = new ApplicationMode(Constants.getCatalogueApplicationToken()); try { applicationMode.start(); - storageHubManagement.getPersistedFile(id, mimeType); + return storageHubManagement.getPersistedFile(id, mimeType); } finally { applicationMode.end(); } } + + public FileContainer getPersistedFile() { + return storageHubManagement.getPersistedFile(); + } }