Exemplo n.º 1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="UserID"></param>
 /// <param name="url"></param>
 public SynchronousController(string userID, string url)
 {
     TextDoc       = new TextDoc();
     this.Url      = url;
     MessageQueues = new MessageHolder();
     Watcher       = new MessageWatcher(MessageQueues, url);
     UserID        = userID;
 }
Exemplo n.º 2
0
        /// <summary>
        /// 处理DEL消息
        /// </summary>
        /// <param name="callerID"></param>
        /// <param name="lineHash"></param>
        /// <param name="sc"></param>
        public static void DoDel(string callerID, int lineHash, SynchronousController sc)
        {
            TextDoc textDoc = sc.TextDoc;
            int     index   = textDoc.GetIndexByHash(lineHash);

            textDoc.DeleteLine(textDoc.GetLineByHash(lineHash));
            sc.ToDeleteLine(index);
            sc.MessageQueues.MessagesToSend.Enqueue(MessageWrapper.WriteMsg(callerID, sc.Identity, MessageType.VRF, lineHash, "DEL"));
        }
Exemplo n.º 3
0
 /// <summary>
 /// 添加新行事件处理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 /// <returns></returns>
 bool AddNewLineEvent(object sender, AddNewLineEventArgs e)
 {
     if (this.TextDoc.InsertLine(TextDoc.GetTextLineByIndex(e.TargetLineIndex), out TextLine newLine))
     {
         newLine.EditContent(e.NewLineContent);
         MessageQueues.MessagesToSend.Enqueue(MessageWrapper.WriteMsg(this.CallerID, this.Identity, MessageType.ADD, newLine.ID, e.NewLineContent));
         return(true);
     }
     else
     {
         return(false);
     }
 }
        public void Convert_text()
        {
            var text  = @"Предложения по данным позициям из заказа отсутствуют
адрес доставки тестовый адрес доставки 27131
    прайс-лист Тестовый поставщик минимальный заказ 17948
        АМИНАЗИН р-р д/ин. (амп.) 2.5% - 1 мл N10 - CANPOL 385882399: имеется различие в цене препарата (старая цена: 5 155,25р.; новая цена: 3 803,59р.)
        АЛКЕРАН лиоф. пор. д/ин. (амп.) 50 мг N1 - CANPOL 272172924: имеется различие в цене препарата (старая цена: 1 963,27р.; новая цена: 7 846,26р.)
        АМИНАЗИН р-р д/ин. (амп.) 2.5% - 1 мл N10 1362470529 - CANPOL 2032824958: имеется различие в цене препарата (старая цена: 5 215,45р.; новая цена: 8 891,76р.)
        АЛКЕРАН лиоф. пор. д/ин. (амп.) 50 мг N1 795399701 - CANPOL 1413518865: имеется различие в цене препарата (старая цена: 5 211,38р.; новая цена: 6 772,29р.)
        АЛКА-ЗЕЛЬТЦЕР табл. шип. N10 - CANPOL 812196717: имеется различие в цене препарата (старая цена: 3 806,94р.; новая цена: 1 724,41р.)
        АЛКЕРАН табл. 2 мг N25 - CANPOL 814314867: имеется различие в цене препарата (старая цена: 4 155,58р.; новая цена: 5 851,08р.)
        АЛЛЕРГЕНЫ ПЫЛЬЦЕВЫЕ в комплектах - CANPOL 905024831: имеется различие в цене препарата (старая цена: 456,32р.; новая цена: 7 283,92р.)";
            var model = new TextDoc("тест", text);
            var doc   = model.ToFlowDocument();

            Assert.That(WpfTestHelper.FlowDocumentToText(doc), Does.Contain("АЛЛЕРГЕНЫ ПЫЛЬЦЕВЫЕ"));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 删除行事件处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        bool DeleteLineEvent(object sender, DeleteLineEventArgs e)
        {
            TextLine targetLine = TextDoc.GetTextLineByIndex(e.TargetLineIndex);

            if (targetLine == null)
            {
                return(false);
            }
            if (this.TextDoc.MarkDeleteLine(targetLine))
            {
                MessageQueues.MessagesToSend.Enqueue(MessageWrapper.WriteMsg(this.CallerID, this.Identity, MessageType.DEL, targetLine.ID, null));
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 6
0
 /// <summary>
 /// 编辑行事件处理
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 /// <returns></returns>
 bool ModifyLineEvent(object sender, ModifyLineEventArgs e)
 {
     if (TextDoc.GetLineCounts() > e.TargetLineIndex || e.TargetLineIndex <= 0)
     {
         return(false);
     }
     else
     {
         TextLine targetLine = this.TextDoc.GetTextLineByIndex(e.TargetLineIndex);
         if (targetLine == null)
         {
             return(false);
         }
         targetLine.EditContent(e.NewContent);
         targetLine.Mark = LineMarkType.Changed;
         MessageQueues.MessagesToSend.Enqueue(MessageWrapper.WriteMsg(this.CallerID, this.Identity, MessageType.UPD, targetLine.ID, e.NewContent));
         return(true);
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// 向服务器申请一个同步session,并上传初始文本
        /// </summary>
        /// <param name="rawText"></param>
        /// <returns>如果成功则返回真</returns>
        private Boolean ApplySession(string rawText)
        {
            TextDoc         rawDoc    = new TextDoc(rawText);
            Queue <Message> applyMsgs = new Queue <Message>();

            foreach (TextLine textLine in rawDoc.TextLines)
            {
                if (textLine.Mark != LineMarkType.Head)
                {
                    Message msg = MessageManager.MessageWrapper.IniMsg(CallerID, textLine.ID, textLine.GetContent());
                    applyMsgs.Enqueue(msg);
                }
            }
            Message applyMsg = MessageManager.MessageWrapper.ApplyMsg(CallerID);

            applyMsgs.Enqueue(applyMsg);

            Boolean isDone = HttpHelper.RequestForIniMsg(Url, applyMsgs, MessageQueues);

            return(isDone);
        }
Exemplo n.º 8
0
 public IEnumerator <Text> GetEnumerator()
 {
     return(TextDoc.GetEnumerator());
 }