package org.ovirt.engine.core.bll.storage;
import java.util.List;
import org.ovirt.engine.core.bll.InternalCommandAttribute;
import org.ovirt.engine.core.common.action.StoragePoolParametersBase;
import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
import org.ovirt.engine.core.common.businessentities.StorageDomainType;
import org.ovirt.engine.core.common.businessentities.StorageType;
import org.ovirt.engine.core.common.businessentities.storage_domains;
import org.ovirt.engine.core.common.businessentities.storage_server_connections;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
//VB & C# TO JAVA CONVERTER TODO TASK: Java annotations will not correspond to .NET attributes:
@InternalCommandAttribute
public abstract class ConnectHostToStoragePooServerCommandBase<T extends StoragePoolParametersBase> extends
StorageHandlingCommandBase<T> {
private List<storage_server_connections> _connections;
private java.util.ArrayList<storage_server_connections> _isoConnections;
private java.util.ArrayList<storage_server_connections> _exportConnections;
private StorageType _isoType = StorageType.NFS;
private StorageType _exportType = StorageType.NFS;
private boolean _needToConnectIso = false;
private boolean _needToConnectExport = false;
public ConnectHostToStoragePooServerCommandBase(T parameters) {
super(parameters);
}
protected boolean getNeedToConnectIso() {
return _needToConnectIso;
}
protected void setNeedToConnectIso(boolean value) {
_needToConnectIso = value;
}
protected boolean getNeedToConnectExport() {
return _needToConnectExport;
}
protected void setNeedToConnectExport(boolean value) {
_needToConnectExport = value;
}
protected List<storage_server_connections> getConnections() {
return _connections;
}
protected java.util.ArrayList<storage_server_connections> getIsoConnections() {
return _isoConnections;
}
protected java.util.ArrayList<storage_server_connections> getExportConnections() {
return _exportConnections;
}
protected StorageType getIsoType() {
return _isoType;
}
protected StorageType getExportType() {
return _exportType;
}
protected void InitConnectionList() {
java.util.ArrayList<storage_domains> isoDomains = GetStorageDomainsByStoragePoolId(StorageDomainType.ISO);
java.util.ArrayList<storage_domains> exportDomains =
GetStorageDomainsByStoragePoolId(StorageDomainType.ImportExport);
java.util.HashSet<storage_server_connections> connections = new java.util.HashSet<storage_server_connections>(
DbFacade.getInstance().getStorageServerConnectionDAO().getAllForStoragePool(getStoragePool().getId()));
if (isoDomains.size() != 0) {
_isoType = isoDomains.get(0).getstorage_type();
java.util.HashSet<storage_server_connections> isoConnections =
new java.util.HashSet<storage_server_connections>(
StorageHelperDirector.getInstance().getItem(getIsoType())
.GetStorageServerConnectionsByDomain(isoDomains.get(0).getStorageStaticData()));
if (_isoType != getStoragePool().getstorage_pool_type()) {
for (storage_server_connections connection : isoConnections) {
if (connections.contains(connection)) {
connections.remove(connection);
}
}
} else {
for (storage_server_connections connection : connections) {
if (isoConnections.contains(connection)) {
isoConnections.remove(connection);
}
}
}
_isoConnections = new java.util.ArrayList<storage_server_connections>(isoConnections);
setNeedToConnectIso(_isoConnections.size() > 0);
}
if (exportDomains.size() != 0) {
_exportType = exportDomains.get(0).getstorage_type();
java.util.HashSet<storage_server_connections> exportConnections =
new java.util.HashSet<storage_server_connections>(
StorageHelperDirector.getInstance().getItem(getExportType())
.GetStorageServerConnectionsByDomain(exportDomains.get(0).getStorageStaticData()));
if (_exportType != getStoragePool().getstorage_pool_type()) {
for (storage_server_connections connection : exportConnections) {
if (connections.contains(connection)) {
connections.remove(connection);
}
}
} else {
for (storage_server_connections connection : connections) {
if (exportConnections.contains(connection)) {
exportConnections.remove(connection);
}
}
}
_exportConnections = new java.util.ArrayList<storage_server_connections>(exportConnections);
setNeedToConnectExport(exportConnections.size() > 0);
}
_connections = new java.util.ArrayList<storage_server_connections>(connections);
}
protected java.util.ArrayList<storage_domains> GetStorageDomainsByStoragePoolId(StorageDomainType type) {
List<storage_domains> allDomains = DbFacade.getInstance().getStorageDomainDAO().getAllForStoragePool(
getStoragePool().getId());
java.util.ArrayList<storage_domains> domains = new java.util.ArrayList<storage_domains>();
for (storage_domains s : allDomains) {
StorageDomainStatus status = s.getstatus();
if (s.getstorage_domain_type() == type
&& (StorageDomainStatus.Active == status || StorageDomainStatus.Unknown == status)) {
domains.add(s);
}
}
return domains;
}
}