package sk.stuba.fiit.perconik.activity.listeners.resource; import com.google.common.base.Optional; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceDelta; import sk.stuba.fiit.perconik.eclipse.core.resources.ProjectBuildKind; import sk.stuba.fiit.perconik.eclipse.core.resources.ResourceEventType; import static com.google.common.base.Optional.fromNullable; final class ResourceEventInput { private static final int UNSET_BUILD_KIND = 0; final Object source; final ResourceEventType type; final Optional<ProjectBuildKind> build; /** * Resource event delta returned by {@code event.getDelta()}. */ final Optional<IResourceDelta> delta; /** * Resource in question returned by {@code event.getResource()}. */ final Optional<IResource> resource; private ResourceEventInput(final IResourceChangeEvent event) { this.source = event.getSource(); int type = event.getType(); int kind = event.getBuildKind(); this.type = ResourceEventType.valueOf(type); this.build = fromNullable(kind != UNSET_BUILD_KIND ? ProjectBuildKind.valueOf(kind) : null); this.delta = fromNullable(event.getDelta()); this.resource = fromNullable(event.getResource()); } static ResourceEventInput of(final IResourceChangeEvent event) { return new ResourceEventInput(event); } }