package org.rubypeople.rdt.internal.core.builder; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.core.resources.IResourceDelta; public class ResourceDeltaFormatter { public String format(IResourceDelta delta) { StringBuffer buffer = new StringBuffer(); buffer.append(kindAsString(delta.getKind())); buffer.append(flagsAsString(delta.getFlags())); buffer.append(delta.getFullPath()); buffer.append("\n"); IResourceDelta[] affectedChildren = delta. getAffectedChildren(); for (int i = 0; i < affectedChildren.length; i++) { IResourceDelta childDelta = affectedChildren[i]; buffer.append(format(childDelta)); } return buffer.toString(); } private String flagsAsString(int flags) { StringBuffer buffer = new StringBuffer(); for (Iterator iter = flagMap.keySet().iterator(); iter.hasNext();) { Integer flag = (Integer) iter.next(); if ((flags & flag.intValue()) != 0) buffer.append(flagMap.get(flag)+ " "); } return buffer.toString(); } private String kindAsString(int kind) { switch(kind) { case IResourceDelta.ADDED: return "Added "; case IResourceDelta.REMOVED: return "Removed"; case IResourceDelta.CHANGED: return "Changed"; case IResourceDelta.ADDED_PHANTOM: return "AddedPh"; case IResourceDelta.REMOVED_PHANTOM: return "RemovPh"; } return String.valueOf(kind); } static Map flagMap = new HashMap(); static { putFlag(IResourceDelta.CONTENT, "Content"); putFlag(IResourceDelta.ENCODING, "Encoding"); putFlag(IResourceDelta.DESCRIPTION, "Description"); putFlag(IResourceDelta.OPEN, "Open"); putFlag(IResourceDelta.TYPE, "Type"); putFlag(IResourceDelta.SYNC, "Sync"); putFlag(IResourceDelta.MARKERS, "Markers"); putFlag(IResourceDelta.MOVED_FROM, "Moved-from"); putFlag(IResourceDelta.MOVED_TO, "Moved-to"); } private static void putFlag(int flag, String description) { flagMap.put(new Integer(flag), description); } }