// Add JMU /// <summary> /// Recursive Look for the value the last Node. Does NOT change the database. /// </summary> /// <param name="Parent_node_id"></param> /// <param name="p_Path"></param> /// <returns>The value of the Option searched for</returns> private string recursiveValueOptionTree(int Parent_node_id, string p_Path) { string path1, path2, sql, value; int DelimeterSize, parent_id; DbDataReader OptionReader; DelimeterSize = p_Path.IndexOf("/"); if (DelimeterSize == -1) { #region Search for value sql = " Select value.string " + " FROM option_map map, option_name name, option_values value " + " WHERE map.parent_node_id = " + Parent_node_id + " AND map.name_id = name.name_id " + " AND name.name = '" + p_Path + "'" + " AND map.value_id = value.value_id "; OptionReader = _dsn.KindExecuteReader(sql); if (!(OptionReader.HasRows)) { value = null; } else { value = OptionReader.GetString(OptionReader.GetOrdinal("string")); } OptionReader.Close(); OptionReader = null; return(value); #endregion } else { #region Search Recursive ChildNode path1 = p_Path.Substring(0, DelimeterSize); path2 = p_Path.Substring(DelimeterSize + 1); sql = " Select map.node_id " + " FROM option_map map, option_name name " + " WHERE map.parent_node_id = " + Parent_node_id + " AND map.name_id = name.name_id " + " AND name.name = '" + path1 + "'"; OptionReader = _dsn.KindExecuteReader(sql); if (!(OptionReader.HasRows)) { OptionReader.Close(); OptionReader = null; return(null); } else { parent_id = OptionReader.GetInt32(OptionReader.GetOrdinal("node_id")); OptionReader.Close(); OptionReader = null; return(recursiveValueOptionTree(parent_id, path2)); } #endregion } }
// Add JMU /// <summary> /// Recursive Look for the value the last Node. Make Changes in the database. /// </summary> /// <param name="Parent_node_id"></param> /// <param name="p_Path"></param> /// <returns>The value of the Option searched for</returns> private string recursiveSetValueOptionTree(int Parent_node_id, string p_Path, string Default_value, string Default_Description) { string path1, path2, sql, value; int DelimeterSize, parent_id; DbDataReader OptionReader; DelimeterSize = p_Path.IndexOf("/"); if (DelimeterSize == -1) { #region Search for value sql = " Select value.value_id " + " FROM option_map map, option_name name, option_values value " + " WHERE map.parent_node_id = " + Parent_node_id + " AND map.name_id = name.name_id " + " AND name.name = '" + p_Path + "'" + " AND map.value_id = value.value_id "; OptionReader = _dsn.KindExecuteReader(sql); if (!(OptionReader.HasRows)) { OptionReader.Close(); OptionReader = null; int name_id = GetNameID(p_Path); int value_id = InsertValue(Default_value); InsertOptionNode(Parent_node_id, name_id, Default_Description, value_id); value = Default_value; } else { value = OptionReader.GetString(OptionReader.GetOrdinal("value_id")); OptionReader.Close(); OptionReader = null; sql = " UPDATE option_values " + " SET string = '" + Default_value + "' " + " WHERE value_id = " + value; _dsn.KindExecuteNonQuery(sql); } return(value); #endregion } else { #region Search Recursive ChildNode path1 = p_Path.Substring(0, DelimeterSize); path2 = p_Path.Substring(DelimeterSize + 1); sql = " Select map.node_id " + " FROM option_map map, option_name name " + " WHERE map.parent_node_id = " + Parent_node_id + " AND map.name_id = name.name_id " + " AND name.name = '" + path1 + "'"; OptionReader = _dsn.KindExecuteReader(sql); if (!(OptionReader.HasRows)) { OptionReader.Close(); OptionReader = null; int name_id = GetNameID(path1); int node_id = InsertOptionNode(Parent_node_id, name_id, "", 0); return(recursiveSetValueOptionTree(node_id, path2, Default_value, Default_Description)); } else { parent_id = OptionReader.GetInt32(OptionReader.GetOrdinal("node_id")); OptionReader.Close(); OptionReader = null; return(recursiveSetValueOptionTree(parent_id, path2, Default_value, Default_Description)); } #endregion } }