Skip to content

Commit ee251dd

Browse files
authored
Merge pull request #45 from mendix/delete-with-unchanged-attrs
Always log unchanged attributes on deletion - Mendix 8
2 parents 7719a69 + c27bcff commit ee251dd

File tree

4 files changed

+16
-12
lines changed

4 files changed

+16
-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=8.1.2
1+
version=8.1.3

javasource/audittrail/log/CreateLogObject.java

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

217+
boolean isDeleting = logType == TypeOfLog.Delete;
218+
217219
final Collection<? extends IMendixObjectMember<?>> members = inputObject.getMembers(sudoContext).values();
218220
final List<IMendixObject> logLineList = new ArrayList<IMendixObject>(members.size());
219221

@@ -226,20 +228,20 @@ private static int createLogLines(final IMendixObject inputObject, final IMendix
226228

227229
if (member instanceof MendixObjectReference) {
228230
if (!member.getName().startsWith("System."))
229-
logLineList.addAll(createReferenceLogLine(logObject, (MendixObjectReference) member, isNew,
231+
logLineList.addAll(createReferenceLogLine(logObject, (MendixObjectReference) member, isNew, isDeleting,
230232
sudoContext, currentContext));
231233
}
232234

233235
else if (member instanceof MendixObjectReferenceSet)
234-
logLineList.addAll(createReferenceSetLogLine(logObject, (MendixObjectReferenceSet) member, isNew,
236+
logLineList.addAll(createReferenceSetLogLine(logObject, (MendixObjectReferenceSet) member, isNew, isDeleting,
235237
sudoContext, currentContext));
236238

237239
else {
238240
final String attributeName = member.getName();
239241

240242
if (!attributeName.startsWith("System.") && !attributeName.equals("changedDate")
241243
&& !attributeName.equals("createdDate")) {
242-
logLineList.addAll(createSingleLogLine(logObject, member, MemberType.Attribute.toString(), isNew,
244+
logLineList.addAll(createSingleLogLine(logObject, member, MemberType.Attribute.toString(), isNew, isDeleting,
243245
sudoContext));
244246
}
245247
}
@@ -256,12 +258,12 @@ else if (member instanceof MendixObjectReferenceSet)
256258
}
257259

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

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

267269
logLine.setValue(context, LogLine.MemberNames.Member.toString(), member.getName());
@@ -285,15 +287,15 @@ private static List<IMendixObject> createSingleLogLine(final IMendixObject logOb
285287
}
286288

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

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

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

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

386388
private static List<IMendixObject> createReferenceSetLogLine(final IMendixObject logObject,
387-
final MendixObjectReferenceSet member, final boolean isNew, final IContext sudocontext, final IContext currentcontext)
389+
final MendixObjectReferenceSet member, final boolean isNew, final boolean isDeleting,
390+
final IContext sudocontext, final IContext currentcontext)
388391
throws CoreException {
389392

390393
IContext context = member.hasReadAccess(currentcontext) ? currentcontext : sudocontext;
@@ -395,8 +398,8 @@ private static List<IMendixObject> createReferenceSetLogLine(final IMendixObject
395398
currentIdList.sort(IDCOMPARATOR);
396399
previousIdList.sort(IDCOMPARATOR);
397400

398-
final boolean newOrChangedObjects = !Objects.equals(currentIdList, previousIdList) || isNew;
399-
if (!Constants.getIncludeOnlyChangedAttributes() || newOrChangedObjects) {
401+
final boolean newOrChangedObjects = isNew || !Objects.equals(currentIdList, previousIdList);
402+
if (newOrChangedObjects || isDeleting || !Constants.getIncludeOnlyChangedAttributes()) {
400403

401404
// The size below is just a good guess
402405
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.

0 commit comments

Comments
 (0)