public override void LoadFromXML(System.Xml.XmlNode node, ListView scene, ref Dictionary <uint, List <uint> > Depends) { XTools tools = new XTools(X); XProp actor = new XProp(ref X, null, tools.ParseXMLVector3(node.Attributes["Translation"].InnerText), tools.ParseXMLVector3(node.Attributes["ModelOffset_editor"].InnerText), Matrix.CreateFromQuaternion(tools.ParseXMLQuaternion(node.Attributes["Rotation"].InnerText)), tools.ParseXMLVector3(node.Attributes["Scale"].InnerText)); actor.NoCull = true; actor.AutoDraw = bool.Parse(node.Attributes["AutoDraw"].InnerText); actor.DrawOrder = int.Parse(node.Attributes["DrawOrder"].InnerText); actor.ComponentID = uint.Parse(node.Attributes["ComponentID"].InnerText); actor.Name = node.Attributes["Name"].InnerText; List <uint> dep = new List <uint>(); dep.Add(uint.Parse(node.Attributes["model_editor"].InnerText)); Depends.Add(actor.ComponentID, dep); X_Editor.Tools.AddXComponentToSceneList(scene, actor, group); }
/// <summary> /// Нужно ли делать Резервирование по переданному расписанию /// </summary> /// <param name="start">Программа только что запустилась</param> private bool needDump(ArchiveJob aj, bool start) { if (aj.Busy) { return(false); } if (aj.ArcAType == ArchiveType.Никогда) { return(false); } if (start && aj.ArcAType == ArchiveType.При_Запуске) { return(true); } //if (Repeat > 0 && DateCmpNoSec(LastWork.AddHours(Repeat))) // return true; if (aj.ArcAType == ArchiveType.Единожды && XTools.DateCmpNoSec(aj.StartTime)) { return(true); } if (aj.ArcAType == ArchiveType.Ежедневно && XTools.DateCmpTime(aj.StartTime)) { return(true); } if (aj.ArcAType == ArchiveType.Еженедельно && ((DateTime.Now - aj.StartTime).Days % 7) == 0 && XTools.DateCmpTime(aj.StartTime)) { return(true); } if (aj.ArcAType == ArchiveType.Ежемесячно && aj.StartTime.Day == DateTime.Now.Day && XTools.DateCmpTime(aj.StartTime)) { return(true); } return(false); }
/// <summary> /// Делает резервную копию переданной Базы данных /// </summary> /// <returns>Путь к созданному файлу</returns> public string DumpDB(DataSource db) { Directory.CreateDirectory(_j.DumpPath); String ffname = String.Format("{0:s}_{1:s}_{2:yyyy_MM_dd_HHmmss}", _j.Name.Replace(' ', SPACE_REPLACE).Replace("_", UNDERSCORE_REPLACE), db.Name.Replace(' ', SPACE_REPLACE).Replace("_", UNDERSCORE_REPLACE), DateTime.Now ); ffname = XTools.SafeFileName(ffname, "-"); String fname = _tmppath + ffname; _logger.Info("Making dump for " + _j.Name + " to " + ffname); ///Делайем дамп с помошью mysqldump String md = Options.Inst.MySqlDumpPath; if (md == "" || !File.Exists(md)) { _logger.Error("MySQLDump not specified " + md); throw new ApplicationException("Путь к MySQL указан не корректно"); } String pr = String.Format("{0:s} {1:s} {2:s} {3:s} --ignore-table={0:s}.allrabbits", db.Params.DataBase, (db.Params.Host == "" ? "" : "-h " + db.Params.Host), (db.Params.User == "" ? "" : "-u " + db.Params.User), (db.Params.Password == "" ? "" : "--password="******".dump", false, Encoding.UTF8); wr.Write(p.StandardOutput.ReadToEnd()); p.WaitForExit(); wr.Close(); if (p.ExitCode != 0) { throw new ApplicationException("MySQLDump вернул результат " + p.ExitCode.ToString()); } p.Close(); } catch (Exception ex) { //_logger.Error("Error while " + md + ":" + ex.GetType().ToString() + ":" + ex.Message); try { File.Delete(fname + ".dump"); } catch (Exception ex2) { _logger.Error("Error while " + md + ":" + ex2.GetType().ToString() + ":" + ex2.Message); //return ""; } //return ""; throw ex; } ///Упаковываем в архив bool is7z = false; md = Options.Inst.Path7Z; if (md == "" || !File.Exists(md)) ///если путь к 7zip не настроен, то в папку BackUps копируется .dump-файл { _logger.Warn("7z not specified"); } else { try { ProcessStartInfo inf = new ProcessStartInfo(md, string.Format(" a -mx9 -p{0} \"{1}.7z\" \"{1}.dump\"", ZIP_PASSWORD, fname)); inf.CreateNoWindow = true; inf.RedirectStandardOutput = true; inf.UseShellExecute = false; Process p = Process.Start(inf); p.WaitForExit(); if (p.ExitCode != 0) { throw new ApplicationException("Ошибка при архивации: " + p.ExitCode.ToString()); } File.Delete(fname + ".dump"); is7z = true; } catch (Exception ex) { _logger.Error("Error while " + md + ":" + ex.GetType().ToString() + ":" + ex.Message); //return; } } _logger.Debug("copy " + fname + (is7z ? ".7z" : ".dump") + " to " + _j.DumpPath + "\\" + ffname + (is7z ? ".7z" : ".dump")); string movepath = _j.DumpPath + "\\" + ffname + (is7z ? ".7z" : ".dump"); File.Move(fname + (is7z ? ".7z" : ".dump"), movepath); CheckLimits(); _logger.Debug("finishing dumping"); return(movepath); }