Bug 510029 - Add toString() to Marker

Change-Id: I129ca1de8e7b62ee1eba8ddf4b81dbd540941451
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java
index 317bcb4..95e82cc 100644
--- a/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java
+++ b/bundles/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Marker.java
@@ -12,7 +12,9 @@
  *******************************************************************************/
 package org.eclipse.core.internal.resources;
 
-import java.util.Map;
+import java.text.DateFormat;
+import java.util.*;
+import java.util.Map.Entry;
 import org.eclipse.core.internal.utils.Messages;
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
@@ -337,4 +339,34 @@
 			workspace.endOperation(null, false);
 		}
 	}
+
+	/** For debugging only */
+	@Override
+	public String toString() {
+		StringBuilder sb = new StringBuilder("Marker ["); //$NON-NLS-1$
+		sb.append("on: ").append(resource.getFullPath()); //$NON-NLS-1$
+		MarkerInfo info = getInfo();
+		if (info == null) {
+			sb.append(", not found]"); //$NON-NLS-1$
+			return sb.toString();
+		}
+		sb.append(", id: ").append(info.getId()); //$NON-NLS-1$
+		sb.append(", type: ").append(info.getType()); //$NON-NLS-1$
+		Map<String, Object> attributes = info.getAttributes();
+		if (attributes != null) {
+			TreeMap<String, Object> tm = new TreeMap<>(attributes);
+			Set<Entry<String, Object>> set = tm.entrySet();
+			if (!set.isEmpty()) {
+				sb.append(", attributes: ["); //$NON-NLS-1$
+				for (Entry<String, Object> entry : set) {
+					sb.append(entry.getKey()).append(": ").append(entry.getValue()).append(", "); //$NON-NLS-1$ //$NON-NLS-2$
+				}
+				sb.setLength(sb.length() - 2);
+				sb.append(']');
+			}
+		}
+		sb.append(", created: ").append(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(new Date(info.getCreationTime()))); //$NON-NLS-1$
+		sb.append(']');
+		return sb.toString();
+	}
 }