package org.ovirt.engine.ui.uicommonweb.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.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
import org.ovirt.engine.core.common.*;
import org.ovirt.engine.ui.uicommonweb.validation.*;
import org.ovirt.engine.ui.uicompat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.ui.uicommonweb.dataprovider.*;
import org.ovirt.engine.ui.uicommonweb.*;
import org.ovirt.engine.ui.uicommonweb.models.*;
@SuppressWarnings("unused")
public class DataCenterModel extends Model
{
private storage_pool privateEntity;
public storage_pool getEntity()
{
return privateEntity;
}
public void setEntity(storage_pool value)
{
privateEntity = value;
}
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;
}
private int privateMaxNameLength;
public int getMaxNameLength()
{
return privateMaxNameLength;
}
public void setMaxNameLength(int value)
{
privateMaxNameLength = value;
}
public DataCenterModel()
{
setName(new EntityModel());
setDescription(new EntityModel());
setVersion(new ListModel());
setStorageTypeList(new ListModel());
getStorageTypeList().getSelectedItemChangedEvent().addListener(this);
getStorageTypeList().setItems(DataProvider.GetStoragePoolTypeList());
setMaxNameLength(1);
AsyncQuery _asyncQuery = new AsyncQuery();
_asyncQuery.setModel(this);
_asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result)
{
DataCenterModel dataCenterModel = (DataCenterModel)model;
dataCenterModel.setMaxNameLength((Integer)result);
}};
AsyncDataProvider.GetDataCenterMaxNameLength(_asyncQuery);
}
@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()
{
AsyncQuery _asyncQuery = new AsyncQuery();
_asyncQuery.setModel(this);
_asyncQuery.asyncCallback = new INewAsyncCallback() { public void OnSuccess(Object model, Object result)
{
DataCenterModel dataCenterModel = (DataCenterModel)model;
java.util.ArrayList<Version> versions = (java.util.ArrayList<Version>)result;
//Rebuild version items.
java.util.ArrayList<Version> list = new java.util.ArrayList<Version>();
StorageType type = (StorageType)dataCenterModel.getStorageTypeList().getSelectedItem();
for (Version item : versions)
{
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 (dataCenterModel.getVersion().getSelectedItem() != null)
{
selectedVersion = (Version)dataCenterModel.getVersion().getSelectedItem();
boolean hasSelectedVersion = false;
for (Version version : list)
{
if (selectedVersion.equals(version))
{
selectedVersion = version;
hasSelectedVersion = true;
break;
}
}
if (!hasSelectedVersion)
{
selectedVersion = null;
}
}
dataCenterModel.getVersion().setItems(list);
if (selectedVersion == null)
{
dataCenterModel.getVersion().setSelectedItem(Linq.SelectHighestVersion(list));
if (getEntity() != null)
{
InitVersion();
}
}
else
{
dataCenterModel.getVersion().setSelectedItem(selectedVersion);
}
}};
AsyncDataProvider.GetDataCenterVersions(_asyncQuery, getDataCenterId());
}
private boolean isVersionInit = false;
private void InitVersion()
{
if (!isVersionInit)
{
isVersionInit = true;
for (Object a : getVersion().getItems())
{
Version item = (Version)a;
if (Version.OpEquality(item, getEntity().getcompatibility_version()))
{
getVersion().setSelectedItem(item);
break;
}
}
}
}
public boolean Validate()
{
String nameRegex = StringFormat.format("^[A-Za-z0-9_-]{1,%1$s}$", getMaxNameLength());
String nameMessage = StringFormat.format("Name can contain only 'A-Z', 'a-z', '0-9', '_' or '-' characters, max length: %1$s", getMaxNameLength());
LengthValidation tempVar = new LengthValidation();
tempVar.setMaxLength(40);
RegexValidation tempVar2 = new RegexValidation();
tempVar2.setExpression(nameRegex);
tempVar2.setMessage(nameMessage);
getName().ValidateEntity(new IValidation[] { new NotEmptyValidation(), tempVar, tempVar2 });
getStorageTypeList().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() });
getVersion().ValidateSelectedItem(new IValidation[] { new NotEmptyValidation() });
//TODO: add this code to async validate.
//string name = (string)Name.Entity;
//if (String.Compare(name, OriginalName, true) != 0 && !DataProvider.IsDataCenterNameUnique(name))
//{
// Name.IsValid = false;
// Name.InvalidityReasons.Add("Name must be unique.");
//}
return getName().getIsValid() && getDescription().getIsValid() && getStorageTypeList().getIsValid() && getVersion().getIsValid();
}
}