Exemple #1
0
        public void FullRevert()
        {
            LineTemplate index = new LineTemplate();

            index.AddTemplate("ore/cuprum");
            index.AddTemplate("ore/cuprum/ore/cuprum/oil");
            index.AddTemplate("ore/cuprum/ore/tail");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Preverios();
            index.Preverios();
            index.Preverios();
            index.Preverios();
            index.Preverios();
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("oil");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("oil");
            Assert.AreEqual <int>(2, index.Cicles);
        }
Exemple #2
0
 private void InitTemplates()
 {
     assebler = new LineTemplate();
     assebler.AddTemplate("ore/ore");
     assebler.AddTemplate("ore/cuprum");
     assebler.AddTemplate("ore/cuprum/ore/cuprum/oil");
     assebler.AddTemplate("ore/cuprum/ore/tail");
 }
Exemple #3
0
        protected ReadOnlyCollection <IWebElement> GetLineAction(string lineName)
        {
            if (LineTemplate != null && LineTemplate.GetByLocator().Contains("%s"))
            {
                return(Table.GetWebElement().FindElements(LineTemplate.FillByTemplate(lineName)));
            }
            int index = 0;//GetIndex(Headers(), lineName) + 1; TODO

            return(LineTemplate == null?GetLineAction(index) : Table.GetWebElement().FindElements(LineTemplate.FillByTemplate(index)));
        }
Exemple #4
0
        protected IList <IWebElement> GetLineAction(string lineName)
        {
            if (LineTemplate != null && LineTemplate.GetByLocator().Contains("{0}"))
            {
                return(GetElementsByTemplate(lineName));
            }
            var num = Headers.IndexOf(lineName) + 1;

            return(LineTemplate == null
                ? GetLineAction(num)
                : GetElementsByTemplate(num));
        }
Exemple #5
0
        protected IList <IWebElement> GetLineAction(string lineName)
        {
            if (LineTemplate != null && LineTemplate.GetByLocator().Contains("{0}"))
            {
                return(Table.WebElement.FindElements(LineTemplate.FillByTemplate(lineName)));
            }
            var index = Headers.IndexOf(lineName) + 1;

            return(LineTemplate == null
                ? GetLineAction(index)
                : Table.GetWebElement().FindElements(LineTemplate.FillByTemplate(index)));
        }
