package org.ovirt.engine.core.bll.storage;
import java.util.List;
import org.ovirt.engine.core.bll.Backend;
import org.ovirt.engine.core.bll.QueriesCommandBase;
import org.ovirt.engine.core.common.businessentities.StorageType;
import org.ovirt.engine.core.common.businessentities.storage_domains;
import org.ovirt.engine.core.common.queries.VdsIdParametersBase;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
import org.ovirt.engine.core.utils.linq.LinqUtils;
import org.ovirt.engine.core.utils.linq.Predicate;
public class GetVgListQuery<P extends VdsIdParametersBase> extends QueriesCommandBase<P> {
public GetVgListQuery(P parameters) {
super(parameters);
}
@Override
protected void executeQueryCommand() {
java.util.ArrayList<storage_domains> vgsFromVds = (java.util.ArrayList<storage_domains>) (Backend.getInstance()
.getResourceManager().RunVdsCommand(VDSCommandType.GetVGList,
new VdsIdVDSCommandParametersBase(getParameters().getVdsId())))
.getReturnValue();
// LINQ DbFacade.Instance.GetAllFromStorageDomains().Where(a =>
// a.storage_type == StorageType.ISCSI || a.storage_type ==
// StorageType.FCP).ToList();
List<storage_domains> vgsFromDb = LinqUtils.filter(DbFacade.getInstance().getStorageDomainDAO().getAll(),
new Predicate<storage_domains>() {
@Override
public boolean eval(storage_domains storageDomain) {
return storageDomain.getstorage_type() == StorageType.ISCSI
|| storageDomain.getstorage_type() == StorageType.FCP;
}
});
java.util.HashSet<String> vgIdsFromDb = new java.util.HashSet<String>();
for (storage_domains domain : vgsFromDb) {
vgIdsFromDb.add(domain.getstorage());
}
java.util.ArrayList<storage_domains> returnValue = new java.util.ArrayList<storage_domains>();
for (storage_domains domain : vgsFromVds) {
if (domain.getid().equals(Guid.Empty) && !vgIdsFromDb.contains(domain.getstorage())) {
returnValue.add(domain);
}
}
getQueryReturnValue().setReturnValue(returnValue);
}
}