package org.xpect.xtext.lib.util; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import com.google.common.base.Function; public class IResourceFormatter implements Function<IResource, String> { public String format(IResource input) { if (input instanceof IContainer) return format((IContainer) input); if (input != null) return input.getClass().getSimpleName() + " " + input.getName(); return "null"; } protected String format(IContainer container) { StringBuilder builder = new StringBuilder(); builder.append(container.getClass().getSimpleName()); builder.append(" "); builder.append(container.getName()); builder.append(" {"); try { for (IResource member : container.members()) { builder.append("\n "); builder.append(format(member).replace("\n", "\n ")); } } catch (CoreException e) { builder.append("Error while calling container.members():" + e.getMessage()); } builder.append("\n}"); return builder.toString(); } public String apply(IResource input) { return format(input); } public String formatWorkspace() { return format(ResourcesPlugin.getWorkspace().getRoot()); } }