Ejemplo n.º 1
0
 internal void initData()
 {
     if (Utilities.Runningintestmode)
     {
         Roomname        = "c/1457606766";
         Roomname_daily  = "c/1151058807";
         Roomname_weekly = "c/1233617142";
     }
     logger.Info("Lade Autor-Manager");
     this.authors = new AuthorManager();
     logger.Info("Lade Posting-Manager");
     this.posts = new PostingManager();
     logger.Info("Lade Statistik-Manager");
     this.statistics = new DRaumStatistics();
     logger.Info("Lade Feedback-Manager");
     this.feedbackManager = new FeedbackManager();
     if (!this.loadDataFromFiles())
     {
         this.startupinfo = "!!! Server ist ohne Daten gestartet !!!";
         logger.Info("Lade Autor-Manager neu");
         this.authors = new AuthorManager();
         logger.Info("Lade Posting-Manager neu");
         this.posts = new PostingManager();
         logger.Info("Lade Statistik-Manager neu");
         this.statistics = new DRaumStatistics();
         logger.Info("Lade Feedback-Manager neu");
         this.feedbackManager = new FeedbackManager();
     }
     else
     {
         this.startupinfo = "Server ist gestartet";
     }
     this.textBuilder  = new PostingTextBuilder(this.posts, this.authors);
     this.startupinfo += "\r\nMaximale Autorenzahl:" + AuthorManager.Maxmanagedusers;
 }
Ejemplo n.º 2
0
        // == Persistency
        private bool loadDataFromFiles()
        {
            // Suche im Backup-Ordner nach dem neuesten Satz backupdateien
            string        dateprefix = "";
            DirectoryInfo di         = new DirectoryInfo(BackupFolder);

            if (di.Exists)
            {
                FileInfo[] filelist = di.GetFiles();
                Array.Sort(filelist, new FileDateComparer());
                // Ist nun aufsteigend sortiert
                int  lastindex  = filelist.Length - 1;
                bool validFound = false;
                while (!validFound && lastindex >= 0)
                {
                    // Es müssen vier gleiche Dateien vorhanden sein
                    if (filelist[lastindex].Name.Substring(0, 18).Equals(filelist[lastindex - 1].Name.Substring(0, 18)) &&
                        filelist[lastindex].Name.Substring(0, 18).Equals(filelist[lastindex - 2].Name.Substring(0, 18)) &&
                        filelist[lastindex].Name.Substring(0, 18).Equals(filelist[lastindex - 3].Name.Substring(0, 18)))
                    {
                        validFound = true;
                        dateprefix = filelist[lastindex].Name.Substring(0, filelist[lastindex].Name.IndexOf(FilePrefix, StringComparison.Ordinal));
                        logger.Info("Lade die Daten aus diesen Dateien: " + filelist[lastindex].Name);
                        if (lastindex != filelist.Length - 1)
                        {
                            logger.Warn("Dies waren nicht die letzten Dateien im Verzeichnis: " + filelist[lastindex].Name);
                        }
                    }
                    lastindex--;
                }
                if (!validFound)
                {
                    return(false);
                }
            }

            FileStream inputFilestream = null;

            try
            {
                logger.Info("Lese Autoren-Daten aus dem Dateisystem");
                inputFilestream = File.OpenRead(BackupFolder + Path.DirectorySeparatorChar + dateprefix + FilePrefix + "authors.json");
                StreamReader sr         = new StreamReader(inputFilestream);
                string       jsonstring = sr.ReadToEnd();
                sr.Close();
                this.authors = JsonConvert.DeserializeObject <AuthorManager>(jsonstring);
                logger.Info("Lese Post-Daten aus dem Dateisystem");
                inputFilestream = File.OpenRead(BackupFolder + Path.DirectorySeparatorChar + dateprefix + FilePrefix + "posts.json");
                sr         = new StreamReader(inputFilestream);
                jsonstring = sr.ReadToEnd();
                sr.Close();
                this.posts = JsonConvert.DeserializeObject <PostingManager>(jsonstring);
                logger.Info("Lese Statistik-Daten aus dem Dateisystem");
                inputFilestream = File.OpenRead(BackupFolder + Path.DirectorySeparatorChar + dateprefix + FilePrefix + "statistic.json");
                sr         = new StreamReader(inputFilestream);
                jsonstring = sr.ReadToEnd();
                sr.Close();
                this.statistics = JsonConvert.DeserializeObject <DRaumStatistics>(jsonstring);
                logger.Info("Lese Feedback-Daten aus dem Dateisystem");
                inputFilestream = File.OpenRead(BackupFolder + Path.DirectorySeparatorChar + dateprefix + FilePrefix + "feedback.json");
                sr         = new StreamReader(inputFilestream);
                jsonstring = sr.ReadToEnd();
                sr.Close();
                this.feedbackManager = JsonConvert.DeserializeObject <FeedbackManager>(jsonstring);
                if (this.authors == null || this.posts == null || this.statistics == null || this.feedbackManager == null)
                {
                    logger.Error("Beim Deserialisieren wurde eine Klasse als NULL deserialisiert!");
                    return(false);
                }
                this.posts.transferFromInCheckToToCheck();
                return(true);
            }
            catch (Exception e)
            {
                logger.Error(e, "Fehler beim Laden der Daten, es wird bei 0 begonnen");
            }
            finally
            {
                inputFilestream?.Close();
            }
            return(false);
        }