package org.activityinfo.core.client;
import org.activityinfo.core.shared.Projection;
import org.activityinfo.core.shared.criteria.Criteria;
import org.activityinfo.model.form.FormInstance;
import org.activityinfo.model.form.FormClass;
import org.activityinfo.model.resource.IsResource;
import org.activityinfo.model.resource.ResourceId;
import org.activityinfo.promise.Promise;
import java.util.Collection;
import java.util.List;
import java.util.Set;
public interface ResourceLocator {
/**
* Fetches the user form.
*
* @param formId
* @return
*/
Promise<FormClass> getFormClass(ResourceId formId);
Promise<FormInstance> getFormInstance(ResourceId formId);
/**
* Persists a resource to the server, creating or updating as necessary.
*
* @param resource the resource to persist.
* @return a Promise that resolves when the persistance operation completes
* successfully.
*/
Promise<Void> persist(IsResource resource);
Promise<Void> persist(List<? extends IsResource> resources);
/**
* Retrieves the form instances that match the given criteria.
* @param criteria
*/
Promise<List<FormInstance>> queryInstances(Criteria criteria);
Promise<QueryResult<Projection>> queryProjection(InstanceQuery query);
Promise<List<Projection>> query(InstanceQuery query);
Promise<Void> remove(Collection<ResourceId> resources);
Promise<List<FormInstance>> queryInstances(Set<ResourceId> resourceIds);
}