private void trvUsuario_BeforeExpand(object sender, TreeViewCancelEventArgs e) { if (e.Node.Nodes[0].Tag != null) { if (e.Node.Nodes[0].Tag.ToString() == "FAKE") { string _NomeUser = e.Node.Parent.Text; TreeNode _Node = null; ArrayList _Retorno = null; string _NomeRole = ""; string _TipoObjRole = ""; int _Pos = -1; string _NomeProfile = ""; string _TipoProfile = ""; Cursor.Current = Cursors.WaitCursor; switch (e.Node.Nodes[0].Text) { #region case PROP case "PROP": switch (e.Node.Text) { case "Tablespaces": e.Node.Nodes.Clear(); _Retorno = _csOracle.ListaCotasTablespaceUser(_Username, _Password, _Database, _NomeUser); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); } e.Node.Expand(); break; case "Privilégios": e.Node.Nodes.Clear(); _Retorno = _csOracle.ListaPrivUser(_Username, _Password, _Database, _NomeUser); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); } e.Node.Expand(); break; case "Roles": e.Node.Nodes.Clear(); _Retorno = _csOracle.ListaRolesUser(_Username, _Password, _Database, _NomeUser); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); _Node = _Node.Nodes.Add("ROLE"); _Node.Tag = "FAKE"; } e.Node.Expand(); break; case "Grants": e.Node.Nodes.Clear(); _Retorno = _csOracle.ListaNoRolesGrantsUser(_Username, _Password, _Database, _NomeUser); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); } e.Node.Expand(); break; } break; #endregion #region case ROLE case "ROLE": _NomeRole = e.Node.Text; _Pos = _NomeRole.IndexOf(":"); if (_Pos <= -1) { Cursor.Current = Cursors.Default; MessageBox.Show("Problemas para identificar o nome da role " + _NomeRole, "Pesquisar propriedades do Usuário", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { _NomeRole = _NomeRole.Substring(0, _Pos); } e.Node.Nodes.Clear(); _Retorno = _csOracle.ListaPrivSysRole(_Username, _Password, _Database, _NomeRole); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); } _Retorno = _csOracle.ListaTiposObjRole(_Username, _Password, _Database, _NomeRole); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); _Node = _Node.Nodes.Add("OBJ ROLE"); _Node.Tag = "FAKE"; } e.Node.Expand(); break; #endregion #region case OBJ ROLE case "OBJ ROLE": _NomeRole = e.Node.Parent.Text; _TipoObjRole = e.Node.Text; _Pos = _NomeRole.IndexOf(":"); if (_Pos <= -1) { Cursor.Current = Cursors.Default; MessageBox.Show("Problemas para identificar o nome da role " + _NomeRole, "Pesquisar propriedades do Usuário", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { _NomeRole = _NomeRole.Substring(0, _Pos); } e.Node.Nodes.Clear(); _Retorno = _csOracle.ListaPrivRoleObj(_Username, _Password, _Database, _NomeRole, _TipoObjRole); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); } e.Node.Expand(); break; #endregion #region case PROFILE case "PROFILE": _NomeProfile = e.Node.Text; _Pos = _NomeProfile.IndexOf(":"); if (_Pos <= -1) { Cursor.Current = Cursors.Default; MessageBox.Show("Problemas para identificar o nome do PROFILE " + _NomeProfile, "Pesquisar propriedades do Usuário", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { _NomeProfile = _NomeProfile.Substring(_Pos + 1); _NomeProfile = _NomeProfile.Trim().ToUpper(); } e.Node.Nodes.Clear(); TreeNode _NodeKernel = null; TreeNode _NodePassword = null; _NodeKernel = e.Node.Nodes.Add("KERNEL"); _NodePassword = e.Node.Nodes.Add("PASSWORD"); _Retorno = _csOracle.ListaDetalheProfile(_Username, _Password, _Database, _NomeProfile); for (int i = 0; i < _Retorno.Count; i++) { _Pos = _Retorno[i].ToString().IndexOf("."); _TipoProfile = _Retorno[i].ToString().Substring(0, _Pos); if (_TipoProfile == "KERNEL") { _Node = _NodeKernel.Nodes.Add(_Retorno[i].ToString().Substring(_Pos + 1)); } else { _Node = _NodePassword.Nodes.Add(_Retorno[i].ToString().Substring(_Pos + 1)); } } e.Node.Expand(); _NodeKernel.Expand(); _NodePassword.Expand(); break; #endregion #region case HORACIUS case "HORACIUS": e.Node.Nodes.Clear(); _Retorno = _csOracle.ListaPerfilHoracius(_Username, _Password, _Database, _NomeUser); for (int i = 0; i < _Retorno.Count; i++) { _Node = e.Node.Nodes.Add(_Retorno[i].ToString()); } e.Node.Expand(); break; #endregion } Cursor.Current = Cursors.Default; } } }