package org.ovirt.engine.ui.uicommon.models.clusters;
import java.util.Collections;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.common.vdscommands.*;
import org.ovirt.engine.core.common.queries.*;
import org.ovirt.engine.core.common.action.*;
import org.ovirt.engine.ui.frontend.*;
import org.ovirt.engine.ui.uicommon.*;
import org.ovirt.engine.ui.uicommon.models.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.ui.uicommon.validation.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.ui.uicommon.*;
import org.ovirt.engine.ui.uicommon.models.*;
@SuppressWarnings("unused")
public class ClusterModel extends Model
{
private boolean privateIsNew;
public boolean getIsNew()
{
return privateIsNew;
}
public void setIsNew(boolean value)
{
privateIsNew = value;
}
private String privateOriginalName;
public String getOriginalName()
{
return privateOriginalName;
}
public void setOriginalName(String value)
{
privateOriginalName = value;
}
private NGuid privateClusterId;
public NGuid getClusterId()
{
return privateClusterId;
}
public void setClusterId(NGuid value)
{
privateClusterId = value;
}
private EntityModel privateName;
public EntityModel getName()
{
return privateName;
}
public void setName(EntityModel value)
{
privateName = value;
}
private EntityModel privateDescription;
public EntityModel getDescription()
{
return privateDescription;
}
public void setDescription(EntityModel value)
{
privateDescription = value;
}
private ListModel privateDataCenter;
public ListModel getDataCenter()
{
return privateDataCenter;
}
public void setDataCenter(ListModel value)
{
privateDataCenter = value;
}
private ListModel privateCPU;
public ListModel getCPU()
{
return privateCPU;
}
public void setCPU(ListModel value)
{
privateCPU = value;
}
private ListModel privateVersion;
public ListModel getVersion()
{
return privateVersion;
}
public void setVersion(ListModel value)
{
privateVersion = value;
}
private EntityModel privateOptimizationNone;
public EntityModel getOptimizationNone()
{
return privateOptimizationNone;
}
public void setOptimizationNone(EntityModel value)
{
privateOptimizationNone = value;
}
private EntityModel privateOptimizationForServer;
public EntityModel getOptimizationForServer()
{
return privateOptimizationForServer;
}
public void setOptimizationForServer(EntityModel value)
{
privateOptimizationForServer = value;
}
private EntityModel privateOptimizationForDesktop;
public EntityModel getOptimizationForDesktop()
{
return privateOptimizationForDesktop;
}
public void setOptimizationForDesktop(EntityModel value)
{
privateOptimizationForDesktop = value;
}
private EntityModel privateOptimizationCustom;
public EntityModel getOptimizationCustom()
{
return privateOptimizationCustom;
}
public void setOptimizationCustom(EntityModel value)
{
privateOptimizationCustom = value;
}
private boolean isGeneralTabValid;
public boolean getIsGeneralTabValid()
{
return isGeneralTabValid;
}
public void setIsGeneralTabValid(boolean value)
{
if (isGeneralTabValid != value)
{
isGeneralTabValid = value;
OnPropertyChanged(new PropertyChangedEventArgs("IsGeneralTabValid"));
}
}
private MigrateOnErrorOptions migrateOnErrorOption = MigrateOnErrorOptions.values()[0];
public MigrateOnErrorOptions getMigrateOnErrorOption()
{
return migrateOnErrorOption;
}
public void setMigrateOnErrorOption(MigrateOnErrorOptions value)
{
if (migrateOnErrorOption != value)
{
migrateOnErrorOption = value;
OnPropertyChanged(new PropertyChangedEventArgs("MigrateOnErrorOption"));
}
}
private boolean privateisResiliencePolicyTabAvailable;
public boolean getisResiliencePolicyTabAvailable()
{
return privateisResiliencePolicyTabAvailable;
}
public void setisResiliencePolicyTabAvailable(boolean value)
{
privateisResiliencePolicyTabAvailable = value;
}
public boolean getIsResiliencePolicyTabAvailable()
{
return getisResiliencePolicyTabAvailable();
}
public void setIsResiliencePolicyTabAvailable(boolean value)
{
if (getisResiliencePolicyTabAvailable() != value)
{
setisResiliencePolicyTabAvailable(value);
OnPropertyChanged(new PropertyChangedEventArgs("IsResiliencePolicyTabAvailable"));
}
}
public int getMemoryOverCommit()
{
if (getOptimizationNone().getIsSelected())
{
return (Integer)getOptimizationNone().getEntity();
}
if (getOptimizationForServer().getIsSelected())
{
return (Integer)getOptimizationForServer().getEntity();
}
if (getOptimizationForDesktop().getIsSelected())
{
return (Integer)getOptimizationForDesktop().getEntity();
}
if (getOptimizationCustom().getIsSelected())
{
return (Integer)getOptimizationCustom().getEntity();
}
return DataProvider.GetClusterDefaultMemoryOverCommit();
}
public void setMemoryOverCommit(int value)
{
getOptimizationNone().setIsSelected(value == (Integer)getOptimizationNone().getEntity());
getOptimizationForServer().setIsSelected(value == (Integer)getOptimizationForServer().getEntity());
getOptimizationForDesktop().setIsSelected(value == (Integer)getOptimizationForDesktop().getEntity());
if (!getOptimizationNone().getIsSelected() && !getOptimizationForServer().getIsSelected() && !getOptimizationForDesktop().getIsSelected())
{
getOptimizationCustom().setIsAvailable(true);
getOptimizationCustom().setEntity(value);
getOptimizationCustom().setIsSelected(true);
}
}
public ClusterModel()
{
setName(new EntityModel());
setDescription(new EntityModel());
//Optimization methods.
int defaultOverCommit = DataProvider.GetClusterDefaultMemoryOverCommit();
int serverOverCommit = DataProvider.GetClusterServerMemoryOverCommit();
int desktopOverCommit = DataProvider.GetClusterDesktopMemoryOverCommit();
EntityModel tempVar = new EntityModel();
tempVar.setEntity(defaultOverCommit);
tempVar.setIsSelected(desktopOverCommit != defaultOverCommit && serverOverCommit != defaultOverCommit);
setOptimizationNone(tempVar);
EntityModel tempVar2 = new EntityModel();
tempVar2.setEntity(serverOverCommit);
tempVar2.setIsSelected(serverOverCommit == defaultOverCommit);
setOptimizationForServer(tempVar2);
EntityModel tempVar3 = new EntityModel();
tempVar3.setEntity(desktopOverCommit);
tempVar3.setIsSelected(desktopOverCommit == defaultOverCommit);
setOptimizationForDesktop(tempVar3);
EntityModel tempVar4 = new EntityModel();
tempVar4.setIsAvailable(false);
setOptimizationCustom(tempVar4);
setDataCenter(new ListModel());
getDataCenter().getSelectedItemChangedEvent().addListener(this);
setCPU(new ListModel());
setVersion(new ListModel());
getVersion().getSelectedItemChangedEvent().addListener(this);
setMigrateOnErrorOption(MigrateOnErrorOptions.YES);
setIsGeneralTabValid(true);
setIsResiliencePolicyTabAvailable(true);
}
@Override
public void eventRaised(Event ev, Object sender, EventArgs args)
{
super.eventRaised(ev, sender, args);
if (ev.equals(ListModel.SelectedItemChangedEventDefinition))
{
if (sender == getDataCenter())
{
StoragePool_SelectedItemChanged(args);
}
else if (sender == getVersion())
{
Version_SelectedItemChanged(args);
}
}
}
private void Version_SelectedItemChanged(EventArgs e)
{
Version version;
if (getVersion().getSelectedItem() != null)
{
version = (Version)getVersion().getSelectedItem();
}
else
{
version = ((storage_pool)getDataCenter().getSelectedItem()).getcompatibility_version();
}
java.util.ArrayList<ServerCpu> cpus = DataProvider.GetCPUList(version);
ServerCpu oldSelectedCpu = (ServerCpu)getCPU().getSelectedItem();
getCPU().setItems(cpus);
if (oldSelectedCpu != null)
{
getCPU().setSelectedItem(Linq.FirstOrDefault(cpus, new Linq.ServerCpuPredicate(oldSelectedCpu.getCpuName())));
}
if (getCPU().getSelectedItem() == null)
{
getCPU().setSelectedItem(Linq.FirstOrDefault(cpus));
}
}
private void StoragePool_SelectedItemChanged(EventArgs e)
{
// possible versions for new cluster (when editing cluster, this event won't occur)
// are actually the possible versions for the data-center that the cluster is going
// to be attached to.
storage_pool selectedDataCenter = (storage_pool)getDataCenter().getSelectedItem();
if (selectedDataCenter.getstorage_pool_type() == StorageType.LOCALFS)
{
setIsResiliencePolicyTabAvailable(false);
}
else
{
setIsResiliencePolicyTabAvailable(true);
}
java.util.ArrayList<Version> versions = DataProvider.GetDataCenterClusterVersions(selectedDataCenter == null ? null : (NGuid)(selectedDataCenter.getId()));
getVersion().setItems(versions);
if (!versions.contains((Version)getVersion().getSelectedItem()))
{
if (versions.contains(selectedDataCenter.getcompatibility_version()))
{
getVersion().setSelectedItem((Version)selectedDataCenter.getcompatibility_version());
}
else
{
getVersion().setSelectedItem(Linq.SelectHighestVersion(versions));
}
}
}
public boolean Validate()
{
return Validate(true);
}
public boolean Validate(boolean validateStoragePool)
{
RegexValidation tempVar = new RegexValidation();
tempVar.setExpression("^[A-Za-z0-9_-]+$");
tempVar.setMessage("Name can contain only 'A-Z', 'a-z', '0-9', '_' or '-' characters.");
getName().ValidateEntity(new IValidation[] { new NotEmptyValidation(), new NoSpacesValidation(), tempVar });
if (validateStoragePool)
{
getDataCenter().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() });
}
getCPU().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() });
getVersion().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() });
String name = (String)getName().getEntity();
//Check name unicitate.
if (name.compareToIgnoreCase(getOriginalName()) != 0 && !DataProvider.IsClusterNameUnique(name))
{
getName().setIsValid(false);
getName().getInvalidityReasons().add("Name must be unique.");
}
setIsGeneralTabValid(getName().getIsValid() && getDataCenter().getIsValid() && getCPU().getIsValid() && getVersion().getIsValid());
return getName().getIsValid() && getDataCenter().getIsValid() && getCPU().getIsValid() && getVersion().getIsValid();
}
}