package sk.stuba.fiit.perconik.activity.listeners.resource; import org.eclipse.core.resources.IResourceChangeEvent; import sk.stuba.fiit.perconik.activity.listeners.ActivityListener; import sk.stuba.fiit.perconik.core.listeners.ResourceListener; import sk.stuba.fiit.perconik.data.content.StructuredContent; import static sk.stuba.fiit.perconik.activity.serializers.Serializations.identifyObject; import static sk.stuba.fiit.perconik.data.content.StructuredContents.key; /** * TODO * * @author Pavol Zbell * @since 1.0 */ abstract class AbstractResourceListener extends ActivityListener implements ResourceListener { AbstractResourceListener() {} static final void put(final StructuredContent content, final ResourceEventVisit visit) { ResourceEventInput input = visit.input; content.put(key("source"), identifyObject(input.source)); content.put(key("type"), input.type.toString().toLowerCase()); if (input.build.isPresent()) { content.put(key("build", "kind"), input.build.get().toString().toLowerCase()); } content.put(key("visit", "initial", "delta"), identifyObject(input.delta.orNull())); content.put(key("visit", "initial", "resource"), identifyObject(input.resource.orNull())); content.put(key("visit", "current", "delta"), identifyObject(visit.delta.orNull())); content.put(key("visit", "current", "resource"), identifyObject(visit.resource.orNull())); } abstract void resolve(long time, IResourceChangeEvent event); public final void resourceChanged(final IResourceChangeEvent event) { final long time = this.currentTime(); this.execute(new Runnable() { public void run() { resolve(time, event); } }); } }