From bdf65cdbf32b165169912fd2e01bf9d9af625834 Mon Sep 17 00:00:00 2001 From: Dipannita Dey Date: Mon, 31 Oct 2022 13:04:32 -0500 Subject: [PATCH 1/6] updateing lastModifiesdate of dataset --- app/api/Datasets.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/api/Datasets.scala b/app/api/Datasets.scala index c0fe3fcbc..8e5061b98 100644 --- a/app/api/Datasets.scala +++ b/app/api/Datasets.scala @@ -770,6 +770,8 @@ class Datasets @Inject()( if(files.isInDataset(file, dataset)){ //remove file from dataset datasets.removeFile(dataset.id, file.id) + //updating lastModifiedDate of dataset + dataset.lastModifiedDate.setTime(new Date().getTime()); events.addSourceEvent(user , file.id, file.filename, dataset.id, dataset.name, "detach_file_dataset") files.index(fileId) if (!file.xmlMetadata.isEmpty) @@ -882,6 +884,9 @@ class Datasets @Inject()( datasets.index(id) Ok(toJson(Map("status" -> "success"))) + + //updating lastModifiedDate of dataset + x.lastModifiedDate.setTime(new Date().getTime()); } case None => Logger.error(s"Error getting dataset $id"); NotFound(toJson(s"Error getting dataset $id")) } @@ -929,6 +934,9 @@ class Datasets @Inject()( datasets.index(id) Ok(toJson("Metadata successfully added to db")) + + //updating lastModifiedDate of dataset + x.lastModifiedDate.setTime(new Date().getTime()); } case e: JsError => { Logger.error("Error getting creator"); @@ -3047,6 +3055,8 @@ class Datasets @Inject()( var eventType = if (inFolder) "add_file_folder" else "add_file" eventType = eventType + "_" + fileCount.toString events.addObjectEvent(request.user, id, d.name, eventType) + //updating lastModifiedDate of dataset + d.lastModifiedDate.setTime(new Date().getTime()); } // we do not return an internal server error here since this function just add an event and won't influence the From a2e7636be30ad8430298ac67902845457c11014a Mon Sep 17 00:00:00 2001 From: Dipannita Dey Date: Mon, 31 Oct 2022 13:07:10 -0500 Subject: [PATCH 2/6] updating changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85bd19a86..fb9810f02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## Unreleased + +## Fixed +- Updated lastModifiesDate when updating file or metadata to a dataset [386](https://github.com/clowder-framework/clowder/issues/386) ## 1.21.0 - 2022-08-23 From 3816c6c653faf2bfcb1681a733b0ed7031d12b53 Mon Sep 17 00:00:00 2001 From: toddn Date: Mon, 31 Oct 2022 14:47:14 -0500 Subject: [PATCH 3/6] Fixing some errors. Update last modified time before returning value. --- app/api/Datasets.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/api/Datasets.scala b/app/api/Datasets.scala index 8e5061b98..5cfde56c5 100644 --- a/app/api/Datasets.scala +++ b/app/api/Datasets.scala @@ -883,10 +883,10 @@ class Datasets @Inject()( events.addObjectEvent(request.user, id, x.name, EventType.ADD_METADATA_DATASET.toString) datasets.index(id) - Ok(toJson(Map("status" -> "success"))) - //updating lastModifiedDate of dataset x.lastModifiedDate.setTime(new Date().getTime()); + Ok(toJson(Map("status" -> "success"))) + } case None => Logger.error(s"Error getting dataset $id"); NotFound(toJson(s"Error getting dataset $id")) } @@ -933,10 +933,10 @@ class Datasets @Inject()( events.addObjectEvent(request.user, id, x.name, EventType.ADD_METADATA_DATASET.toString) datasets.index(id) - Ok(toJson("Metadata successfully added to db")) //updating lastModifiedDate of dataset x.lastModifiedDate.setTime(new Date().getTime()); + Ok(toJson("Metadata successfully added to db")) } case e: JsError => { Logger.error("Error getting creator"); From 51653fa7c45aa8e73387dfb1c2840c41bca7446b Mon Sep 17 00:00:00 2001 From: toddn Date: Thu, 3 Nov 2022 16:53:41 -0500 Subject: [PATCH 4/6] adding the update of time in datasets.submit. this is the route that is used when files are uploaded through the web interface. now the dataset time should be updated. --- app/controllers/Datasets.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/controllers/Datasets.scala b/app/controllers/Datasets.scala index 4f639a4cd..1b5ec4172 100644 --- a/app/controllers/Datasets.scala +++ b/app/controllers/Datasets.scala @@ -8,11 +8,14 @@ import play.api.Logger import play.api.Play.current import play.api.libs.json.Json._ import services._ -import util.{FileUtils, Formatters, RequiredFieldsConfig, SortingUtils } +import util.{FileUtils, Formatters, RequiredFieldsConfig, SortingUtils} + import scala.collection.immutable._ import scala.collection.mutable.ListBuffer import play.api.i18n.Messages +import java.util.Date + /** * A dataset is a collection of files and streams. */ @@ -728,7 +731,6 @@ class Datasets @Inject() ( implicit val user = request.user Logger.debug("------- in Datasets.submit ---------") - val folder = folderId.flatMap(id => folders.get(UUID(id))) val retMap = request.body.asFormUrlEncoded.get("datasetid").flatMap(_.headOption) match { case Some(ds) => { @@ -736,6 +738,7 @@ class Datasets @Inject() ( case Some(dataset) => { val uploadedFiles = FileUtils.uploadFilesMultipart(request, showPreviews = "DatasetLevel", dataset = Some(dataset), folder = folder, apiKey=request.apiKey) + dataset.lastModifiedDate.setTime(new Date().getTime()) Map("files" -> uploadedFiles.map(f => toJson(Map( "name" -> toJson(f.filename), "size" -> toJson(f.length), From 36e8decced3d4d79bde7259c9496d8ac64aad92a Mon Sep 17 00:00:00 2001 From: Dipannita Dey Date: Mon, 7 Nov 2022 10:57:35 -0600 Subject: [PATCH 5/6] modifying time at mongoDb service level --- app/api/Datasets.scala | 8 -- app/controllers/Datasets.scala | 3 - .../mongodb/MongoDBDatasetService.scala | 78 ++++++++++--------- 3 files changed, 41 insertions(+), 48 deletions(-) diff --git a/app/api/Datasets.scala b/app/api/Datasets.scala index 5cfde56c5..edb7b3ca6 100644 --- a/app/api/Datasets.scala +++ b/app/api/Datasets.scala @@ -770,8 +770,6 @@ class Datasets @Inject()( if(files.isInDataset(file, dataset)){ //remove file from dataset datasets.removeFile(dataset.id, file.id) - //updating lastModifiedDate of dataset - dataset.lastModifiedDate.setTime(new Date().getTime()); events.addSourceEvent(user , file.id, file.filename, dataset.id, dataset.name, "detach_file_dataset") files.index(fileId) if (!file.xmlMetadata.isEmpty) @@ -883,8 +881,6 @@ class Datasets @Inject()( events.addObjectEvent(request.user, id, x.name, EventType.ADD_METADATA_DATASET.toString) datasets.index(id) - //updating lastModifiedDate of dataset - x.lastModifiedDate.setTime(new Date().getTime()); Ok(toJson(Map("status" -> "success"))) } @@ -934,8 +930,6 @@ class Datasets @Inject()( datasets.index(id) - //updating lastModifiedDate of dataset - x.lastModifiedDate.setTime(new Date().getTime()); Ok(toJson("Metadata successfully added to db")) } case e: JsError => { @@ -3055,8 +3049,6 @@ class Datasets @Inject()( var eventType = if (inFolder) "add_file_folder" else "add_file" eventType = eventType + "_" + fileCount.toString events.addObjectEvent(request.user, id, d.name, eventType) - //updating lastModifiedDate of dataset - d.lastModifiedDate.setTime(new Date().getTime()); } // we do not return an internal server error here since this function just add an event and won't influence the diff --git a/app/controllers/Datasets.scala b/app/controllers/Datasets.scala index 1b5ec4172..4304d4be5 100644 --- a/app/controllers/Datasets.scala +++ b/app/controllers/Datasets.scala @@ -14,8 +14,6 @@ import scala.collection.immutable._ import scala.collection.mutable.ListBuffer import play.api.i18n.Messages -import java.util.Date - /** * A dataset is a collection of files and streams. */ @@ -738,7 +736,6 @@ class Datasets @Inject() ( case Some(dataset) => { val uploadedFiles = FileUtils.uploadFilesMultipart(request, showPreviews = "DatasetLevel", dataset = Some(dataset), folder = folder, apiKey=request.apiKey) - dataset.lastModifiedDate.setTime(new Date().getTime()) Map("files" -> uploadedFiles.map(f => toJson(Map( "name" -> toJson(f.filename), "size" -> toJson(f.length), diff --git a/app/services/mongodb/MongoDBDatasetService.scala b/app/services/mongodb/MongoDBDatasetService.scala index 15de0db8d..f4c3b1d66 100644 --- a/app/services/mongodb/MongoDBDatasetService.scala +++ b/app/services/mongodb/MongoDBDatasetService.scala @@ -729,12 +729,12 @@ class MongoDBDatasetService @Inject() ( if (file.isInstanceOf[models.File]) { val theFile = file.asInstanceOf[models.File] if (!theFile.thumbnail_id.isEmpty) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> theFile.thumbnail_id.get), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> theFile.thumbnail_id.get, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) return } } } - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> None), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> None, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } case None => Logger.debug(s"Dataset $datasetId not found") } @@ -749,12 +749,12 @@ class MongoDBDatasetService @Inject() ( if (file.isInstanceOf[File]) { val theFile = file.asInstanceOf[File] if (!theFile.thumbnail_id.isEmpty) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> theFile.thumbnail_id.get), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> theFile.thumbnail_id.get, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) return } } } - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> None), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> None, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } case None => Logger.debug("No dataset found with id " + datasetId) } @@ -929,13 +929,13 @@ class MongoDBDatasetService @Inject() ( val md = JSON.parse(json).asInstanceOf[DBObject] Dataset.dao.collection.findOne(MongoDBObject("_id" -> new ObjectId(id.stringify)), MongoDBObject("metadata" -> 1)) match { case None => { - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("metadata" -> md), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("metadata" -> md, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } case Some(x) => { x.getAs[DBObject]("metadata") match { case Some(map) => { val union = map.asInstanceOf[DBObject] ++ md - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("metadata" -> union), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("metadata" -> union, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } case None => Map.empty } @@ -947,23 +947,25 @@ class MongoDBDatasetService @Inject() ( Logger.debug("Adding XML metadata to dataset " + id + " from file " + fileId + ": " + json) val md = JsonUtil.parseJSON(json).asInstanceOf[java.util.LinkedHashMap[String, Any]].toMap Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $addToSet("datasetXmlMetadata" -> DatasetXMLMetadata.toDBObject(models.DatasetXMLMetadata(md, fileId.stringify))), false, false, WriteConcern.Safe) + $addToSet("datasetXmlMetadata" -> DatasetXMLMetadata.toDBObject(models.DatasetXMLMetadata(md, fileId.stringify))) + ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def removeXMLMetadata(id: UUID, fileId: UUID) { Logger.debug("Removing XML metadata belonging to file " + fileId + " from dataset " + id + ".") - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $pull("datasetXmlMetadata" -> MongoDBObject("fileId" -> fileId.stringify)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $pull("datasetXmlMetadata" -> MongoDBObject("fileId" -> fileId.stringify)) + ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def addUserMetadata(id: UUID, json: String) { Logger.debug("Adding/modifying user metadata to dataset " + id + " : " + json) val md = com.mongodb.util.JSON.parse(json).asInstanceOf[DBObject] - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("userMetadata" -> md), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("userMetadata" -> md, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } /** Change the metadataCount field for a dataset */ def incrementMetadataCount(id: UUID, count: Long) = { - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $inc("metadataCount" -> count), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $inc("metadataCount" -> count) ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } /** @@ -971,20 +973,20 @@ class MongoDBDatasetService @Inject() ( */ def updateInformation(id: UUID, description: String, name: String) { val result = Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $set("description" -> description, "name" -> name), + $set("description" -> description, "name" -> name, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def updateName(id: UUID, name: String) { events.updateObjectName(id, name) val result = Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $set("name" -> name), + $set("name" -> name, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def updateDescription(id: UUID, description: String){ val result = Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $set("description" -> description), + $set("description" -> description, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } @@ -995,7 +997,7 @@ class MongoDBDatasetService @Inject() ( //Don't allow duplicates if (Dataset.dao.find(MongoDBObject("_id" -> new ObjectId(id.stringify)) ++ MongoDBObject("creators" -> creator)).length == 0) { val result = Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $push("creators" -> creator), + $push("creators" -> creator) ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } } @@ -1005,7 +1007,7 @@ class MongoDBDatasetService @Inject() ( */ def removeCreator(id: UUID, creator: String) { Dataset.dao.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $pull("creators" -> creator), false, false, WriteConcern.Safe) + $pull("creators" -> creator) ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } /** @@ -1016,8 +1018,8 @@ class MongoDBDatasetService @Inject() ( if (Dataset.dao.find(MongoDBObject("_id" -> new ObjectId(id.stringify)) ++ MongoDBObject("creators" -> creator)).length != 0) { removeCreator(id, creator); Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $push("creators" -> MongoDBObject("$each" -> MongoDBList(creator), "$position" -> position)), - false, false, WriteConcern.Safe) + $push("creators" -> MongoDBObject("$each" -> MongoDBList(creator), "$position" -> position)) + ++ $set("lastModifiedDate" -> new Date()),false, false, WriteConcern.Safe) } } @@ -1032,7 +1034,7 @@ class MongoDBDatasetService @Inject() ( def updateLicense(id: UUID, licenseType: String, rightsHolder: String, licenseText: String, licenseUrl: String, allowDownload: String) { val licenseData = models.LicenseData(m_licenseType = licenseType, m_rightsHolder = rightsHolder, m_licenseText = licenseText, m_licenseUrl = licenseUrl, m_allowDownload = allowDownload.toBoolean) val result = Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $set("licenseData" -> LicenseData.toDBObject(licenseData)), + $set("licenseData" -> LicenseData.toDBObject(licenseData), "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } @@ -1056,14 +1058,14 @@ class MongoDBDatasetService @Inject() ( if (!existingTags.contains(shortTag)) { val tagObj = models.Tag(name = shortTag, userId = userIdStr, extractor_id = eid, created = createdDate) tagsAdded += tagObj - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $addToSet("tags" -> Tag.toDBObject(tagObj)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $addToSet("tags" -> Tag.toDBObject(tagObj)) ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } }) tagsAdded.toList } def setUserMetadataWasModified(id: UUID, wasModified: Boolean) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("userMetadataWasModified" -> Some(wasModified)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("userMetadataWasModified" -> Some(wasModified), "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def findMetadataChangedDatasets(): List[Dataset] = { @@ -1083,7 +1085,8 @@ class MongoDBDatasetService @Inject() ( def removeTag(id: UUID, tagId: UUID) { Logger.debug("Removing tag " + tagId) - val result = Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $pull("tags" -> MongoDBObject("_id" -> new ObjectId(tagId.stringify))), false, false, WriteConcern.Safe) + val result = Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $pull("tags" -> MongoDBObject("_id" -> new ObjectId(tagId.stringify))) + ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def removeTags(id: UUID, tags: List[String]) { @@ -1094,12 +1097,13 @@ class MongoDBDatasetService @Inject() ( // Only remove existing tags. tags.intersect(existingTags).map { tag => - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $pull("tags" -> MongoDBObject("name" -> tag)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $pull("tags" -> MongoDBObject("name" -> tag)) + ++ $set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } } def removeAllTags(id: UUID) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("tags" -> List()), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), $set("tags" -> List(), "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } // ---------- Tags related code ends ------------------ @@ -1349,28 +1353,28 @@ class MongoDBDatasetService @Inject() ( } def addFile(datasetId: UUID, file: File) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $addToSet("files" -> new ObjectId(file.id.stringify)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $addToSet("files" -> new ObjectId(file.id.stringify)) ++$set("lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def addFolder(datasetId: UUID, folderId: UUID) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $addToSet("folders" -> new ObjectId(folderId.stringify)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $addToSet("folders" -> new ObjectId(folderId.stringify)) ++$set( "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def addCollection(datasetId: UUID, collectionId: UUID) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $addToSet("collections" -> new ObjectId(collectionId.stringify)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $addToSet("collections" -> new ObjectId(collectionId.stringify)) ++$set( "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def removeCollection(datasetId: UUID, collectionId: UUID) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $pull("collections" -> new ObjectId(collectionId.stringify)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $pull("collections" -> new ObjectId(collectionId.stringify)) ++$set( "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def removeFile(datasetId: UUID, fileId: UUID) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $pull("files" -> new ObjectId(fileId.stringify)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $pull("files" -> new ObjectId(fileId.stringify)) ++$set( "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) removeXMLMetadata(datasetId, fileId) } def removeFolder(datasetId: UUID, folderId: UUID) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $pull("folders" -> new ObjectId(folderId.stringify)), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $pull("folders" -> new ObjectId(folderId.stringify)) ++$set( "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } def newThumbnail(datasetId: UUID) { @@ -1381,12 +1385,12 @@ class MongoDBDatasetService @Inject() ( if (file.isInstanceOf[models.File]) { val theFile = file.asInstanceOf[models.File] if (!theFile.thumbnail_id.isEmpty) { - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> theFile.thumbnail_id.get), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> theFile.thumbnail_id.get, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) return } } } - Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> None), false, false, WriteConcern.Safe) + Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), $set("thumbnail_id" -> None, "lastModifiedDate" -> new Date()), false, false, WriteConcern.Safe) } case None => } @@ -1452,11 +1456,11 @@ class MongoDBDatasetService @Inject() ( def addToSpace(datasetId: UUID, spaceId: UUID): Unit = { val result = Dataset.update( MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), - $addToSet("spaces" -> Some(new ObjectId(spaceId.stringify))), + $addToSet("spaces" -> Some(new ObjectId(spaceId.stringify))) ++$set( "lastModifiedDate" -> new Date()), false, false) if (get(datasetId).exists(_.isTRIAL == true) && spaces.get(spaceId).exists(_.isTrial == false)) { Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), - $set("status" -> DatasetStatus.DEFAULT.toString), + $set("status" -> DatasetStatus.DEFAULT.toString, "lastModifiedDate" -> new Date()), false, false) } } @@ -1464,7 +1468,7 @@ class MongoDBDatasetService @Inject() ( def removeFromSpace(datasetId: UUID, spaceId: UUID): Unit = { val result = Dataset.update( MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), - $pull("spaces" -> Some(new ObjectId(spaceId.stringify))), + $pull("spaces" -> Some(new ObjectId(spaceId.stringify))) ++$set("lastModifiedDate" -> new Date()), false, false) if (play.Play.application().configuration().getBoolean("verifySpaces")) { @@ -1472,7 +1476,7 @@ class MongoDBDatasetService @Inject() ( get(datasetId) match { case Some(d) if !d.spaces.map(s => spaces.get(s)).flatten.exists(_.isTrial == false) => Dataset.update(MongoDBObject("_id" -> new ObjectId(datasetId.stringify)), - $set("status" -> DatasetStatus.TRIAL.toString), + $set("status" -> DatasetStatus.TRIAL.toString, "lastModifiedDate" -> new Date()), false, false) case _ => } @@ -1646,13 +1650,13 @@ class MongoDBDatasetService @Inject() ( def incrementDownloads(id: UUID, user: Option[User]) = { Logger.debug("updating downloads for dataset "+id.toString) Dataset.update(MongoDBObject("_id" -> new ObjectId(id.stringify)), - $inc("stats.downloads" -> 1) ++ $set("stats.last_downloaded" -> new Date), true, false, WriteConcern.Safe) + $inc("stats.downloads" -> 1) ++ $set("stats.last_downloaded" -> new Date, "lastModifiedDate" -> new Date()), true, false, WriteConcern.Safe) user match { case Some(u) => { Logger.debug("updating downloads for user "+u.toString) DatasetStats.update(MongoDBObject("user_id" -> new ObjectId(u.id.stringify), "resource_id" -> new ObjectId(id.stringify), "resource_type" -> "dataset"), - $inc("downloads" -> 1) ++ $set("last_downloaded" -> new Date), true, false, WriteConcern.Safe) + $inc("downloads" -> 1) ++ $set("last_downloaded" -> new Date, "lastModifiedDate" -> new Date()), true, false, WriteConcern.Safe) } case None => {} } From e24361b52404eecbfac154dc9080d9598f3b602b Mon Sep 17 00:00:00 2001 From: Dipannita Dey Date: Fri, 11 Nov 2022 15:28:02 -0600 Subject: [PATCH 6/6] Adding lastModifiedDate to UI --- CHANGELOG.md | 2 +- app/views/dataset.scala.html | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb9810f02..1db0623c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased ## Fixed -- Updated lastModifiesDate when updating file or metadata to a dataset [386](https://github.com/clowder-framework/clowder/issues/386) +- Updated lastModifiesDate when updating file or metadata to a dataset, added lastModified to UI [386](https://github.com/clowder-framework/clowder/issues/386) ## 1.21.0 - 2022-08-23 diff --git a/app/views/dataset.scala.html b/app/views/dataset.scala.html index 99d4f426c..e09d2003b 100644 --- a/app/views/dataset.scala.html +++ b/app/views/dataset.scala.html @@ -372,6 +372,7 @@

Statistics

Last viewed: @view._2.format("MMM dd, yyyy HH:mm:ss") Downloads: @dataset.stats.downloads Last downloaded: @if(dataset.stats.last_downloaded.isDefined){@dataset.stats.last_downloaded.get.format("MMM dd, yyyy HH:mm:ss")}else{Never} + Last Modified: @dataset.lastModifiedDate.format("MMM dd, yyyy HH:mm:ss") @spaces.spaceAllocation(dataset.id, ResourceRef.dataset,datasetSpaces_canRemove.getOrElse(Map.empty),None)