Exemple #1
0
        // Annetun polun analysointi virtuaalikoneiden osalta
        // (ensimmäisen tason kansiot)
        private void btnAnalyze_Click(object sender, RoutedEventArgs e)
        {
            // testataan että annettu polku varmasti on olemassa
            if (!Directory.Exists(txtboxPath.Text))
            {
                // jos polkua ei ole annetaan virheilmoitus
                System.Windows.MessageBox.Show("Backup path is not valid!");
            }
            else
            {
                // jos polku on olemassa niin voidaan jatkaa eteenpäin

                // alustukset
                List <FolderModel> virtualmachines = new List <FolderModel>();
                string[]           VMpaths         = Directory.GetDirectories(txtboxPath.Text);

                // Lisätään tulevaan vetovalikkoon valmiiksi "All"-vaihtoehto
                FolderModel All = new FolderModel();
                All.Name = "All";
                All.Path = txtboxPath.Text;
                virtualmachines.Add(All);

                // Virtuaalikone on todellisuudessa annetun polun
                // ensimmäisen tason kansiot (SERVER-VMDEV jne..)
                foreach (string VMpath in VMpaths)
                {
                    // luodaan "kansio"-model, annetaan perustiedot ja lisätään listaan
                    FolderModel virtualmachine = new FolderModel();
                    virtualmachine.Name = Path.GetFileName(VMpath);
                    virtualmachine.Path = Path.GetDirectoryName(VMpath);
                    virtualmachines.Add(virtualmachine);
                }

                // Vetovalikossa näytetään "Name" ja tämän jälkeen se on enabloitu
                cbVirtualMachine.DisplayMemberPath = "Name";
                cbVirtualMachine.ItemsSource       = virtualmachines;
                cbVirtualMachine.IsEnabled         = true;
            }
        }
        // Annetun polun analysointi virtuaalikoneiden osalta
        // (ensimmäisen tason kansiot)
        private void btnAnalyze_Click(object sender, RoutedEventArgs e)
        {
            // testataan että annettu polku varmasti on olemassa
            if (!Directory.Exists(txtboxPath.Text))
            {
                // jos polkua ei ole annetaan virheilmoitus
                System.Windows.MessageBox.Show("Backup path is not valid!");
            }
            else
            {
                // jos polku on olemassa niin voidaan jatkaa eteenpäin

                // alustukset
                List<FolderModel> virtualmachines = new List<FolderModel>();
                string[] VMpaths = Directory.GetDirectories(txtboxPath.Text);

                // Lisätään tulevaan vetovalikkoon valmiiksi "All"-vaihtoehto
                FolderModel All = new FolderModel();
                All.Name = "All";
                All.Path = txtboxPath.Text;
                virtualmachines.Add(All);

                // Virtuaalikone on todellisuudessa annetun polun
                // ensimmäisen tason kansiot (SERVER-VMDEV jne..)
                foreach (string VMpath in VMpaths)
                {
                    // luodaan "kansio"-model, annetaan perustiedot ja lisätään listaan
                    FolderModel virtualmachine = new FolderModel();
                    virtualmachine.Name = Path.GetFileName(VMpath);
                    virtualmachine.Path = Path.GetDirectoryName(VMpath);
                    virtualmachines.Add(virtualmachine);
                }

                // Vetovalikossa näytetään "Name" ja tämän jälkeen se on enabloitu
                cbVirtualMachine.DisplayMemberPath = "Name";
                cbVirtualMachine.ItemsSource = virtualmachines;
                cbVirtualMachine.IsEnabled = true;
            }
        }
