package org.activityinfo.core.client; import com.google.common.base.Function; import org.activityinfo.model.resource.ResourceId; import org.activityinfo.core.shared.Projection; import org.activityinfo.model.form.FormInstance; import org.activityinfo.promise.Promise; import java.util.List; /** * Functional forms of the {@code ResourceLocator} methods */ public class Resources { public final ResourceLocator resourceLocator; public Resources(ResourceLocator resourceLocator) { this.resourceLocator = resourceLocator; } public Function<FormInstance, Promise<Void>> persist() { return new Function<FormInstance, Promise<Void>>() { @Override public Promise<Void> apply(FormInstance formInstance) { return resourceLocator.persist(formInstance); } }; } public Function<InstanceQuery, Promise<List<Projection>>> query() { return new Function<InstanceQuery, Promise<List<Projection>>>() { @Override public Promise<List<Projection>> apply(InstanceQuery instanceQuery) { return resourceLocator.query(instanceQuery); } }; } public Function<ResourceId, Promise<FormInstance>> fetchInstance() { return new Function<ResourceId, Promise<FormInstance>>() { @Override public Promise<FormInstance> apply(ResourceId input) { return resourceLocator.getFormInstance(input); } }; } public Promise<List<Projection>> query(InstanceQuery query) { return resourceLocator.query(query); } }