/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.joiner; import java.net.URI; import java.util.Collection; import java.util.Iterator; import java.util.Set; import com.emc.storageos.db.client.constraint.Constraint; import com.emc.storageos.db.client.model.DataObject; interface QueryEngine { /** * Given a DataObject class, return all the URIs of active objects * * @param clazz DataObjectClass * @return */ <T extends DataObject> Set<URI> queryByType(Class<T> clazz); /** * Given a DataObject class and URI collection, returns all the matching objects. * * @param clazz DataObjectClass * @param uris List of URIs of members of class * @return Iterator of appropriate type for the clazz */ <T extends DataObject> Iterator<T> queryIterObject(Class<T> clazz, Collection<URI> uris); /** * Given a URI in a given class, return the object if it exists. * * @param clazz -- DataObject class * @param uri - URI of instance in clazz * @return instantiated data object or null if not found or active */ <T extends DataObject> T queryObject(Class<T> clazz, URI uri); /** * Return all the URIs matching a given constraint. * * @param constraint -- Constraint (from ClassMetaData) * @return */ <T extends DataObject> Set<URI> queryByConstraint(Constraint constraint); }