Exemple #3
0
        // Update-nappula hakee valitun virtuaalikoneen varmuuskopioitujen tiedostojen
        // tiedot ja luo niistä listan mikä näytetään käyttäjälle
        private void btnUpdate_Click(object sender, RoutedEventArgs e)
        {
            // Nopeat alustukset alkuun
            dgFileList.ItemsSource = null;
            btnSave.IsEnabled      = false;
            List <FileModel> files = new List <FileModel>();

            // erotellaan virtuaalikoneen polku
            // ja päätellään oliko valittuna "all" vai jokin muu
            // sen perusteella haetaan kansion kaikki tiedostot
            FolderModel selectedVM = (FolderModel)cbVirtualMachine.SelectedItem;
            string      rootPath   = cbVirtualMachine.SelectedIndex == 0 ? selectedVM.Path : selectedVM.FullPath;

            string[] filePaths = Directory.GetFiles(rootPath, "*", SearchOption.AllDirectories);

            // käydään löydetyt tiedostot läpi
            foreach (string filePath in filePaths)
            {
                // luodaan tiedostomalli ja fileinfo
                FileModel file = new FileModel();
                FileInfo  info = new FileInfo(filePath);

                // FileInfoa ei voi periä joten FileModeliin joudutaan
                // asettamaan perustiedot käsin
                file.Name     = Path.GetFileNameWithoutExtension(filePath);
                file.Ext      = info.Extension;
                file.RealPath = info.DirectoryName;
                file.Created  = info.CreationTime;
                file.Modified = info.LastWriteTime;
                file.Size     = info.Length;
                file.Versions = new List <FileModel>();


                // virtuaalikoneen ja cronjobin erottaminen kansiopolusta
                // rikotaan path "/"-merkin kohdalta listaksi
                var           TempPath  = info.DirectoryName.Substring(selectedVM.Path.Length);
                List <string> pathParts = TempPath.Split(Path.DirectorySeparatorChar).ToList();

                // valitaan listan kolme ensimmäistä muihin tehtäviin
                file.VirtualMachine = pathParts[0];
                file.BackupFolder   = pathParts[1] + pathParts[2];

                // poistetaan listan kolme ensimmäistä
                pathParts.RemoveAt(2);
                pathParts.RemoveAt(1);
                pathParts.RemoveAt(0);

                // kasataan lista uudestaan ilman noita kolmea.
                file.Path = Path.DirectorySeparatorChar + String.Join(Path.DirectorySeparatorChar.ToString(), pathParts.ToArray());
                // virtuaalikoneen ja cronjobin erottaminen kansiopolusta on valmis


                // Viimeiseksi etsitään onko kyseinen tiedosto ensimmäinen laatuaan tällä listalla
                // vai onko kyseessä listaan aiemmin lisätyn tiedoston eri versio
                // Versio jos path, filename ja virtualmachine ovat samoja
                var index = files.FindIndex(i => i.Path == file.Path && i.Filename == file.Filename && i.VirtualMachine == file.VirtualMachine);

                // Jos versio ja nykyinen on uudempi kuin aikaisemmin listaan lisätty
                if (index != -1 && (files[index].Modified < file.Modified))
                {
                    // siirretään aiemmin lisätyn versiot tämän versioiksi
                    file.Versions = files[index].Versions;
                    // tyhjennetään aimmin lisätyn versiot
                    files[index].Versions = new List <FileModel>();
                    // lisätään aiemmin lisätty tämän versioksi
                    file.Versions.Add(files[index]);
                    // poistetaan aiemmin lisätty ja lisätään nykyinen listaan
                    files.RemoveAt(index);
                    files.Add(file);
                }
                // jos versio muttei uudempi
                else if (index != -1)
                {
                    // lisätään aiemmin löytyneen versioksi
                    files[index].Versions.Add(file);
                }
                // jos versiota ei ole
                else
                {
                    // niin lisätään se uutena
                    files.Add(file);
                }
            }

            // Valmis lista taulukkoon näytille
            // jos lista ei ole tyhjä niin tulosjoukon voi tallentaa save-nappulalla
            dgFileList.ItemsSource = files;
            if (files.Count != 0)
            {
                btnSave.IsEnabled = true;
            }
        }