diff --git a/src/main/java/world/bentobox/bentobox/api/logs/LogEntry.java b/src/main/java/world/bentobox/bentobox/api/logs/LogEntry.java index 173c572d1..1e9905a68 100644 --- a/src/main/java/world/bentobox/bentobox/api/logs/LogEntry.java +++ b/src/main/java/world/bentobox/bentobox/api/logs/LogEntry.java @@ -1,5 +1,7 @@ package world.bentobox.bentobox.api.logs; +import java.time.Instant; +import java.time.ZoneId; import java.util.LinkedHashMap; import java.util.Map; @@ -173,5 +175,17 @@ public Builder data(@NonNull String key, @Nullable String value) { public LogEntry build() { return new LogEntry(this); } + + @Override + public String toString() { + String time = Instant.ofEpochMilli(timestamp).atZone(ZoneId.systemDefault()).toLocalDateTime().toString(); + StringBuilder sb = new StringBuilder("LogEntry{").append("time=").append(time).append(", type=") + .append(type); + if (customType != null) + sb.append(", customType=").append(customType); + if (data != null && !data.isEmpty()) + sb.append(", data=").append(data); + return sb.append('}').toString(); + } } } diff --git a/src/main/java/world/bentobox/bentobox/database/objects/Island.java b/src/main/java/world/bentobox/bentobox/database/objects/Island.java index dce35c529..82700cd82 100644 --- a/src/main/java/world/bentobox/bentobox/database/objects/Island.java +++ b/src/main/java/world/bentobox/bentobox/database/objects/Island.java @@ -28,6 +28,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; +import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet.Builder; import com.google.gson.annotations.Expose; @@ -2072,15 +2073,35 @@ public boolean hasTeam() { */ @Override public String toString() { - return "Island [changed=" + changed + ", deleted=" + deleted + ", uniqueId=" + uniqueId + ", center=" + center - + ", location=" + location + ", range=" + range + ", protectionRange=" + protectionRange - + ", maxEverProtectionRange=" + maxEverProtectionRange + ", world=" + world + ", gameMode=" + gameMode - + ", name=" + name + ", createdDate=" + createdDate + ", updatedDate=" + updatedDate + ", owner=" - + owner + ", members=" + members + ", maxMembers=" + maxMembers + ", spawn=" + spawn - + ", purgeProtected=" + purgeProtected + ", flags=" + flags + ", history=" + history + ", spawnPoint=" - + spawnPoint + ", doNotLoad=" + doNotLoad + ", cooldowns=" + cooldowns + ", commandRanks=" - + commandRanks + ", reserved=" + reserved + ", metaData=" + metaData + ", homes=" + homes - + ", maxHomes=" + maxHomes + "]"; + MoreObjects.ToStringHelper helper = MoreObjects.toStringHelper(this) + .add("uniqueId", uniqueId) + .add("name", name) + .add("owner", owner) + .add("world", world) + .add("center", center) + .add("location", location) + .add("range", range) + .add("protectionRange", protectionRange) + .add("maxEverProtectionRange", maxEverProtectionRange) + .add("gameMode", gameMode) + .add("members", members) + .add("maxMembers", maxMembers) + .add("spawn", spawn) + .add("purgeProtected", purgeProtected) + .add("flags", flags) + .add("doNotLoad", doNotLoad) + .add("reserved", reserved) + .add("metaData", metaData) + .add("homesCount", homes != null ? homes.size() : 0) + .add("maxHomes", maxHomes); + + // Inline every LogEntry.toString() into a single bracketed list + String historyStr = history.stream() + .map(LogEntry::toString) + .collect(Collectors.joining(", ", "[", "]")); + helper.add("history", historyStr); + + return helper.toString(); } /**