////////////////////////////////////////////////////////////// //////////////////// PRIVATE METHODS ///////////////////////// ////////////////////////////////////////////////////////////// /// <summary> /// Open storage /// </summary> /// <param name="mode"></param> private void OpenRoot(string path = "") { if (mgr_state == STATE_OPENED) { mgr.Close(); } mgr_state = STATE_UNDEFINED; if (path != "") { ROOT = path; } else { ROOT = VSUILib.VSUICommonFunctions.SelectPath(DEFS.KEY_STORAGE_ROOT, "Select the storage root directory"); } if (ROOT != "") { mgr_state = STATE_SELECTED; mgr = new VSEngine(ROOT); OpenStorage(); if (mgr_state == STATE_OPENED) { CloseStorage(); statusStrip.Items.Clear(); statusStrip.Items.Add("Storage root: " + ROOT); DUMP = ROOT; DisplaySpaceList(); } } ShowButtons(); }
private void VSFrmAdm_Load(object sender, EventArgs e) { mgr = null; string ks = VSLib.VSGetKey(DEFS.KEY_STORAGE_ROOT); if (ks != "") { if (MessageBox.Show(ks, "Do you want to open the last used storage?", MessageBoxButtons.YesNo) == DialogResult.Yes) { OpenRoot(ks); } } ShowButtons(); }
/// <summary> /// Display space list /// </summary> private void DisplaySpaceList() { txtInfo.Text = ""; mgr = new VSEngine(ROOT); listSpace.Items.Clear(); listSpace.Items.Add("<All>"); string[] ls = mgr.GetSpaceNameList(); for (int i = 0; i < ls.Length; i++) { listSpace.Items.Add(ls[i]); } cbShow.Visible = true; cbShow.SelectedIndex = 0; }
/// <summary> /// Delete XML storage /// </summary> private void ACTION_DeleteStorage() { string rp = ROOT; if (MessageBox.Show("Do you wat to delete storage?", "Delete VXML storage", MessageBoxButtons.YesNo) == DialogResult.No) { return; } bool delete_content = (cont.Storage.GetSpace(DEFX.XML_CONTENT_SPACE_NAME) != null); this.ACTION_CloseStorage(); VSEngine mgr = new VSEngine(rp); try { mgr.Remove(DEFX.XML_SPACE_NAME); } catch (VSException er) { System.Media.SystemSounds.Beep.Play(); MessageBox.Show("Error while deleting VXML space '" + DEFX.XML_SPACE_NAME + "': " + er.Message, "Delete space error", MessageBoxButtons.OK); return; } if (delete_content) { try { mgr.Remove(DEFX.XML_CONTENT_SPACE_NAME); } catch (VSException er) { System.Media.SystemSounds.Beep.Play(); MessageBox.Show("Error while deleting VXML content space '" + DEFX.XML_CONTENT_SPACE_NAME + "': " + er.Message, "Delete space error", MessageBoxButtons.OK); return; } } MessageBox.Show("VXML storage is deleted at '" + rp + "'", "Delete VXML storage", MessageBoxButtons.OK); }
/////////////////////////////////////////////////////// ///////////// METHODS ///////////////////////////////// /////////////////////////////////////////////////////// /// <summary> /// Crerate new storage /// </summary> /// <param name="root_path"></param> /// <param name="size"></param> /// <param name="ext"></param> /// <param name="content_size"></param> /// <param name="content_ext"></param> /// <returns></returns> public void Set(string path = "", string encrypt = "", int size = 5, int ext = 5, int content_size = 5, int content_ext = 15) { if (state == DEFS.STATE_OPENED) { return; } string p = (root_path == DEFS.PATH_UNDEFINED) ? path : root_path; root_path = p.Trim(); Storage = new VSEngine(); Storage.Set(root_path, encrypt); /////////// Create spaces if missing /////////// if (!Storage.Exists(DEFX.XML_SPACE_NAME)) { if (Storage.Exists(DEFX.XML_CONTENT_SPACE_NAME)) { Storage.Remove(DEFX.XML_CONTENT_SPACE_NAME); } if (Storage.Exists(DEFX.XML_INDEX_SPACE_NAME)) { Storage.Remove(DEFX.XML_INDEX_SPACE_NAME); } Storage.Create(DEFX.XML_SPACE_NAME, 16, size, ext); if (content_size > 0) { Storage.Create(DEFX.XML_CONTENT_SPACE_NAME, 64, content_size, content_ext); } Storage.Create(DEFX.XML_INDEX_SPACE_NAME, 16, 1, 5); Storage.UseIndexSpace(DEFX.XML_SPACE_NAME, DEFX.XML_INDEX_SPACE_NAME); } state = DEFS.STATE_DEFINED; }
static void Main(string[] args) { /* * Usage * <command> [-<par1> [value]] ... [-<parN> [value]] ********** Commands ********************* * Command can be shortened but shall be unambiguous * create - create space * -n[ame] -p[agesize] -s[ize] -e[xtension] -d[ir] * extend - extend space * -n[ame] -e[xtension] * remove - delete space * -n[ame] * addpartition - add partition * -n[ame] -s[ize] * dump - dump storage * -n[ame] -d[ir] * restore - restore data to the storage from dump * -n[ame] -d[ir] * list] - display space information (* - all) * -n[ame] ********** Parameters summary *********** ***** Common, mandatory * -n[ame] ***** Common, optional * -r[oot] ***** Other * -p[agesize] default=16 * -s[ize] default=5 * -e[xtension] default=0 * -d[directory] default=0 * */ const string DEF_CMD_CREATE = "create"; const string DEF_CMD_EXTEND = "extend"; const string DEF_CMD_REMOVE = "remove"; const string DEF_CMD_ADDPARTITION = "addpartition"; const string DEF_CMD_DUMP = "dump"; const string DEF_CMD_RESTORE = "restore"; const string DEF_CMD_LIST = "list"; string[] cmds = { DEF_CMD_CREATE, DEF_CMD_EXTEND, DEF_CMD_REMOVE, DEF_CMD_ADDPARTITION, DEF_CMD_DUMP, DEF_CMD_RESTORE, DEF_CMD_LIST }; const string DEF_OP_NAME = "-n"; const string DEF_OP_ROOT = "-r"; const string DEF_OP_PAGESIZE = "-p"; const string DEF_OP_SPACESIZE = "-s"; const string DEF_OP_EXTEND = "-e"; const string DEF_OP_DIRECTORY = "-d"; string errmsg = "Invalid parameter"; string errexe = "Command execution error"; string cmd = ""; string err = ""; string root = ""; string dir = ""; string name = ""; string size = ""; string ext = ""; string page = ""; VSEngine vs; string msg100 = "Started " + DateTime.Now.ToString("s"); Console.WriteLine("Virtual Storage Util V " + Assembly.GetEntryAssembly().GetName().Version.ToString()); string s = ""; for (int i = 0; i < args.Length; i++) { s += " " + args[i]; } Console.WriteLine("Aguments: " + s.Trim()); if (args.Length == 0) { err = errmsg + " - command is not specified"; } else { // Identify command for (int i = 0; i < cmds.Length; i++) { if (cmds[i].IndexOf(args[0].ToLower()) == 0) { if (cmd != "") { err = errmsg + " - umbiguous command - '" + args[0] + "'"; break; } else { cmd = cmds[i]; } } } if (cmd == "") { err = errmsg + " - command is not recognized"; } else { if (err == "") { root = getParameterValue(args, DEF_OP_ROOT); if (root.Substring(0, 1) == ":") { err = errmsg + " - rooth path is not specified or incorrect"; } else { name = getParameterValue(args, DEF_OP_NAME); dir = getParameterValue(args, DEF_OP_DIRECTORY); // Space directory size = getParameterValue(args, DEF_OP_SPACESIZE); ext = getParameterValue(args, DEF_OP_EXTEND); page = getParameterValue(args, DEF_OP_PAGESIZE); vs = new VSEngine(root); ////////////// CREATE //////////////// if (cmd == DEF_CMD_CREATE) { Console.WriteLine(msg100 + ", command='CREATE'"); if (name.Substring(0, 1) == ":") { err = name; } else if (size.Substring(0, 1) == ":") { err = size; } else if (ext.Substring(0, 1) == ":") { err = ext; } else if (page.Substring(0, 1) == ":") { err = page; } else if (dir.Length > 0) { if (dir.Substring(0, 1) == ":") { err = dir; } } if (err == "") { try { vs.Create(name, Convert.ToInt32(page), Convert.ToInt32(size), Convert.ToInt32(ext), dir); } catch (VSException e) { Console.WriteLine(errexe); err = e.Message; } } else { err = errmsg + err; } } ////////////// EXTEND //////////////// else if (cmd == DEF_CMD_EXTEND) { Console.WriteLine(msg100 + ", command='EXTEND'"); ext = getParameterValue(args, "-e"); if (name.Substring(0, 1) == ":") { err = name; } else if (ext.Substring(0, 1) == ":") { err = ext; } if (err == "") { try { vs.Extend(name, Convert.ToInt32(ext)); } catch (VSException e) { Console.WriteLine(errexe); err = e.Message; } } else { err = errmsg + err; } } ////////////// REMOVE //////////////// else if (cmd == DEF_CMD_REMOVE) { Console.WriteLine(msg100 + ", command='REMOVE'"); if (name.Substring(0, 1) == ":") { err = name; } if (err == "") { try { vs.Remove(name); } catch (VSException e) { Console.WriteLine(errexe); err = e.Message; } } else { err = errmsg + err; } } ////////////// ADDPARTITION //////////////// else if (cmd == DEF_CMD_ADDPARTITION) { Console.WriteLine(msg100 + ", command='ADD PARTITION'"); if (name.Substring(0, 1) == ":") { err = name; } else if (size.Substring(0, 1) == ":") { err = size; } if (err == "") { try { vs.AddPartition(name, Convert.ToInt32(size)); } catch (VSException e) { Console.WriteLine(errexe); err = e.Message; } } else { err = errmsg + err; } } ////////////// DUMP //////////////// else if (cmd == DEF_CMD_DUMP) { Console.WriteLine(msg100 + ", command='DUMP'"); if (name.Substring(0, 1) == ":") { err = name; } if (dir.Length > 0) { if (dir.Substring(0, 1) == ":") { err = dir; } } if (err == "") { string rc = vs.Dump(dir, name); if (rc != "") { err = "Dump error - " + rc; } } } ////////////// RESTORE //////////////// else if (cmd == DEF_CMD_RESTORE) { Console.WriteLine(msg100 + ", command='RESTORE'"); if (name.Substring(0, 1) == ":") { err = name; } if (dir.Length > 0) { if (dir.Substring(0, 1) == ":") { err = dir; } } if (err.Length == 0) { string rc = vs.Restore(dir, name); if (rc != "") { err = "Restore error - " + rc; } } } ////////////// LIST //////////////// else if (cmd == DEF_CMD_LIST) { Console.WriteLine(msg100 + ", command='LIST'"); if (name.Substring(0, 1) == ":") { err = name; } else { string[] rc = vs.List(name); for (int i = 0; i < rc.Length; i++) { Console.WriteLine(rc[i]); } } } else { err = "Invalid command - " + cmd; } } } } int r = 0; if (err != "") { Console.WriteLine(err); r = 8; } Console.WriteLine("Ended, Rc = " + r.ToString() + ", " + DateTime.Now.ToString("s")); } }