Exemple #6
0
        /// <summary>
        /// Parses multiple lines of binary data then writes it out to a specified destination in chunks.
        /// </summary>
        /// <param name="lineTemplate">Template</param>
        /// <param name="sourceFilePath">Source file path</param>
        /// <param name="writeOutputType">Output file type</param>
        /// <param name="outputFilePath">Output file path</param>
        /// <param name="chunkSize">Threshold in which to write output</param>
        /// <param name="includeColumnNames">Include column names in file</param>
        /// <param name="addQuotes">Add text quotes as part of output</param>
        /// <returns>boolean on completion</returns>
        public bool ParseAndWriteLines(LineTemplate lineTemplate, string sourceFilePath, string outputFilePath, WriteOutputType writeOutputType = WriteOutputType.Txt, bool includeColumnNames = true, bool addQuotes = true, int chunkSize = -1)
        {
            try
            {
                using (FileStream reader = File.OpenRead(sourceFilePath))
                {
                    long fsBytes   = reader.Length;
                    int  chunk     = (int)(chunkSize == -1 ? fsBytes : (lineTemplate.LineSize * chunkSize));
                    int  loop      = (int)(Math.Ceiling(((decimal)fsBytes / chunk)));
                    bool append    = false;
                    long bytesRead = 0;

                    for (long i = 1; i <= loop; i++)
                    {
                        byte[] b = new byte[0];

                        Console.WriteLine($"Handling Batch {i} of {loop}");

                        if (bytesRead + chunk > fsBytes)
                        {
                            chunk = (int)(fsBytes - bytesRead);
                        }

                        b          = new byte[chunk];
                        bytesRead += reader.Read(b, 0, chunk);

                        this.ParsedLines = ParseAllLines(lineTemplate, b);

                        switch (writeOutputType)
                        {
                        case WriteOutputType.Csv:
                            SaveParsedLinesAsCsvFile(outputFilePath, includeColumnNames, addQuotes, append);
                            break;

                        case WriteOutputType.Txt:
                            SaveParsedLinesAsTxtFile(outputFilePath, "|", includeColumnNames, addQuotes, "¬", append);
                            break;

                        case WriteOutputType.XML:
                            throw new NotImplementedException("XML Exporting in batches has not yet been implemented");
                        }
                        append = true;
                        Console.WriteLine($"--------------------------------------");
                    }
                    return(true);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #7
0
    void DrawLine(LineTemplate lineSegment)
    {
        GameObject one_line = Instantiate(LinePrefab);

        one_line.transform.position   = lineSegment.position;
        one_line.transform.localScale = lineSegment.scale;
        one_line.transform.Rotate(lineSegment.rotation);
        // Color color = Color.red;
        // color.a = 255;
        // one_line.GetComponent<Renderer>().material.color = color;
        one_line.transform.parent = GameObject.Find("Lines").transform;

        //one_line.lineInformation = lineSegment;
    }    //DrawLine()
Exemple #8
0
        public static LineTemplate GetLineTemplateToParseEbcidicDataWithFixedRecordLength()
        {
            var lineTemplate = new LineTemplate(LineSize, TemplateName);

            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldReservationNumber, FieldType.String, startPosition: 0, fieldSize: 11));
            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldCheckInDate, FieldType.DateString, startPosition: 11, fieldSize: 6));
            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldCalcNetAmount, FieldType.BinaryNum, startPosition: 17, fieldSize: 4, decimalPlaces: 2));
            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldCustomerName, FieldType.String, startPosition: 21, fieldSize: 30));
            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldRunDate, FieldType.DateStringMMDDYY, startPosition: 51, fieldSize: 6));
            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldCurrencyConvRate, FieldType.Packed, startPosition: 57, fieldSize: 6, decimalPlaces: 6));
            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldUsDollarAmountDue, FieldType.Packed, startPosition: 63, fieldSize: 6, decimalPlaces: 2));
            lineTemplate.AddFieldTemplate(new FieldTemplate(FieldDateOfBirth, FieldType.PackedDate, startPosition: 69, fieldSize: 4));
            return(lineTemplate);
        }
        public void LineTemplate_InitialisedFromXmlCorrectly()
        {
            // ASSERT:
            // LineTemplate object can be converted to XML and also initialized from XML file.

            var lineTemplate1 = TestData.GetLineTemplateToParseEbcidicDataWithFixedRecordLength();

            // Convert sample template to XML
            var xmlString = lineTemplate1.GetLineTemplateXmlString();

            // Initialize template from XML
            var lineTemplateXml = XElement.Parse(xmlString);
            var lineTemplate2   = new LineTemplate(lineTemplateXml);

            Assert.IsNotNull(lineTemplate1);
            Assert.IsNotNull(lineTemplate2);
            Assert.AreEqual(lineTemplate1.FieldsCount, lineTemplate2.FieldsCount);
            Assert.AreEqual(
                lineTemplate1.GetLineTemplateXmlString(),
                lineTemplate2.GetLineTemplateXmlString());
        }
        public void Used_For_Manual_Testing()
        {
            var lineBytes    = ParserUtilities.ConvertHexStringToByteArray("F1-F5-F0-F1-F2-F3");
            var lineTemplate = new LineTemplate(lineBytes.Length);
            var fieldName    = "TEST_ITEM";

            lineTemplate.AddFieldTemplate(
                new FieldTemplate(
                    fieldName: fieldName,
                    fieldType: FieldType.DateString,
                    startPosition: 0,
                    fieldSize: lineBytes.Length,
                    decimalPlaces: 0));

            var processor = new EbcdicParser();

            var parsedLine = processor.ParseSingleLine(lineTemplate, lineBytes);

            var testOutput = parsedLine[fieldName];

            Debug.WriteLine(parsedLine.ToXmlString());
        }
