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.IResourceDelta; import static com.google.common.base.Optional.fromNullable; import static com.google.common.base.Preconditions.checkNotNull; final class ResourceEventVisit { /** * Initial resource event input data. */ final ResourceEventInput input; /** * Currently visited resource delta, not necessarily the one returned by * {@code event.getDelta()} since it may also another deeper in the delta tree. * * <p>Note that if resource delta is set, then resource is not set. To obtain * current resource corresponding to this delta use {@code delta.getResource()}. */ final Optional<IResourceDelta> delta; /** * Currently visited resource, not necessarily the one returned by * {@code event.getDelta()} since it may also another deeper in the resource tree. * * <p>Note that if resource is set, then resource delta is not set. */ final Optional<IResource> resource; private ResourceEventVisit(final ResourceEventInput input, final Optional<IResourceDelta> delta, final Optional<IResource> resource) { this.input = input; this.delta = delta; this.resource = resource; } static ResourceEventVisit of(final ResourceEventInput input, final IResourceDelta delta) { return new ResourceEventVisit(checkNotNull(input), fromNullable(delta), Optional.<IResource>absent()); } static ResourceEventVisit of(final ResourceEventInput input, final IResource resource) { return new ResourceEventVisit(checkNotNull(input), Optional.<IResourceDelta>absent(), fromNullable(resource)); } }