/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.db.joiner;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.emc.storageos.db.client.DbClient;
import com.emc.storageos.db.client.constraint.Constraint;
import com.emc.storageos.db.client.model.DataObject;
/**
* This class an implementation of the QueryEngine interface which represents
* the low level DB interfaces (here DbClient).
* Joiner will invoke the database through this class.
*
* @author watson
*
*/
class DbClientQueryEngine implements QueryEngine {
private DbClient _dbClient;
DbClientQueryEngine(DbClient dbClient) {
this._dbClient = dbClient;
}
@Override
public <T extends DataObject> Set<URI> queryByType(Class<T> clazz) {
HashSet<URI> returnSet = new HashSet<URI>();
List<URI> uris = _dbClient.queryByType(clazz, true);
returnSet.addAll(uris);
return returnSet;
}
@Override
public <T extends DataObject> Iterator<T> queryIterObject(Class<T> clazz, Collection<URI> uris) {
Iterator<T> iter = _dbClient.queryIterativeObjects(clazz, new ArrayList(uris));
return iter;
}
@Override
public <T extends DataObject> T queryObject(Class<T> clazz, URI uri) {
return _dbClient.queryObject(clazz, uri);
}
/**
* Return the URIs matching a Constraint.
*
* @param constraint
* @return
*/
@Override
public <T extends DataObject> Set<URI> queryByConstraint(Constraint constraint) {
List<URI> uris = _dbClient.queryByConstraint(constraint);
Set<URI> uriSet = new HashSet<URI>();
uriSet.addAll(uris);
return uriSet;
}
}