Exemple #11
0
        public void NextSimpleInput()
        {
            LineTemplate index = new LineTemplate();

            index.AddTemplate("ore/cuprum");
            index.AddTemplate("ore/cuprum/ore/cuprum/oil");
            index.AddTemplate("ore/cuprum/ore/tail");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
            index.Next("ore");
            index.Next("cuprum");
        }
        public IHttpActionResult POST()
        {
            //設定允許控制的星期
            var week = new List <string> {
                "週一", "週二", "週三", "週四", "週五", "週六"
            };
            var sql = new SQLcontroller("192.168.3.247", "mydb", "leegood", "leegood");
            ScheduleControll time = new ScheduleControll();
            RestAPI          api  = new RestAPI();

            try
            {
                //設定ChannelAccessToken(或抓取Web.Config)
                this.ChannelAccessToken = channelAccessToken;
                //取得Line Event(範例,只取第一個)
                var LineEvent = this.ReceivedMessage.events.FirstOrDefault();
                //配合Line verify
                if (LineEvent.replyToken == "00000000000000000000000000000000")
                {
                    return(Ok());
                }
                //回覆訊息
                if (LineEvent.type == "postback")
                {
                    string msg = LineEvent.postback.data;
                    //msg += $"\n Params.date : {LineEvent.postback.Params.date + ""}";
                    //msg += $"\n Params.datetime : {LineEvent.postback.Params.datetime + ""}";
                    //msg += $"\n Params.time : {LineEvent.postback.Params.time + ""}";
                    this.ReplyMessage(LineEvent.replyToken, msg);
                    return(Ok());
                }

                if (LineEvent.type == "message")
                {
                    if (LineEvent.message.type == "text")
                    { //收到文字
                      //this.ReplyMessage(LineEvent.replyToken, "你說了:" + LineEvent.message.text);

                        if (LineEvent.message.text == "個人設定")
                        {
                            ButtonTemplateParameter info = new ButtonTemplateParameter();
                            info.LineID = LineEvent.source.userId;
                            linebot227.Functions.LineTemplate.LoginTemplete(info);
                        }

                        if (LineEvent.message.text == "監看狀態" && check.VeriMember(LineEvent.source.userId))
                        {
                            ButtonTemplateParameter status = new ButtonTemplateParameter();
                            status.LineID   = LineEvent.source.userId;
                            status.ViewURL1 = "http://api.leegood.com.tw:58088/LGoffice_/home.htm";
                            status.ViewURL2 = "http://api.leegood.com.tw:58088/LGoffice_/4f_sa.htm";
                            LineTemplate.BuildingStatusTemplete(status);
                        }
                        if (LineEvent.message.text == "遠端控制" && check.VeriMember(LineEvent.source.userId))
                        {
                            ButtonTemplateParameter status = new ButtonTemplateParameter
                            {
                                LineID = LineEvent.source.userId
                            };
                            LineTemplate.CarouselTemplateTest(status);
                        }
                        if (LineEvent.message.text == "開啟6樓系統部空調" && check.VeriMember(LineEvent.source.userId))
                        {
                            LogInfo log = new LogInfo();
                            log.AuthTime = DateTime.Now;
                            log.Event    = "Open6FX-TeamAircon";
                            log.LineID   = LineEvent.source.userId;
                            sql.InsertLogTime(log);
                            var isOpenTime = time.Schedule(week, 9, 24, LineEvent.source.userId);
                            if (isOpenTime)
                            {
                                if (api.GetValue("020004") == 1)
                                {
                                    this.ReplyMessage(LineEvent.replyToken, "系統部冷氣是開著的喔.....");
                                }
                                else
                                {
                                    api.SetValue("020032", 1);
                                    Thread.Sleep(800);         //Delay 1秒
                                    api.SetValue("020032", 0); //020032
                                    if (api.GetValue("020004") == 1)
                                    {
                                        this.ReplyMessage(LineEvent.replyToken, "成功開啟空調");
                                    }
                                }
                            }
                        }
                        if (LineEvent.message.text == "開啟6樓工程部空調" && check.VeriMember(LineEvent.source.userId))
                        {
                            LogInfo log = new LogInfo();
                            log.AuthTime = DateTime.Now;
                            log.Event    = "Open6FEngineerAircon";
                            log.LineID   = LineEvent.source.userId;
                            sql.InsertLogTime(log);
                            var isOpenTime = time.Schedule(week, 9, 24, LineEvent.source.userId);
                            if (isOpenTime)
                            {
                                if (api.GetValue("020001") == 1)
                                {
                                    this.ReplyMessage(LineEvent.replyToken, "工程部冷氣是開著的喔.....");
                                }
                                else
                                {
                                    api.SetValue("020031", 1);
                                    Thread.Sleep(800);         //Delay 1秒
                                    api.SetValue("020031", 0); //020032
                                    if (api.GetValue("020001") == 1)
                                    {
                                        this.ReplyMessage(LineEvent.replyToken, "成功開啟空調");
                                    }
                                }
                            }
                        }
                        if (LineEvent.message.text == "開啟4樓會議室空調" && check.VeriMember(LineEvent.source.userId))
                        {
                            LogInfo log = new LogInfo();
                            log.AuthTime = DateTime.Now;
                            log.Event    = "Open4FConferenceRoomAircon";
                            log.LineID   = LineEvent.source.userId;
                            sql.InsertLogTime(log);
                            var isOpenTime = time.Schedule(week, 9, 24, LineEvent.source.userId);
                            if (isOpenTime)
                            {
                                if (api.GetValue("010001") == 1)
                                {
                                    this.ReplyMessage(LineEvent.replyToken, "4F會議室冷氣是開著的喔.....");
                                }
                                else
                                {
                                    api.SetValue("010031", 1);
                                    Thread.Sleep(800);
                                    api.SetValue("010031", 0);
                                    if (api.GetValue("010001") == 1)
                                    {
                                        this.ReplyMessage(LineEvent.replyToken, "成功開啟空調");
                                    }
                                }
                            }
                        }
                        if (LineEvent.message.text == "開啟4樓組盤間空調" && check.VeriMember(LineEvent.source.userId))
                        {
                            LogInfo log = new LogInfo();
                            log.AuthTime = DateTime.Now;
                            log.Event    = "Open4FDIYRoomAircon";
                            log.LineID   = LineEvent.source.userId;
                            sql.InsertLogTime(log);
                            var isOpenTime = time.Schedule(week, 9, 24, LineEvent.source.userId);
                            if (isOpenTime)
                            {
                                if (api.GetValue("010004") == 1)
                                {
                                    this.ReplyMessage(LineEvent.replyToken, "4樓組盤間冷氣是開著的喔");
                                }
                                else
                                {
                                    api.SetValue("010032", 1);
                                    Thread.Sleep(800);         //Delay 1秒
                                    api.SetValue("010032", 0); //020032
                                    if (api.GetValue("010004") == 1)
                                    {
                                        this.ReplyMessage(LineEvent.replyToken, "成功開啟空調");
                                    }
                                    else
                                    {
                                        this.ReplyMessage(LineEvent.replyToken, "失敗");
                                    }
                                }
                            }
                        }
                        if (LineEvent.message.text == "4444" && check.VeriMember(LineEvent.source.userId))
                        {
                            LogInfo log = new LogInfo();
                            log.AuthTime = DateTime.Now;
                            log.Event    = "Open4FDoor";
                            log.LineID   = LineEvent.source.userId;
                            sql.InsertLogTime(log);
                            var isOpenTime = time.Schedule(week, 9, 24, LineEvent.source.userId);
                            if (isOpenTime)
                            {
                                api.SetValue("010007", 1);
                                Thread.Sleep(800);         //Delay 1秒
                                api.SetValue("010007", 0); //020032
                            }
                        }
                        if (LineEvent.message.text == "6666" && check.VeriMember(LineEvent.source.userId))
                        {
                            LogInfo log = new LogInfo();
                            log.AuthTime = DateTime.Now;
                            log.Event    = "Open6FDoor";
                            log.LineID   = LineEvent.source.userId;
                            sql.InsertLogTime(log);
                            var isOpenTime = time.Schedule(week, 9, 24, LineEvent.source.userId);
                            if (isOpenTime)
                            {
                                api.SetValue("020007", 1);
                                Thread.Sleep(800);         //Delay 1秒
                                api.SetValue("020007", 0); //020032
                            }
                        }
                        if (LineEvent.message.text == "檢查門窗" && check.VeriMember(LineEvent.source.userId))
                        {
                            //RestAPI api = new RestAPI();
                            LogInfo log = new LogInfo();
                            log.AuthTime = DateTime.Now;
                            log.Event    = "checkDoor";
                            log.LineID   = LineEvent.source.userId;
                            sql.InsertLogTime(log);
                            var pointName = new List <string>
                            {
                                //6樓
                                "6樓大門,",
                                "志中旁窗戶,",
                                "柏欽旁窗戶,",
                                "禹任旁窗戶,",
                                "蕭董辦公室沙發旁,",
                                "蕭座位旁窗戶,",
                                "系統部窗戶,",
                                "小房間",
                                "測試點,",
                                //4樓
                                "4F大門,",
                                "組盤間,",
                                "測試間窗-1,",
                                "羅小姐辦公室窗-1,",
                                "羅小姐辦公室窗-2,",
                                "小會議室窗,",
                                "鄭總辦公室窗,",
                                "測試間窗-2"
                            };
                            var points = new List <string>
                            {
                                //6樓
                                "020030",          //大門        value是1代表門是開的
                                "BA_020023",       //志中旁窗戶
                                "BA_020024",       //柏欽旁窗戶
                                "BA_020025",       //禹任旁窗戶
                                "BA_020026",       //蕭董辦公室沙發旁
                                "BA_020027",       //蕭座位旁窗戶
                                "BA_020028",       //系統部窗戶
                                "BA_020029",       //小房間
                                "DO1",             //測試點
                                //4樓
                                "010127",
                                "BA_010121",
                                "BA_010122",
                                "BA_010123",
                                "BA_010124",
                                "BA_010125",
                                "BA_010126",
                                "BA_010128"
                            };
                            this.ReplyMessage(LineEvent.replyToken, api.GetListValue(points, pointName));
                            //bool isIn = points.Contains(1);
                            //string openStatus = "";
                            //int count = 0;
                            //if (isIn)
                            //{
                            //    foreach (var point in points)
                            //    {
                            //        count++;
                            //        if (point == 1)
                            //        {
                            //            openStatus += pointName[count - 1];
                            //        }
                            //    }
                            //    this.ReplyMessage(LineEvent.replyToken, openStatus+"沒關");
                            //}
                            //else
                            //{
                            //    this.ReplyMessage(LineEvent.replyToken, "門窗都關好了");
                            //}
                        }
                    }


                    if (LineEvent.message.type == "sticker") //收到貼圖
                    {
                        this.ReplyMessage(LineEvent.replyToken, 1, 2);
                    }
                }
                //response OK
                return(Ok());
            }
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }
 public void Init()
 {
     sourceBytes  = TestData.GetSampleEbcidicDataWithFixedRecordLength();
     lineTemplate = TestData.GetLineTemplateToParseEbcidicDataWithFixedRecordLength();
 }