Skip to content

Commit 7ef669a

Browse files
authored
Merge pull request #46 from mendix/delete-with-unchanged-attrs-9
Always log unchanged attributes on deletion
2 parents c5cf3e7 + af33762 commit 7ef669a

File tree

5 files changed

+17
-12
lines changed

5 files changed

+17
-12
lines changed

Audit trail.mpr

0 Bytes
Binary file not shown.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=9.0.2
1+
version=9.0.3

javasource/audittrail/log/CreateLogObject.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ private static int createLogLines(final IMendixObject inputObject, final IMendix
216216
isNew = Constants.getLogAllMembersOnCreate();
217217
}
218218

219+
boolean isDeleting = logType == TypeOfLog.Delete;
220+
219221
final Collection<? extends IMendixObjectMember<?>> members = inputObject.getMembers(sudoContext).values();
220222
final List<IMendixObject> logLineList = new ArrayList<IMendixObject>(members.size());
221223

@@ -228,20 +230,20 @@ private static int createLogLines(final IMendixObject inputObject, final IMendix
228230

229231
if (member instanceof MendixObjectReference) {
230232
if (!member.getName().startsWith("System."))
231-
logLineList.addAll(createReferenceLogLine(logObject, (MendixObjectReference) member, isNew,
233+
logLineList.addAll(createReferenceLogLine(logObject, (MendixObjectReference) member, isNew, isDeleting,
232234
sudoContext, currentContext));
233235
}
234236

235237
else if (member instanceof MendixObjectReferenceSet)
236-
logLineList.addAll(createReferenceSetLogLine(logObject, (MendixObjectReferenceSet) member, isNew,
238+
logLineList.addAll(createReferenceSetLogLine(logObject, (MendixObjectReferenceSet) member, isNew, isDeleting,
237239
sudoContext, currentContext));
238240

239241
else {
240242
final String attributeName = member.getName();
241243

242244
if (!attributeName.startsWith("System.") && !attributeName.equals("changedDate")
243245
&& !attributeName.equals("createdDate")) {
244-
logLineList.addAll(createSingleLogLine(logObject, member, MemberType.Attribute.toString(), isNew,
246+
logLineList.addAll(createSingleLogLine(logObject, member, MemberType.Attribute.toString(), isNew, isDeleting,
245247
sudoContext));
246248
}
247249
}
@@ -258,12 +260,12 @@ else if (member instanceof MendixObjectReferenceSet)
258260
}
259261

260262
private static List<IMendixObject> createSingleLogLine(final IMendixObject logObject, final IMendixObjectMember<?> member,
261-
final String memberType, final boolean isNew, final IContext context) throws CoreException {
263+
final String memberType, final boolean isNew, final boolean isDeleting, final IContext context) throws CoreException {
262264
final String oldValue = getMemberValueString(member, false, context);
263265
final String newValue = getMemberValueString(member, true, context);
264266

265267
final boolean newOrChangedAttribute = isNew || !oldValue.equals(newValue);
266-
if (newOrChangedAttribute || !Constants.getIncludeOnlyChangedAttributes()) {
268+
if (newOrChangedAttribute || isDeleting || !Constants.getIncludeOnlyChangedAttributes()) {
267269
final IMendixObject logLine = Core.instantiate(context, LogLine.getType());
268270

269271
logLine.setValue(context, LogLine.MemberNames.Member.toString(), member.getName());
@@ -287,15 +289,15 @@ private static List<IMendixObject> createSingleLogLine(final IMendixObject logOb
287289
}
288290

289291
private static List<IMendixObject> createReferenceLogLine(final IMendixObject logObject, final MendixObjectReference member,
290-
final boolean isNew, final IContext sudocontext, final IContext currentcontext) throws CoreException {
292+
final boolean isNew, final boolean isDeleting, final IContext sudocontext, final IContext currentcontext) throws CoreException {
291293
IContext context = member.hasReadAccess(currentcontext) ? currentcontext : sudocontext;
292294

293295
// get current and previous id
294296
final IMendixIdentifier currentId = member.getValue(context);
295297
final IMendixIdentifier previousId = member.getOriginalValue(context);
296298

297-
final boolean newOrChangedObject = !Objects.equals(currentId, previousId) || isNew;
298-
if (!Constants.getIncludeOnlyChangedAttributes() || newOrChangedObject) {
299+
final boolean newOrChangedObject = isNew || !Objects.equals(currentId, previousId);
300+
if (newOrChangedObject || isDeleting || !Constants.getIncludeOnlyChangedAttributes()) {
299301
final List<IMendixObject> logLineList = new ArrayList<IMendixObject>();
300302
final IMendixObject logLine = Core.instantiate(sudocontext, LogLine.getType());
301303

@@ -386,7 +388,8 @@ private static IMendixObject createMendixObject(final String objectType, final M
386388
final IMendixIdentifier i2) -> (int) (i1.toLong() - i2.toLong());
387389

388390
private static List<IMendixObject> createReferenceSetLogLine(final IMendixObject logObject,
389-
final MendixObjectReferenceSet member, final boolean isNew, final IContext sudocontext, final IContext currentcontext)
391+
final MendixObjectReferenceSet member, final boolean isNew, final boolean isDeleting,
392+
final IContext sudocontext, final IContext currentcontext)
390393
throws CoreException {
391394

392395
IContext context = member.hasReadAccess(currentcontext) ? currentcontext : sudocontext;
@@ -397,8 +400,8 @@ private static List<IMendixObject> createReferenceSetLogLine(final IMendixObject
397400
currentIdList.sort(IDCOMPARATOR);
398401
previousIdList.sort(IDCOMPARATOR);
399402

400-
final boolean newOrChangedObjects = !Objects.equals(currentIdList, previousIdList) || isNew;
401-
if (!Constants.getIncludeOnlyChangedAttributes() || newOrChangedObjects) {
403+
final boolean newOrChangedObjects = isNew || !Objects.equals(currentIdList, previousIdList);
404+
if (newOrChangedObjects || isDeleting || !Constants.getIncludeOnlyChangedAttributes()) {
402405

403406
// The size below is just a good guess
404407
final List<IMendixObject> logLineList = new ArrayList<IMendixObject>(currentIdList.size() + 1);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
We now log all attributes of a deleted object even if 'IncludeOnlyChangedAttributes' is set to True. Before, no attributes would be logged on deletion.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
We now log all attributes of a deleted object even if 'IncludeOnlyChangedAttributes' is set to True. Before, no attributes would be logged on deletion.

0 commit comments

Comments
 (0)