internal static MemoInfoCollection LoadRemovedMemoInfos(SqlServerAccessor accessor) { var ret = default(MemoInfoCollection); try { var xml = accessor.LoadTextDataValue("RemovedMemoInfo"); if (xml != null) { var serializer = new DataContractSerializer(typeof(MemoInfoCollection)); using (var xmlReader = new StringReader(xml)) using (var reader = XmlReader.Create(xmlReader)) { ret = serializer.ReadObject(reader) as MemoInfoCollection; } } } catch (Exception e) { Logger.Warn("RemovedMemoinfos load failed", e); } if (ret == null) { ret = new MemoInfoCollection(); } return(ret); }
internal static string GetMemoInfosPassword(MemoInfoCollection memoInfos, string defaultPassword) { if (memoInfos.Count == 0) { return(defaultPassword); } else if (memoInfos.Count == 1) { return(GetHash(memoInfos[0].MemoId)); } else if (memoInfos.Count == 2) { return(GetHash(memoInfos[0].MemoId + memoInfos[1].MemoId)); } else { /// memoInfos.Count >= 3 var rand = new Random(memoInfos.Count); var buf = new StringBuilder(); for (int i = 0; i < 3; ++i) { var r = rand.Next(memoInfos.Count); var info = memoInfos[r]; buf.Append(info.MemoId); } return(GetHash(buf.ToString())); } }
internal static void SaveRemovedMemoInfos(MemoInfoCollection removedMemoInfos, SqlServerAccessor accessor) { var buf = new StringBuilder(); using (var writer = XmlWriter.Create(buf)) { var serializer = new DataContractSerializer(typeof(MemoInfoCollection)); serializer.WriteObject(writer, removedMemoInfos); } var xml = buf.ToString(); if (accessor.IsTextDataExists("RemovedMemoInfo")) { accessor.UpdateTextData("RemovedMemoInfo", xml); } else { accessor.InsertTextData("RemovedMemoInfo", xml); } }