package org.ovirt.engine.core.bll.storage;
import java.util.Collections;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.core.bll.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.action.*;
import org.ovirt.engine.core.dal.dbbroker.*;
import org.ovirt.engine.core.utils.threadpool.ThreadPoolUtil;
public class AttachStorageDomainsMultipleActionRunner extends SortedMultipleActionsRunnerBase {
public AttachStorageDomainsMultipleActionRunner(VdcActionType actionType,
java.util.ArrayList<VdcActionParametersBase> parameters, boolean isInternal) {
super(actionType, parameters, isInternal);
}
@Override
public java.util.ArrayList<VdcReturnValueBase> Execute() {
if (getParameters().size() > 0) {
storage_pool pool = DbFacade.getInstance().getStoragePoolDAO().get(
((StorageDomainPoolParametersBase) getParameters().get(0)).getStoragePoolId());
if (pool.getstatus() == StoragePoolStatus.Uninitialized) {
java.util.ArrayList<Guid> storageDomainIds = new java.util.ArrayList<Guid>();
for (VdcActionParametersBase param : getParameters()) {
storageDomainIds.add(((StorageDomainPoolParametersBase) param).getStorageDomainId());
}
java.util.ArrayList<VdcActionParametersBase> parameters =
new java.util.ArrayList<VdcActionParametersBase>();
parameters.add(new StoragePoolWithStoragesParameter(pool, storageDomainIds, getParameters().get(0)
.getSessionId()));
if (isInternal) {
return Backend.getInstance().runInternalMultipleActions(VdcActionType.AddStoragePoolWithStorages,
parameters);
} else {
return Backend.getInstance().RunMultipleActions(VdcActionType.AddStoragePoolWithStorages,
parameters);
}
} else {
return super.Execute();
}
} else {
return super.Execute();
}
}
@Override
protected void SortCommands() {
Collections.sort(getCommands(), new StorageDomainsByTypeComparer());
}
@Override
protected void RunCommands() {
SortCommands();
for (final CommandBase<?> command : getCommands()) {
ThreadPoolUtil.execute(new Runnable() {
@Override
public void run() {
if (command.getReturnValue().getCanDoAction()) {
command.ExecuteAction();
}
}
});
}
}
}