package org.ovirt.engine.ui.uicommonweb.models.configure.roles_ui;
import java.util.ArrayList;
import org.ovirt.engine.ui.uicommonweb.UICommand;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import org.ovirt.engine.ui.uicommonweb.models.Model;
import org.ovirt.engine.ui.uicommonweb.models.common.SelectionTreeNodeModel;
import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
import org.ovirt.engine.ui.uicommonweb.validation.LengthValidation;
import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
import org.ovirt.engine.ui.uicommonweb.validation.RegexValidation;
import org.ovirt.engine.ui.uicompat.ConstantsManager;
import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
public class RoleModel extends Model {
private UICommand privateExpandAllCommand;
public UICommand getExpandAllCommand() {
return privateExpandAllCommand;
}
private void setExpandAllCommand(UICommand value) {
privateExpandAllCommand = value;
}
private UICommand privateCollapseAllCommand;
public UICommand getCollapseAllCommand() {
return privateCollapseAllCommand;
}
private void setCollapseAllCommand(UICommand value) {
privateCollapseAllCommand = value;
}
private boolean privateIsNew;
public boolean getIsNew() {
return privateIsNew;
}
public void setIsNew(boolean value) {
privateIsNew = value;
}
private EntityModel<Boolean> privateIsAdminRole;
public EntityModel<Boolean> getIsAdminRole() {
return privateIsAdminRole;
}
public void setIsAdminRole(EntityModel<Boolean> value) {
privateIsAdminRole = value;
}
private EntityModel<String> privateName;
public EntityModel<String> getName() {
return privateName;
}
private void setName(EntityModel<String> value) {
privateName = value;
}
private EntityModel<String> privateDescription;
public EntityModel<String> getDescription() {
return privateDescription;
}
private void setDescription(EntityModel<String> value) {
privateDescription = value;
}
private ArrayList<SelectionTreeNodeModel> permissionGroupModels;
public ArrayList<SelectionTreeNodeModel> getPermissionGroupModels() {
return permissionGroupModels;
}
public void setPermissionGroupModels(ArrayList<SelectionTreeNodeModel> value) {
if (permissionGroupModels != value) {
permissionGroupModels = value;
onPropertyChanged(new PropertyChangedEventArgs("PermissionGroupModels")); //$NON-NLS-1$
}
}
public RoleModel() {
setExpandAllCommand(new UICommand("ExpandAll", this)); //$NON-NLS-1$
setCollapseAllCommand(new UICommand("CollapseAll", this)); //$NON-NLS-1$
setName(new EntityModel<String>());
setDescription(new EntityModel<String>());
setIsAdminRole(new EntityModel<Boolean>());
}
public void expandAll() {
// PermissionGroupModels.Each(a => a.IsExpanded = true );
for (SelectionTreeNodeModel stm : getPermissionGroupModels()) {
stm.setIsExpanded(true);
for (SelectionTreeNodeModel stmChild : stm.getChildren()) {
stmChild.setIsExpanded(true);
}
}
}
public void collapseAll() {
// PermissionGroupModels.Each(a => a.IsExpanded = false);
for (SelectionTreeNodeModel stm : getPermissionGroupModels()) {
stm.setIsExpanded(false);
for (SelectionTreeNodeModel stmChild : stm.getChildren()) {
stmChild.setIsExpanded(false);
}
}
}
public boolean validate() {
RegexValidation tempVar = new RegexValidation();
tempVar.setExpression("^\\w.{0,125}$"); //$NON-NLS-1$
tempVar.setMessage(ConstantsManager.getInstance().getConstants().nameMustBeUpToAndStartWithMsg());
RegexValidation tempVar2 = new RegexValidation();
tempVar2.setExpression("^[A-Za-z0-9_-]+$"); //$NON-NLS-1$
tempVar2.setMessage(ConstantsManager.getInstance().getConstants().asciiNameValidationMsg());
getName().validateEntity(new IValidation[] { new NotEmptyValidation(), tempVar, tempVar2 });
LengthValidation lengthValidation = new LengthValidation();
lengthValidation.setMaxLength(4000);
getDescription().validateEntity(new IValidation[] { lengthValidation });
return getName().getIsValid() && getDescription().getIsValid();
}
@Override
public void executeCommand(UICommand command) {
super.executeCommand(command);
if (command == getExpandAllCommand()) {
expandAll();
} else if (command == getCollapseAllCommand()) {
collapseAll();
}
}
}