package org.ovirt.engine.ui.uicommon.models.datacenters;
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.uicommon.validation.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.ui.uicommon.*;
import org.ovirt.engine.ui.uicommon.models.*;
@SuppressWarnings("unused")
public class DataCenterModel extends Model
{
private NGuid privateDataCenterId;
public NGuid getDataCenterId()
{
return privateDataCenterId;
}
public void setDataCenterId(NGuid value)
{
privateDataCenterId = value;
}
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 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 privateStorageTypeList;
public ListModel getStorageTypeList()
{
return privateStorageTypeList;
}
public void setStorageTypeList(ListModel value)
{
privateStorageTypeList = value;
}
private ListModel privateVersion;
public ListModel getVersion()
{
return privateVersion;
}
public void setVersion(ListModel value)
{
privateVersion = value;
}
public DataCenterModel()
{
setName(new EntityModel());
setDescription(new EntityModel());
setVersion(new ListModel());
setStorageTypeList(new ListModel());
getStorageTypeList().getSelectedItemChangedEvent().addListener(this);
getStorageTypeList().setItems(DataProvider.GetStoragePoolTypeList());
}
@Override
public void eventRaised(Event ev, Object sender, EventArgs args)
{
super.eventRaised(ev, sender, args);
if (ev.equals(ListModel.SelectedItemChangedEventDefinition) && sender == getStorageTypeList())
{
StorageType_SelectedItemChanged();
}
}
private void StorageType_SelectedItemChanged()
{
StorageType type = (StorageType)getStorageTypeList().getSelectedItem();
//Rebuild version items.
java.util.ArrayList<Version> list = new java.util.ArrayList<Version>();
for (Version item : DataProvider.GetDataCenterVersions(getDataCenterId()))
{
if (DataProvider.IsVersionMatchStorageType(item, type))
{
list.add(item);
}
}
if(type == StorageType.LOCALFS)
{
java.util.ArrayList<Version> tempList = new java.util.ArrayList<Version>();
for (Version version : list)
{
Version version3_0 = new Version(3, 0);
if(version.compareTo(version3_0) >= 0)
{
tempList.add(version);
}
}
list = tempList;
}
Version selectedVersion = null;
if (getVersion().getSelectedItem() != null)
{
selectedVersion = (Version)getVersion().getSelectedItem();
boolean hasSelectedVersion = false;
for (Version version : list)
{
if (selectedVersion.equals(version))
{
selectedVersion = version;
hasSelectedVersion = true;
break;
}
}
if (!hasSelectedVersion)
{
selectedVersion = null;
}
}
getVersion().setItems(list);
if (selectedVersion == null)
{
getVersion().setSelectedItem(Linq.SelectHighestVersion(list));
}
else
{
getVersion().setSelectedItem(selectedVersion);
}
}
public boolean Validate()
{
int nameMaxLength = DataProvider.GetDataCenterMaxNameLength();
String nameRegex = StringFormat.format("^[A-Za-z0-9_-]{1,%1$s}$", nameMaxLength);
String nameMessage = StringFormat.format("Name can contain only 'A-Z', 'a-z', '0-9', '_' or '-' characters, max length: %1$s", nameMaxLength);
RegexValidation tempVar = new RegexValidation();
tempVar.setExpression(nameRegex);
tempVar.setMessage(nameMessage);
getName().ValidateEntity(new IValidation[] { new NotEmptyValidation(), tempVar });
getStorageTypeList().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() });
getVersion().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() });
String name = (String)getName().getEntity();
if (name.compareToIgnoreCase(getOriginalName()) != 0 && !DataProvider.IsDataCenterNameUnique(name))
{
getName().setIsValid(false);
getName().getInvalidityReasons().add("Name must be unique.");
}
return getName().getIsValid() && getDescription().getIsValid() && getStorageTypeList().getIsValid() && getVersion().getIsValid();
}
}