예제 #1
0
        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);
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
        /// <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);
        }