Ejemplo n.º 1
0
        /// <summary>
        /// StackHashCabPackage wrapper class
        /// </summary>
        /// <param name="stackHashCabPackage">StackHashCabPackage</param>
        public DisplayCab(StackHashCabPackage stackHashCabPackage)
        {
            if (stackHashCabPackage == null)
            {
                throw new ArgumentNullException("stackHashCabPackage");
            }
            if (stackHashCabPackage.Cab == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.Cab is null");
            }
            if (stackHashCabPackage.Cab.DumpAnalysis == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.Cab.DumpAnalysis is null");
            }
            if (stackHashCabPackage.CabFileContents == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.CabFileContents is null");
            }
            if (stackHashCabPackage.CabFileContents.Files == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.CabFileContents.Files is null");
            }

            _files = new ObservableCollection <DisplayCabFile>();

            _stackHashCabPackage = stackHashCabPackage;

            foreach (StackHashCabFile file in _stackHashCabPackage.CabFileContents.Files)
            {
                _files.Add(new DisplayCabFile(file));
            }
        }
Ejemplo n.º 2
0
        public void UpdateCab(StackHashCabPackage stackHashCabPackage)
        {
            if (stackHashCabPackage == null)
            {
                throw new ArgumentNullException("stackHashCabPackage");
            }
            if (stackHashCabPackage.Cab == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.Cab is null");
            }
            if (stackHashCabPackage.Cab.DumpAnalysis == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.Cab.DumpAnalysis is null");
            }
            if (stackHashCabPackage.CabFileContents == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.CabFileContents is null");
            }
            if (stackHashCabPackage.CabFileContents.Files == null)
            {
                throw new ArgumentNullException("stackHashCabPackage", "stackHashCabPackage.CabFileContents.Files is null");
            }
            if (_stackHashCabPackage.Cab.Id != stackHashCabPackage.Cab.Id)
            {
                throw new InvalidOperationException("Cannot update from a cab with a different ID");
            }

            // save the new cab
            StackHashCabPackage oldCab = _stackHashCabPackage;

            _stackHashCabPackage = stackHashCabPackage;

            // check for updates
            if (oldCab.FullPath != _stackHashCabPackage.FullPath)
            {
                RaisePropertyChanged("FullPath");
            }

            if (oldCab.Cab.CabDownloaded != _stackHashCabPackage.Cab.CabDownloaded)
            {
                RaisePropertyChanged("CabDownloaded");
            }
            if (oldCab.Cab.DateCreatedLocal != _stackHashCabPackage.Cab.DateCreatedLocal)
            {
                RaisePropertyChanged("DateCreatedLocal");
            }
            if (oldCab.Cab.DateModifiedLocal != _stackHashCabPackage.Cab.DateModifiedLocal)
            {
                RaisePropertyChanged("DateModifiedLocal");
            }
            if (oldCab.Cab.EventId != _stackHashCabPackage.Cab.EventId)
            {
                RaisePropertyChanged("EventId");
            }
            if (oldCab.Cab.EventTypeName != _stackHashCabPackage.Cab.EventTypeName)
            {
                RaisePropertyChanged("EventTypeName");
            }
            if (oldCab.Cab.FileName != _stackHashCabPackage.Cab.FileName)
            {
                RaisePropertyChanged("FileName");
            }
            if (oldCab.Cab.Purged != _stackHashCabPackage.Cab.Purged)
            {
                RaisePropertyChanged("Purged");
            }
            if (oldCab.Cab.SizeInBytes != _stackHashCabPackage.Cab.SizeInBytes)
            {
                RaisePropertyChanged("SizeInBytes");
            }

            if (oldCab.Cab.DumpAnalysis.DotNetVersion != _stackHashCabPackage.Cab.DumpAnalysis.DotNetVersion)
            {
                RaisePropertyChanged("DotNetVersion");
            }
            if (oldCab.Cab.DumpAnalysis.MachineArchitecture != _stackHashCabPackage.Cab.DumpAnalysis.MachineArchitecture)
            {
                RaisePropertyChanged("MachineArchitecture");
            }
            if (oldCab.Cab.DumpAnalysis.OSVersion != _stackHashCabPackage.Cab.DumpAnalysis.OSVersion)
            {
                RaisePropertyChanged("OSVersion");
            }
            if (oldCab.Cab.DumpAnalysis.ProcessUpTime != _stackHashCabPackage.Cab.DumpAnalysis.ProcessUpTime)
            {
                RaisePropertyChanged("ProcessUpTime");
            }
            if (oldCab.Cab.DumpAnalysis.SystemUpTime != _stackHashCabPackage.Cab.DumpAnalysis.SystemUpTime)
            {
                RaisePropertyChanged("SystemUpTime");
            }

            // update files
            bool fileFound = false;

            foreach (StackHashCabFile file in _stackHashCabPackage.CabFileContents.Files)
            {
                fileFound = false;

                foreach (DisplayCabFile displayFile in _files)
                {
                    if (displayFile.FileName == file.FileName)
                    {
                        fileFound = true;
                        displayFile.UpdateCabFile(file);
                        break;
                    }
                }

                if (!fileFound)
                {
                    _files.Add(new DisplayCabFile(file));
                }
            }

            List <DisplayCabFile> displayFilesToRemove = new List <DisplayCabFile>();

            foreach (DisplayCabFile displayFile in _files)
            {
                fileFound = false;

                foreach (StackHashCabFile file in _stackHashCabPackage.CabFileContents.Files)
                {
                    if (displayFile.FileName == file.FileName)
                    {
                        fileFound = true;
                        break;
                    }
                }

                if (!fileFound)
                {
                    displayFilesToRemove.Add(displayFile);
                }
            }

            foreach (DisplayCabFile displayFile in displayFilesToRemove)
            {
                _files.Remove(displayFile);
            }
        }