Exemple #1
0
        private void LoadIssuesFromStorageStore()
        {
            IEnumerable <int> issuesIds = null;

            IssueInfo[] issueInfos = null;

            using (var storageHandler = Model.Access3rdPartyStorageStore(STORAGE_NAME, false))
            {
                if (storageHandler.Storage != null)
                {
                    using (var storage = storageHandler.Storage)
                    {
                        using (var issuesStore = storage.TryOpenStorage(ISSUES_SUB_STORAGE_NAME, false))
                        {
                            if (issuesStore != null)
                            {
                                issuesIds = issuesStore.GetSubStreamNames().Select(n => int.Parse(n));
                            }
                        }

                        using (var stream = storage.TryOpenStream(ISSUES_SUMMARIES_STREAM_NAME, false))
                        {
                            if (stream != null)
                            {
                                var ser = new DataContractSerializer(typeof(IssueInfo[]));
                                issueInfos = ser.ReadObject(stream) as IssueInfo[];
                            }
                        }
                    }
                }
            }

            if (issuesIds == null)
            {
                issuesIds = Enumerable.Empty <int>();
            }

            if (issueInfos == null)
            {
                issueInfos = new IssueInfo[0];
            }

            if (!issueInfos.Select(i => i.Id).OrderBy(i => i)
                .SequenceEqual(issuesIds.OrderBy(i => i)))
            {
                throw new InvalidOperationException("Issues mismatch");
            }

            m_IssuesVm            = new IssuesVM(issueInfos);
            m_IssuesVm.Modified  += OnIssuesModified;
            m_IssuesVm.LoadIssue += OnLoadIssue;

            if (Model.Visible)
            {
                ShowIssues?.Invoke(m_IssuesVm);
            }
        }
Exemple #2
0
 private Issue OnLoadIssue(int issueId)
 {
     using (var storageHandler = Model.Access3rdPartyStorageStore(STORAGE_NAME, false))
     {
         using (var storage = storageHandler.Storage)
         {
             using (var issueStorage = storage.TryOpenStorage(ISSUES_SUB_STORAGE_NAME, false))
             {
                 using (var stream = issueStorage.TryOpenStream(issueId.ToString(), false))
                 {
                     var ser = new DataContractSerializer(typeof(Issue));
                     return(ser.ReadObject(stream) as Issue);
                 }
             }
         }
     }
 }
Exemple #3
0
        private void SaveIssuesToStorageStore()
        {
            var loadedIssues = m_IssuesVm.Issues.Where(i => i.IsLoaded);

            if (loadedIssues.Any(i => i.IsDeleted || i.IsDirty))
            {
                using (var storageHandler = Model.Access3rdPartyStorageStore(STORAGE_NAME, true))
                {
                    using (var storage = storageHandler.Storage)
                    {
                        using (var stream = storage.TryOpenStream(ISSUES_SUMMARIES_STREAM_NAME, true))
                        {
                            var ser = new DataContractSerializer(typeof(IssueInfo[]));
                            ser.WriteObject(stream, m_IssuesVm.Issues
                                            .Select(i => i.Issue.GetInfo()).ToArray());
                        }

                        using (var issuesStore = storage.TryOpenStorage(ISSUES_SUB_STORAGE_NAME, true))
                        {
                            foreach (var removedIssue in loadedIssues.Where(i => i.IsDeleted))
                            {
                                //TODO: simplify when issue #23 is implemented
                                issuesStore.Storage.DestroyElement(removedIssue.Id.ToString());
                            }

                            foreach (var modifiedIssue in loadedIssues.Where(i => !i.IsDeleted && i.IsDirty))
                            {
                                using (var stream = issuesStore.TryOpenStream(modifiedIssue.Id.ToString(), true))
                                {
                                    var ser = new DataContractSerializer(typeof(Issue));
                                    ser.WriteObject(stream, modifiedIssue.Issue);
                                }
                            }
                        }
                    }
                }
            }

            m_IssuesVm.FlushChanges();
        }
Exemple #4
0
        private void SaveToStorageStore()
        {
            var path = SUB_STORAGE_PATH.Split('\\');

            using (var storageHandler = Model.Access3rdPartyStorageStore(path[0], true))
            {
                using (var subStorage = storageHandler.Storage.TryOpenStorage(path[1], true))
                {
                    using (var str = subStorage.TryOpenStream(TIME_STAMP_STREAM_NAME, true))
                    {
                        var buffer = Encoding.UTF8.GetBytes(DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss"));
                        str.Write(buffer, 0, buffer.Length);
                    }

                    using (var str = subStorage.TryOpenStream(USER_NAME_STREAM_NAME, true))
                    {
                        var buffer = Encoding.UTF8.GetBytes(System.Environment.UserName);
                        str.Write(buffer, 0, buffer.Length);
                    }
                }
            }
        }
Exemple #5
0
        private void LoadFromStorageStore()
        {
            var path = SUB_STORAGE_PATH.Split('\\');

            using (var storageHandler = Model.Access3rdPartyStorageStore(path[0], false))
            {
                if (storageHandler.Storage != null)
                {
                    using (var subStorage = storageHandler.Storage.TryOpenStorage(path[1], false))
                    {
                        foreach (var subStreamName in subStorage.GetSubStreamNames())
                        {
                            using (var str = subStorage.TryOpenStream(subStreamName, false))
                            {
                                if (str != null)
                                {
                                    var buffer = new byte[str.Length];

                                    str.Read(buffer, 0, buffer.Length);

                                    var timeStamp = Encoding.UTF8.GetString(buffer);

                                    ShowMessage($"Metadata stamp of {Model.GetTitle()}: {timeStamp}");
                                }
                                else
                                {
                                    ShowMessage($"No metadata stamp stream in {Model.GetTitle()}");
                                }
                            }
                        }
                    }
                }
                else
                {
                    ShowMessage($"No metadata storage in {Model.GetTitle()}");
                }
            }
        }