From 5271923ceec897b04e0a23ae4424bea60ff430a4 Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Wed, 27 Feb 2019 16:49:55 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/branches/data-access/storagehub-webapp/1.0@177327 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../accounting/AccountingHandler.java | 47 ++++++++++++++++--- .../storagehub/services/ItemsCreator.java | 4 +- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java b/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java index b514d8d..bd93f2e 100644 --- a/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java +++ b/src/main/java/org/gcube/data/access/storagehub/accounting/AccountingHandler.java @@ -23,6 +23,7 @@ import org.slf4j.LoggerFactory; @Singleton public class AccountingHandler { + private static final String VERSION_ACCOUNTING= "hl:version"; private static final String USER = "hl:user"; private static final String DATE = "hl:date"; private static final String ITEM_NAME = "hl:itemName"; @@ -38,14 +39,13 @@ public class AccountingHandler { public void createReadObj(String title, Session ses, Node node, boolean saveHistory ) { try { - Node directoryNode = node.getParent(); - - if (!directoryNode.hasNode(NodeProperty.ACCOUNTING.toString())){ - directoryNode.addNode(NodeProperty.ACCOUNTING.toString(), NodeProperty.NT_ACCOUNTING.toString()); + + if (!node.hasNode(NodeProperty.ACCOUNTING.toString())){ + node.addNode(NodeProperty.ACCOUNTING.toString(), NodeProperty.NT_ACCOUNTING.toString()); } - Node accountingNodeParent = directoryNode.getNode(NodeProperty.ACCOUNTING.toString()); + Node accountingNodeParent = node.getNode(NodeProperty.ACCOUNTING.toString()); Node accountingNode = accountingNodeParent.addNode(UUID.randomUUID().toString(),AccountingEntryType.READ.getNodeTypeDefinition()); accountingNode.setProperty(USER, AuthorizationProvider.instance.get().getClient().getId()); accountingNode.setProperty(DATE, Calendar.getInstance()); @@ -60,7 +60,7 @@ public class AccountingHandler { version = versions.nextVersion(); } if (version!=null) - accountingNode.setProperty("hl:version", version.getName()); + accountingNode.setProperty(VERSION_ACCOUNTING, version.getName()); }catch(UnsupportedRepositoryOperationException uropex) { logger.warn("version cannot be retrieved", uropex); } @@ -70,6 +70,41 @@ public class AccountingHandler { } } + public void createFileUpdated(String title, Session ses, Node node, boolean saveHistory ) { + try { + + if (!node.hasNode(NodeProperty.ACCOUNTING.toString())){ + node.addNode(NodeProperty.ACCOUNTING.toString(), NodeProperty.NT_ACCOUNTING.toString()); + } + + Node accountingNodeParent = node.getNode(NodeProperty.ACCOUNTING.toString()); + Node accountingNode = accountingNodeParent.addNode(UUID.randomUUID().toString(),AccountingEntryType.UPDATE.getNodeTypeDefinition()); + + accountingNode.setProperty(USER, AuthorizationProvider.instance.get().getClient().getId()); + accountingNode.setProperty(DATE, Calendar.getInstance()); + accountingNode.setProperty(ITEM_NAME, title); + + try { + VersionManager vManager = ses.getWorkspace().getVersionManager(); + VersionHistory history = vManager.getVersionHistory(node.getNode("jcr:content").getPath()); + VersionIterator versions = history.getAllVersions(); + Version version= null; + while (versions.hasNext()) { + version = versions.nextVersion(); + } + if (version!=null) + accountingNode.setProperty(VERSION_ACCOUNTING, version.getName()); + }catch(UnsupportedRepositoryOperationException uropex) { + logger.warn("version cannot be retrieved", uropex); + } + + + if (saveHistory) ses.save(); + } catch (RepositoryException e) { + logger.warn("error trying to retrieve accountign node",e); + } + } + public void createFolderAddObj(String title, String itemType, String mimeType, Session ses, Node node, boolean saveHistory ) { try { diff --git a/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java b/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java index ed583ba..2f505b1 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/ItemsCreator.java @@ -296,13 +296,15 @@ public class ItemsCreator { versionHandler.checkoutContentNode(newNode, ses); log.trace("replacing content of class {}",item.getContent().getClass()); item2Node.replaceContent(newNode,item, ItemAction.UPDATED); + accountingHandler.createFileUpdated(item.getTitle(), ses, newNode, false); }catch(PathNotFoundException pnf) { authChecker.checkWriteAuthorizationControl(ses, destinationNode.getIdentifier(), true); newNode = item2Node.getNode(destinationNode, item); versionHandler.makeVersionableContent(newNode, ses); + accountingHandler.createFolderAddObj(name, item.getClass().getSimpleName(), item.getContent().getMimeType(), ses, newNode, false); } - accountingHandler.createFolderAddObj(name, item.getClass().getSimpleName(), item.getContent().getMimeType(), ses, newNode, false); + return newNode; }