From 49cf8483d6ae9c9b59de880f38df40e68843198d Mon Sep 17 00:00:00 2001 From: David Stephan Date: Mon, 9 Mar 2026 13:58:32 +0100 Subject: [PATCH 1/4] SED-4417 adding user IDs to tracking metadata --- .../core/accessors/AbstractTrackedObject.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java b/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java index c7e50bd..dca57e2 100644 --- a/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java +++ b/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java @@ -18,6 +18,8 @@ ******************************************************************************/ package step.core.accessors; +import org.bson.types.ObjectId; + import java.util.Date; /** @@ -29,9 +31,11 @@ public class AbstractTrackedObject extends AbstractOrganizableObject { private Date creationDate; private String creationUser; + private ObjectId creationUserId; private Date lastModificationDate; private String lastModificationUser; + private ObjectId lastModificationUserId; public AbstractTrackedObject() { super(); @@ -69,5 +73,19 @@ public void setLastModificationUser(String lastModificationUser) { this.lastModificationUser = lastModificationUser; } + public ObjectId getCreationUserId() { + return creationUserId; + } + + public void setCreationUserId(ObjectId creationUserId) { + this.creationUserId = creationUserId; + } + public ObjectId getLastModificationUserId() { + return lastModificationUserId; + } + + public void setLastModificationUserId(ObjectId lastModificationUserId) { + this.lastModificationUserId = lastModificationUserId; + } } From 88ab396806af4b7c891ddb9ea3a6ce99f2d9de2e Mon Sep 17 00:00:00 2001 From: David Stephan Date: Tue, 10 Mar 2026 14:40:55 +0100 Subject: [PATCH 2/4] SED-4417 PR feedbacks --- .../collections/AbstractCollectionTest.java | 64 +++++++++++++++++++ .../core/accessors/AbstractTrackedObject.java | 12 ++-- 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java b/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java index 6416de3..236efa7 100644 --- a/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java +++ b/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java @@ -2,10 +2,13 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.json.Json; import jakarta.json.JsonObject; @@ -15,6 +18,8 @@ import org.junit.Test; import step.core.accessors.AbstractIdentifiableObject; +import step.core.accessors.AbstractTrackedObject; +import step.core.accessors.AbstractUser; import step.core.accessors.DefaultJacksonMapperProvider; import step.core.collections.serialization.DottedKeyMap; import step.core.entities.Bean; @@ -614,4 +619,63 @@ public void renameCollections() { result = collection.find(Filters.empty(), null, null, null, 0).collect(Collectors.toList()); assertEquals(0, result.size()); } + + public static class TestUser extends AbstractUser { + public final String name; + + @JsonCreator + public TestUser(@JsonProperty("name") String name) { + this.name = name; + } + + @Override + public String getSessionUsername() { + return name; + } + } + + @Test + public void testAbstractTrackedObject() { + collectionFactory.getCollection("testAbstractTrackedObject", AbstractTrackedObject.class).drop(); + Collection collection = collectionFactory.getCollection("testAbstractTrackedObject", AbstractTrackedObject.class); + AbstractUser creator = new TestUser("creator"); + AbstractTrackedObject abstractTrackedObject = new AbstractTrackedObject(); + abstractTrackedObject.setCreationUserId(creator.getId().toHexString()); + abstractTrackedObject.setCreationUser(creator.getSessionUsername()); + Date now = new Date(); + abstractTrackedObject.setCreationDate(now); + abstractTrackedObject.setLastModificationUserId(creator.getId().toHexString()); + abstractTrackedObject.setLastModificationUser(creator.getSessionUsername()); + abstractTrackedObject.setLastModificationDate(now); + collection.save(abstractTrackedObject); + //Search by creator name + assertTrue("Search by creator name did not find result", + collection.find(Filters.equals("creationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); + //Search by creator id + assertTrue("Search by creator id did not find result", + collection.find(Filters.equals("creationUserId", creator.getId()), null, null, null, 0).findFirst().isPresent()); + //Search by modifier name + assertTrue("Search by modifier name did not find result", + collection.find(Filters.equals("lastModificationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); + //Search by modifier id + assertTrue("Search by modifier id did not find result", + collection.find(Filters.equals("lastModificationUserId", creator.getId()), null, null, null, 0).findFirst().isPresent()); + TestUser modifier = new TestUser("modifier"); + abstractTrackedObject.setLastModificationDate(new Date()); + abstractTrackedObject.setLastModificationUser(modifier.getSessionUsername()); + abstractTrackedObject.setLastModificationUserId(modifier.getId().toHexString()); + collection.save(abstractTrackedObject); + //Search by creator name + assertTrue("Search by creator name did not find result", + collection.find(Filters.equals("creationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); + //Search by creator id + assertTrue("Search by creator id did not find result", + collection.find(Filters.equals("creationUserId", creator.getId()), null, null, null, 0).findFirst().isPresent()); + //Search by modifier name + assertTrue("Search by modifier name did not find result", + collection.find(Filters.equals("lastModificationUser", modifier.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); + //Search by modifier id + assertTrue("Search by modifier id did not find result", + collection.find(Filters.equals("lastModificationUserId", modifier.getId()), null, null, null, 0).findFirst().isPresent()); + } } diff --git a/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java b/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java index dca57e2..8f92d14 100644 --- a/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java +++ b/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java @@ -31,11 +31,11 @@ public class AbstractTrackedObject extends AbstractOrganizableObject { private Date creationDate; private String creationUser; - private ObjectId creationUserId; + private String creationUserId; private Date lastModificationDate; private String lastModificationUser; - private ObjectId lastModificationUserId; + private String lastModificationUserId; public AbstractTrackedObject() { super(); @@ -73,19 +73,19 @@ public void setLastModificationUser(String lastModificationUser) { this.lastModificationUser = lastModificationUser; } - public ObjectId getCreationUserId() { + public String getCreationUserId() { return creationUserId; } - public void setCreationUserId(ObjectId creationUserId) { + public void setCreationUserId(String creationUserId) { this.creationUserId = creationUserId; } - public ObjectId getLastModificationUserId() { + public String getLastModificationUserId() { return lastModificationUserId; } - public void setLastModificationUserId(ObjectId lastModificationUserId) { + public void setLastModificationUserId(String lastModificationUserId) { this.lastModificationUserId = lastModificationUserId; } } From 5b27afe88d195caa33f69dec76ac5396c4f041d0 Mon Sep 17 00:00:00 2001 From: David Stephan Date: Tue, 10 Mar 2026 14:56:33 +0100 Subject: [PATCH 3/4] SED-4417 PR feedbacks --- .../core/collections/AbstractCollectionTest.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java b/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java index 236efa7..1981283 100644 --- a/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java +++ b/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java @@ -639,12 +639,13 @@ public void testAbstractTrackedObject() { collectionFactory.getCollection("testAbstractTrackedObject", AbstractTrackedObject.class).drop(); Collection collection = collectionFactory.getCollection("testAbstractTrackedObject", AbstractTrackedObject.class); AbstractUser creator = new TestUser("creator"); + String creatorId = creator.getId().toHexString(); AbstractTrackedObject abstractTrackedObject = new AbstractTrackedObject(); - abstractTrackedObject.setCreationUserId(creator.getId().toHexString()); + abstractTrackedObject.setCreationUserId(creatorId); abstractTrackedObject.setCreationUser(creator.getSessionUsername()); Date now = new Date(); abstractTrackedObject.setCreationDate(now); - abstractTrackedObject.setLastModificationUserId(creator.getId().toHexString()); + abstractTrackedObject.setLastModificationUserId(creatorId); abstractTrackedObject.setLastModificationUser(creator.getSessionUsername()); abstractTrackedObject.setLastModificationDate(now); collection.save(abstractTrackedObject); @@ -653,13 +654,13 @@ public void testAbstractTrackedObject() { collection.find(Filters.equals("creationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); //Search by creator id assertTrue("Search by creator id did not find result", - collection.find(Filters.equals("creationUserId", creator.getId()), null, null, null, 0).findFirst().isPresent()); + collection.find(Filters.equals("creationUserId", creatorId), null, null, null, 0).findFirst().isPresent()); //Search by modifier name assertTrue("Search by modifier name did not find result", collection.find(Filters.equals("lastModificationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); //Search by modifier id assertTrue("Search by modifier id did not find result", - collection.find(Filters.equals("lastModificationUserId", creator.getId()), null, null, null, 0).findFirst().isPresent()); + collection.find(Filters.equals("lastModificationUserId", creatorId), null, null, null, 0).findFirst().isPresent()); TestUser modifier = new TestUser("modifier"); abstractTrackedObject.setLastModificationDate(new Date()); abstractTrackedObject.setLastModificationUser(modifier.getSessionUsername()); @@ -670,12 +671,12 @@ public void testAbstractTrackedObject() { collection.find(Filters.equals("creationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); //Search by creator id assertTrue("Search by creator id did not find result", - collection.find(Filters.equals("creationUserId", creator.getId()), null, null, null, 0).findFirst().isPresent()); + collection.find(Filters.equals("creationUserId", creatorId), null, null, null, 0).findFirst().isPresent()); //Search by modifier name assertTrue("Search by modifier name did not find result", collection.find(Filters.equals("lastModificationUser", modifier.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); //Search by modifier id assertTrue("Search by modifier id did not find result", - collection.find(Filters.equals("lastModificationUserId", modifier.getId()), null, null, null, 0).findFirst().isPresent()); + collection.find(Filters.equals("lastModificationUserId", modifier.getId().toHexString()), null, null, null, 0).findFirst().isPresent()); } } From 6733ab34f95b1512532991f4eddb8fb9c5cb57b0 Mon Sep 17 00:00:00 2001 From: David Stephan Date: Wed, 11 Mar 2026 13:33:39 +0100 Subject: [PATCH 4/4] SED-4417 reverting IDs in AbstractTrackedObject --- .../collections/AbstractCollectionTest.java | 15 --------------- .../core/accessors/AbstractTrackedObject.java | 18 ------------------ 2 files changed, 33 deletions(-) diff --git a/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java b/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java index 1981283..57881ac 100644 --- a/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java +++ b/step-framework-collections/src/test/java/step/core/collections/AbstractCollectionTest.java @@ -641,42 +641,27 @@ public void testAbstractTrackedObject() { AbstractUser creator = new TestUser("creator"); String creatorId = creator.getId().toHexString(); AbstractTrackedObject abstractTrackedObject = new AbstractTrackedObject(); - abstractTrackedObject.setCreationUserId(creatorId); abstractTrackedObject.setCreationUser(creator.getSessionUsername()); Date now = new Date(); abstractTrackedObject.setCreationDate(now); - abstractTrackedObject.setLastModificationUserId(creatorId); abstractTrackedObject.setLastModificationUser(creator.getSessionUsername()); abstractTrackedObject.setLastModificationDate(now); collection.save(abstractTrackedObject); //Search by creator name assertTrue("Search by creator name did not find result", collection.find(Filters.equals("creationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); - //Search by creator id - assertTrue("Search by creator id did not find result", - collection.find(Filters.equals("creationUserId", creatorId), null, null, null, 0).findFirst().isPresent()); //Search by modifier name assertTrue("Search by modifier name did not find result", collection.find(Filters.equals("lastModificationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); - //Search by modifier id - assertTrue("Search by modifier id did not find result", - collection.find(Filters.equals("lastModificationUserId", creatorId), null, null, null, 0).findFirst().isPresent()); TestUser modifier = new TestUser("modifier"); abstractTrackedObject.setLastModificationDate(new Date()); abstractTrackedObject.setLastModificationUser(modifier.getSessionUsername()); - abstractTrackedObject.setLastModificationUserId(modifier.getId().toHexString()); collection.save(abstractTrackedObject); //Search by creator name assertTrue("Search by creator name did not find result", collection.find(Filters.equals("creationUser", creator.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); - //Search by creator id - assertTrue("Search by creator id did not find result", - collection.find(Filters.equals("creationUserId", creatorId), null, null, null, 0).findFirst().isPresent()); //Search by modifier name assertTrue("Search by modifier name did not find result", collection.find(Filters.equals("lastModificationUser", modifier.getSessionUsername()), null, null, null, 0).findFirst().isPresent()); - //Search by modifier id - assertTrue("Search by modifier id did not find result", - collection.find(Filters.equals("lastModificationUserId", modifier.getId().toHexString()), null, null, null, 0).findFirst().isPresent()); } } diff --git a/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java b/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java index 8f92d14..c7e50bd 100644 --- a/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java +++ b/step-framework-model/src/main/java/step/core/accessors/AbstractTrackedObject.java @@ -18,8 +18,6 @@ ******************************************************************************/ package step.core.accessors; -import org.bson.types.ObjectId; - import java.util.Date; /** @@ -31,11 +29,9 @@ public class AbstractTrackedObject extends AbstractOrganizableObject { private Date creationDate; private String creationUser; - private String creationUserId; private Date lastModificationDate; private String lastModificationUser; - private String lastModificationUserId; public AbstractTrackedObject() { super(); @@ -73,19 +69,5 @@ public void setLastModificationUser(String lastModificationUser) { this.lastModificationUser = lastModificationUser; } - public String getCreationUserId() { - return creationUserId; - } - - public void setCreationUserId(String creationUserId) { - this.creationUserId = creationUserId; - } - public String getLastModificationUserId() { - return lastModificationUserId; - } - - public void setLastModificationUserId(String lastModificationUserId) { - this.lastModificationUserId = lastModificationUserId; - } }