package org.ovirt.engine.core.common.action;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
import org.ovirt.engine.core.common.asynctasks.EndedTaskInfo;
import org.ovirt.engine.core.common.asynctasks.IEndedTaskVisitor;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.common.businessentities.DiskImageBase;
import org.ovirt.engine.core.common.businessentities.ImageOperation;
import org.ovirt.engine.core.common.businessentities.NetworkBootProtocol;
import org.ovirt.engine.core.common.businessentities.VolumeFormat;
import org.ovirt.engine.core.common.queries.RegisterQueryParameters;
import org.ovirt.engine.core.common.users.VdcUser;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.StringHelper;
import org.ovirt.engine.core.compat.TransactionScopeOption;
@XmlSeeAlso({ VdsActionParameters.class, AddVdsActionParameters.class,
VdsOperationActionParameters.class, UpdateVdsActionParameters.class,
MaintananceNumberOfVdssParameters.class, AddVmTemplateParameters.class,
UpdateVmTemplateParameters.class, VmTemplateParametersBase.class,
VmPoolParametersBase.class, AddVmToPoolParameters.class, VmPoolOperationParameters.class,
AddVmPoolWithVmsParameters.class, RemoveVmFromPoolParameters.class,
VmPoolSimpleUserParameters.class, DetachUserFromTimeLeasedPoolParameters.class,
UpdateUserVmPoolParameters.class, VmPoolUserParameters.class,
AttachUserToTimeLeasedPoolParameters.class, TagsActionParametersBase.class,
TagsOperationParameters.class, MoveTagParameters.class, AttachEntityToTagParameters.class,
AttachVdsToTagParameters.class, TagsVmMapParameters.class, AdElementParametersBase.class,
AdGroupElementParametersBase.class, VmToAdGroupParameters.class,
VmToAdElementParameters.class, VmPoolToAdElementParameters.class,
VmPoolToAdGroupParameters.class, DetachAdGroupFromTimeLeasedPoolParameters.class,
ADElementTimeLeasedVmPoolParametersBase.class,
AttachAdGroupTimeLeasedPoolCommandParameters.class, SetAdGroupRoleParameters.class,
VmOperationParameterBase.class, RemoveVmFromImportExportParamenters.class,
ShutdownVmParameters.class, StopVmParameters.class, RunVmParams.class, RunVmOnceParams.class,
LogoffVmParameters.class, ChangeDiskCommandParameters.class,
MonitorCommandParameters.class, SetVmTicketParameters.class,
VmManagementParametersBase.class, AddVmFromTemplateParameters.class,
AddVmFromScratchParameters.class, AddVmAndAttachToUserParameters.class,
ExportVmParameters.class, ExportVmTemplateParameters.class,
VmTemplateImportExportParameters.class, AddVMFromImportCandidateParameters.class,
AddVmTemplateFromImportParameters.class, VmToUserParameters.class,
SetUserRoleParameters.class, LoginUserParameters.class, LogoutUserParameters.class,
BookmarksParametersBase.class, BookmarksOperationParameters.class,
VdsGroupParametersBase.class, VdsGroupOperationParameters.class,
VdsShutdownParameters.class, CreateAllSnapshotsFromVmParameters.class,
ImagesActionsParametersBase.class, ImagesContainterParametersBase.class,
MergeSnapshotParamenters.class, RemoveImageParameters.class,
CreateImageTemplateParameters.class, AddImageFromScratchParameters.class,
AddImageFromImportParameters.class, CreateSnapshotFromTemplateParameters.class,
PowerClientMigrateOnConnectCheckParameters.class, ChangeUserPasswordParameters.class,
SetDedicatedVmParameters.class, RegisterQueryParameters.class, InstallVdsParameters.class,
ApproveVdsParameters.class, PermissionsOperationsParametes.class, RolesParameterBase.class,
RolesOperationsParameters.class, RolesActionMapParameters.class,
ActionGroupsToRoleParameter.class, RoleWithActionGroupsParameters.class,
CreateComputerAccountParameters.class, StoragePoolParametersBase.class,
StoragePoolManagementParameter.class, StoragePoolWithStoragesParameter.class,
StorageDomainParametersBase.class, StorageDomainPoolParametersBase.class,
DetachStorageDomainFromPoolParameters.class, StorageDomainManagementParameter.class,
StorageServerConnectionParametersBase.class, AttachNetworkToVdsParameters.class,
UpdateNetworkToVdsParameters.class, AddBondParameters.class, RemoveBondParameters.class,
AddNetworkStoragePoolParameters.class, AttachNetworkToVdsGroupParameter.class,
DisplayNetworkToVdsGroupParameters.class, AddVmInterfaceParameters.class,
AddVmTemplateInterfaceParameters.class, RemoveVmInterfaceParameters.class,
RemoveVmTemplateInterfaceParameters.class,
VdsClusterParameters.class, AddSANStorageDomainParameters.class,
TryBackToAllSnapshotsOfVmParameters.class, RestoreAllSnapshotsParameters.class,
AddDiskToVmParameters.class, RemoveDisksFromVmParameters.class,
MoveOrCopyImageGroupParameters.class, MoveOrCopyParameters.class, MoveVmParameters.class,
ImportVmParameters.class, ImprotVmTemplateParameters.class,
EventSubscriptionParametesBase.class, UpdateVmDiskParameters.class, DiskImage.class,
DiskImageBase.class, ExtendSANStorageDomainParameters.class,
MigrateVmToServerParameters.class, FenceVdsActionParameters.class,
SetStoragePoolStatusParameters.class,
SetConfigurationValueParametes.class,
VdcActionType.class,
AddVmAndAttachToPoolParameters.class,
MaintananceVdsParameters.class,
// java.util.ArrayList<VdcActionType>.class,
HibernateVmParameters.class, NetworkBootProtocol.class, RemoveVmParameters.class,
CreateCloneOfTemplateParameters.class, MoveMultipleImageGroupsParameters.class,
FenceVdsManualyParameters.class, VolumeFormat.class, ImageOperation.class,
RemoveStorageDomainParameters.class, RecoveryStoragePoolParameters.class, AddUserParameters.class,
ChangeVDSClusterParameters.class, ChangeVMClusterParameters.class, SetupNetworksParameters.class })
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "VdcActionParametersBase")
public class VdcActionParametersBase implements java.io.Serializable {
private static final long serialVersionUID = 3436680315595922758L;
public VdcActionParametersBase() {
// _sessionId = string.Empty;
_shouldBeLogged = true;
_transctionOption = TransactionScopeOption.Required;
setTaskGroupSuccess(true);
/**
* Patch for web commands
*/
/*
* VITALY? if (HttpContext.Current != null) { setHttpSessionId("JTODO: HttpContext.Current.Session.SessionID");
* //ParametersCurrentUser = HttpContext.Current.Session["VdcUser"] as VdcUser; }
*/
_taskStartTime = System.currentTimeMillis();
setParentCommand(VdcActionType.Unknown);
}
private transient String _sessionId;
private boolean _shouldBeLogged;
@XmlElement(name = "SessionId")
public String getSessionId() {
if (StringHelper.isNullOrEmpty(_sessionId)) {
if (getHttpSessionId() != null) {
_sessionId = getHttpSessionId();
} else {
_sessionId = "";
}
}
return _sessionId;
}
public void setSessionId(String value) {
_sessionId = value;
}
@XmlElement(name = "HttpSessionId")
private String privateHttpSessionId;
public String getHttpSessionId() {
return privateHttpSessionId;
}
private void setHttpSessionId(String value) {
privateHttpSessionId = value;
}
@XmlElement(name = "ParametersCurrentUser")
private VdcUser privateParametersCurrentUser;
public VdcUser getParametersCurrentUser() {
return privateParametersCurrentUser;
}
public void setParametersCurrentUser(VdcUser value) {
privateParametersCurrentUser = value;
}
public boolean getShouldBeLogged() {
return _shouldBeLogged;
}
public void setShouldBeLogged(boolean value) {
_shouldBeLogged = value;
}
private TransactionScopeOption _transctionOption;
public TransactionScopeOption getTransactionScopeOption() {
return _transctionOption;
}
public void setTransactionScopeOption(TransactionScopeOption value) {
_transctionOption = value;
}
/**
* Indicates if the command should use the compensation mechanism or not.
*/
private boolean compensationEnabled = false;
/**
* @return the compensationEnabled
*/
public boolean isCompensationEnabled() {
return compensationEnabled;
}
/**
* @param compensationEnabled the compensationEnabled to set
*/
public void setCompensationEnabled(boolean compensationEnabled) {
this.compensationEnabled = compensationEnabled;
}
@XmlElement(name = "ParentCommand")
private VdcActionType privateParentCommand = VdcActionType.forValue(0);
private transient VdcActionParametersBase parentParameters;
public VdcActionType getParentCommand() {
return privateParentCommand;
}
public void setParentCommand(VdcActionType value) {
privateParentCommand = value;
}
@XmlTransient
public VdcActionParametersBase getParentParameters() {
return parentParameters;
}
public void setParentParemeters (VdcActionParametersBase parameters) {
parentParameters = parameters;
}
// this flag marks if the command runned with MultipleAction for
// ProcessExceptionToClient
@XmlElement(name = "MultipleAction")
private boolean privateMultipleAction;
public boolean getMultipleAction() {
return privateMultipleAction;
}
public void setMultipleAction(boolean value) {
privateMultipleAction = value;
}
private java.util.ArrayList<VdcActionParametersBase> _imagesParameters;
public java.util.ArrayList<VdcActionParametersBase> getImagesParameters() {
if (_imagesParameters == null) {
_imagesParameters = new java.util.ArrayList<VdcActionParametersBase>();
}
return _imagesParameters;
}
public void setImagesParameters(java.util.ArrayList<VdcActionParametersBase> value) {
_imagesParameters = value;
}
private boolean privateTaskGroupSuccess;
public boolean getTaskGroupSuccess() {
return privateTaskGroupSuccess;
}
public void setTaskGroupSuccess(boolean value) {
privateTaskGroupSuccess = value;
}
public boolean Accept(EndedTaskInfo taskInfo, IEndedTaskVisitor visitor) {
boolean retVal = visitor.Visit(taskInfo, this);
if (!retVal) {
for (VdcActionParametersBase parameters : getImagesParameters()) {
retVal = parameters.Accept(taskInfo, visitor);
if (retVal) {
break;
}
}
}
return retVal;
}
private Object privateEntityId;
public Object getEntityId() {
return privateEntityId;
}
public void setEntityId(Object value) {
privateEntityId = value;
}
// C# TO JAVA CONVERTER TODO TASK: Java annotations will not correspond to
// .NET attributes:
@XmlElement(name = "TaskStartTime")
private long _taskStartTime;
public long getTaskStartTime() {
return _taskStartTime;
}
public void setTaskStartTime(long value) {
_taskStartTime = value;
}
@XmlElement
private java.util.ArrayList<Guid> privateTaskIds;
public java.util.ArrayList<Guid> getTaskIds() {
return privateTaskIds;
}
public void setTaskIds(java.util.ArrayList<Guid> value) {
privateTaskIds = value;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((_imagesParameters == null) ? 0 : _imagesParameters.hashCode());
result = prime * result + (_shouldBeLogged ? 1231 : 1237);
result = prime * result + (int) (_taskStartTime ^ (_taskStartTime >>> 32));
result = prime * result + ((_transctionOption == null) ? 0 : _transctionOption.hashCode());
result = prime * result + ((privateEntityId == null) ? 0 : privateEntityId.hashCode());
result = prime * result + ((privateHttpSessionId == null) ? 0 : privateHttpSessionId.hashCode());
result = prime * result + (privateMultipleAction ? 1231 : 1237);
result =
prime * result + ((privateParametersCurrentUser == null) ? 0 : privateParametersCurrentUser.hashCode());
result = prime * result + ((privateParentCommand == null) ? 0 : privateParentCommand.hashCode());
result = prime * result + (privateTaskGroupSuccess ? 1231 : 1237);
result = prime * result + ((privateTaskIds == null) ? 0 : privateTaskIds.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
VdcActionParametersBase other = (VdcActionParametersBase) obj;
if (_imagesParameters == null) {
if (other._imagesParameters != null)
return false;
} else if (!_imagesParameters.equals(other._imagesParameters))
return false;
if (_shouldBeLogged != other._shouldBeLogged)
return false;
if (_taskStartTime != other._taskStartTime)
return false;
if (_transctionOption != other._transctionOption)
return false;
if (privateEntityId == null) {
if (other.privateEntityId != null)
return false;
} else if (!privateEntityId.equals(other.privateEntityId))
return false;
if (privateHttpSessionId == null) {
if (other.privateHttpSessionId != null)
return false;
} else if (!privateHttpSessionId.equals(other.privateHttpSessionId))
return false;
if (privateMultipleAction != other.privateMultipleAction)
return false;
if (privateParametersCurrentUser == null) {
if (other.privateParametersCurrentUser != null)
return false;
} else if (!privateParametersCurrentUser.equals(other.privateParametersCurrentUser))
return false;
if (privateParentCommand != other.privateParentCommand)
return false;
if (privateTaskGroupSuccess != other.privateTaskGroupSuccess)
return false;
if (privateTaskIds == null) {
if (other.privateTaskIds != null)
return false;
} else if (!privateTaskIds.equals(other.privateTaskIds))
return false;
return true;
}
}