Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="task"></param>
        /// <param name="parseResult"></param>
        public override void OnProcess(ITask task, IParseResult pr)
        {
            if (pr.IsSuccess)
            {
                string opera = task.Opera.Name;
                if (StringHelper.Equal(opera, LYR001OperaNames.ReadReal))
                {
                    ProcessReadReal(task, pr);
                }
                else if (StringHelper.Equal(opera, LYR001OperaNames.ReadStatus))
                {
                    ProcessReadStatus(task, pr);
                }
                else if (
                    (StringHelper.Equal(opera, LYR001OperaNames.WriteOT)) ||
                    (StringHelper.Equal(opera, LYR001OperaNames.WriteOTMode)) ||
                    (StringHelper.Equal(opera, LYR001OperaNames.OPERA_READ)) ||
                    (StringHelper.Equal(opera, LYR001OperaNames.OPERA_WRITE)) ||
                    (StringHelper.Equal(opera, "ReadM"))
                    )
                {
//task.Opera.next
                }
                else
                {
                    string s = string.Format("not process LYR001 opera '{0}'", opera);
                    throw new NotImplementedException(s);
                }
            }
        }
        public void ObjectValidator()
        {
            CliParser fp = new CliParserBuilder()
                           .AddVerb <OptOneOfEach>("verb", verb =>
            {
                verb.AddOption(x => x.Option, x => x.WithShortAndLongName("o", "opt"));

                verb.ValidateObject = (obj) => obj.Option < 50 ? null : "Too much!";
            })
                           .Build();

            IParseResult pr = fp.Parse(new string[] { "verb", "-o", "10" });

            Assert.IsType <SuccessfulParse <OptOneOfEach> >(pr);
            Assert.True(pr.Ok);
            Assert.Empty(pr.Errors);

            pr = fp.Parse(new string[] { "verb", "--opt", "999" });
            Assert.IsType <FailedParseWithVerb <OptOneOfEach> >(pr);
            Assert.False(pr.Ok);
            Assert.Equal(1, pr.Errors.Count);
            var error = pr.Errors.First();

            Assert.Equal(ErrorCode.ObjectFailedValidation, error.ErrorCode);
            Assert.Equal("Too much!", error.Message);
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="xgdevice"></param>
        /// <param name="parseResult"></param>
        private void ProcessXGDeviceRecordHelp(XGDevice xgdevice, IParseResult parseResult, bool isFD)
        {
            // 1. uploadrecord
            // 2. readrecord
            //    2.1 return record
            //    2.2 return record count if record idx out of range

            /*
             * if (parseResult.IsSuccess)
             * {
             * if (StringHelper.Equal(parseResult.ReceivePartName, "recordcount"))
             * {
             * string errmsg = string.Format("record index '{0}' out of range",
             * parseResult.NameObjects.GetObject("recordcount"));
             * //CZGRApp.Default.MainForm.UpdateXGDeviceState(xgdevice, errmsg);
             * log.Warning(errmsg);
             *
             * }
             * else
             * {
             * // upload record or readrecord
             * //
             * DBXGDevice dbxgdevice = xgdevice.DBXGDevice;
             * DateTime dt = Convert.ToDateTime(parseResult.NameObjects.GetObject("DT"));
             * string cardsn = parseResult.NameObjects.GetObject("cardsn").ToString();
             * DBXGData dbxgdata = new DBXGData(dbxgdevice, DBCard.FindCard(cardsn), dt);
             * dbxgdata.Create();
             *
             * // update xgdatalistview
             * //
             * CZGRApp.Default.MainForm.UpdateXGData(xgdevice, parseResult, dbxgdata, isFD);
             * }
             * }
             */
        }
Exemple #4
0
        private IParseResult <string> letterDigit(ref Cursor cursor)
        {
            IParseResult <string> r0 = null;

            r0 = this.ParseClass(ref cursor, "AZaz09");
            return(r0);
        }
Exemple #5
0
        private static IParseResult ParseRtf(ParserState state)
        {
            if (state.Current != '{')
            {
                return(FailedParse.Get);
            }
            state.Advance();
            IParseResult result = ParseHeader(state);

            if (result.Failed)
            {
                return(result);
            }
            result = ParseDocument(state);
            if (result.Failed)
            {
                return(result);
            }
            if (state.Current != '}')
            {
                return(FailedParse.Get);
            }
            state.Advance();
            return(result);
        }
Exemple #6
0
        public void FailureGivesNothing()
        {
            IParseResult r = parser.Parse("Nothing");

            Assert.False(r.Ok);
            Assert.Null(r.Verb);
        }
Exemple #7
0
        private void SuggestBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            var result = sug.SuggestBox.SelectedItem as IParseResult;

            CurResult = result;
            SetCmdInfo();
        }
Exemple #8
0
        public void TraceRuleExit <T>(string ruleName, Cursor cursor, IParseResult <T> parseResult)
        {
            var success = parseResult != null;

            Trace.Unindent();
            Trace.WriteLine($"End '{ruleName}' with {(success ? "success" : "failure")} at ({cursor.Line},{cursor.Column}) with state key {cursor.StateKey}");
        }
        public void TraceRuleExit <T>(string ruleName, Cursor cursor, IParseResult <T> parseResult)
        {
            var success = parseResult != null;

            _indentLevel--;
            _builder.AppendLine(new string(' ', _indentLevel)).Append($"End '{ruleName}' with {(success ? "success" : "failure")} at ({cursor.Line},{cursor.Column}) with state key {cursor.StateKey}");
        }
Exemple #10
0
        private void ltbSuggests_SelectedIndexChanged(object sender, EventArgs e)
        {
            var result = ltbSuggests.SelectedItem as IParseResult;

            CurResult = result;
            SetCmdInfo();
        }
Exemple #11
0
        public override void OnProcess(ITask task, IParseResult pr)
        {
            if (pr.IsSuccess)
            {
                if (StringHelper.Equal(task.Opera.Name, "ReadReal"))
                {
                    Xd202Data data = new Xd202Data();

                    data.BeforeWL       = Convert.ToDouble(task.LastParseResult.Results["BeforeWL"]);
                    data.BehindWL       = Convert.ToDouble(task.LastParseResult.Results["BehindWL"]);
                    data.Height         = Convert.ToDouble(task.LastParseResult.Results["Height"]);
                    data.InstantFlux    = Convert.ToDouble(task.LastParseResult.Results["IF"]);
                    data.RemainedAmount = Convert.ToDouble(task.LastParseResult.Results["RemainedAmount"]);
                    data.UsedAmount     = 0 - data.RemainedAmount;

                    data.BeforeWL = CM2M(data.BeforeWL);
                    data.BehindWL = CM2M(data.BehindWL);
                    data.Height   = CM2M(data.Height);

                    task.Device.DeviceDataManager.Last = data;

                    int id = GuidHelper.ConvertToInt32(task.Device.Guid);
                    DBI.Instance.InsertXd202Data(id, data);
                }
            }
        }
Exemple #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="device"></param>
        /// <param name="received"></param>
        /// <returns></returns>
        public override IParseResult OnParseReceivedBytes(IDevice device, byte[] received)
        {
            IParseResult pr = this.ReceiveParts.ToValues(received);

            if (pr.IsSuccess)
            {
                // has address data field
                //
                KeyValue addressKV  = pr.Results.Find(ADDRESS);
                bool     hasAddress = addressKV != null;
                if (hasAddress)
                {
                    // match address
                    //
                    object addressObject = pr.Results[ADDRESS];
                    if (addressObject != null)
                    {
                        UInt64 address = Convert.ToUInt64(addressObject);
                        if (address != device.Address)
                        {
                            pr = new AddressErrorResult(device.Address, address);
                        }
                    }
                }
            }

            return(pr);
        }
        public void TraceResult <TResult>(IParseResult <TResult> result)
        {
            Contract.Requires(result != null);

            if (stopwatch != null)
            {
                int endIndex = cursor.CurrentIndex + result.Length - 1;

                string end =
                    endIndex > cursor.CurrentIndex
          ? "-" + endIndex
          : endIndex < cursor.CurrentIndex
            ? " (Non-Greedy)"
            : string.Empty;

                ParserTraceSources.Execution.TraceEvent(
                    TraceEventType.Verbose,
                    0,
                    "Parser {0}{1} iteration {2} in {3} at index {4}{5} = {6}",
                    id,
                    name,
                    iteration,
                    stopwatch.Elapsed,
                    cursor.CurrentIndex,
                    end,
                    result.Value);
            }
        }
Exemple #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        internal AdjusterControlInfoReader(ITask task, IParseResult pr)
        {
            Debug.Assert(pr.IsSuccess);

            _task = task;
            _pr   = pr;
        }
Exemple #15
0
        public IParseResultGroup Parse(ILexResultGroup lexedSource)
        {
            // initialize group
            IParseResultGroup parseGroup = new ParseResultGroup(
                ParseStatus.Success,
                new ASTNode(ParseMatchType.Program, lexedSource)
                );

            Action <IParseResult> addItem = pr => {
                if (pr.Status != ParseStatus.None)
                {
                    parseGroup.Node.Add(pr.Node);
                    parseGroup.Add(pr);
                }
            };

            foreach (IParseRule rule in _parserRules)
            {
                foreach (ILexResult lexResult in lexedSource)
                {
                    if (!rule.Accepts(lexResult))
                    {
                        continue;
                    }

                    IParseResult parseResult = rule.Parse(lexResult);
                    addItem(parseResult);
                }
            }

            return(parseGroup);
        }
Exemple #16
0
 public void TraceRuleExit <T>(string ruleName, Cursor cursor, IParseResult <T> parseResult)
 {
     if (Enabled)
     {
         Out.WriteLine($"Exit rule: {ruleName} result: {parseResult}");
     }
 }
 /// <summary>
 /// Handles <paramref name="result"/>. If parsing was successful, calls <see cref="IParseResult.InvokeAsync"/>.
 /// If parsing failed, any errors are written using <see cref="MsgFormatter"/>.
 /// </summary>
 /// <param name="result">The result to handle.</param>
 /// <param name="alwaysWriteHelpOnError">Always writes help when there is an error. If false, only writes help if an Error was <see cref="ErrorCode.HelpRequested"/>.</param>
 public async Task HandleAsync(IParseResult result, bool alwaysWriteHelpOnError = true)
 {
     if (result.Ok)
     {
         await result.InvokeAsync();
     }
     else
     {
         if (result.Errors.Count > 0)
         {
             MsgFormatter.WriteErrors(Console, result.Errors);
         }
         if (alwaysWriteHelpOnError || result.Errors.Any(x => x.ErrorCode == ErrorCode.HelpRequested))
         {
             if (result.Verb != null)
             {
                 result.Verb.WriteSpecificHelp(Console, MsgFormatter);
             }
             else
             {
                 MsgFormatter.WriteOverallHelp(Console, Verbs, Config);
             }
         }
     }
 }
Exemple #18
0
        private static IParseResult ParseDocument(ParserState state)
        {
            StringBuilder sb = new StringBuilder();

            while (state.Current != '}')
            {
                if (state.Current == '\\')
                {
                    IParseResult result = ParseDocEscapedChar(state);
                    if (result.Succeeded)
                    {
                        sb.Append(ConvertEntity(state.Current));
                        state.Advance();
                    }
                    else
                    {
                        result = ParseKeyword(state);
                        if (result.Failed)
                        {
                            return(result);
                        }
                        string s = ProcessDocKeyword(result.Value, state);
                        sb.Append(s);
                    }
                }
                else
                {
                    sb.Append(ConvertEntity(state.Current));
                    state.Advance();
                }
            }
            return(new SuccessfulParse(sb.ToString()));
        }
Exemple #19
0
        private void WriteLoadFile(string file, TableMetadata tableMetadata, IParseResult items)
        {
            StringBuilder builder = new StringBuilder();
            var           columns = tableMetadata.Columns;
            var           isAutoIncrementPrimary = tableMetadata.IsAutoIncrementPrimary;

            var insertColumns =
                (isAutoIncrementPrimary ? columns.Where(c1 => c1.Key != tableMetadata.Primary.First()) : columns)
                .ToArray();

            foreach (var item in items)
            {
                builder.Append("@END@");
                foreach (var column in insertColumns)
                {
                    var value = column.Value.PropertyInfo.GetValue(item);
                    value = value == null ? "" : MySqlHelper.EscapeString(value.ToString());
                    builder.Append("#").Append(value).Append("#").Append("$");
                }
            }

            StreamWriter writer = CreateOrOpen(file);

            lock (writer)
            {
                writer.WriteLine(builder.ToString());
            }

            builder.Clear();
        }
Exemple #20
0
        private static IParseResult ParseHeaderGroup(ParserState state)
        {
            if (state.Current != '{')
            {
                return(FailedParse.Get);
            }
            state.Advance();
            IParseResult result = ParseHeaderKeyword(state);

            if (result.Failed)
            {
                return(result);
            }
            if (result.Value == "colortbl")
            {
                result = ParseColors(state);
            }
            else
            {
                result = ParseHeaderGroupData(state);
            }
            if (state.Current != '}')
            {
                return(FailedParse.Get);
            }
            state.Advance();
            return(result);
        }
Exemple #21
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="device"></param>
        /// <param name="bs"></param>
        /// <returns></returns>
        public PickResult Pick(IDevice device, byte[] bs)
        {
            int length = 0;

            if (bs != null)
            {
                length = bs.Length;
            }

            if (length < _receivePard.DataFieldManager.Length)
            {
                return(PickResult.CreateFailPickResult(bs));
            }

            for (int i = 0; i <= bs.Length - _receivePard.DataFieldManager.Length; i++)
            {
                byte[] bsForParse = new byte[_receivePard.DataFieldManager.Length];
                Array.Copy(bs, i, bsForParse, 0, _receivePard.DataFieldManager.Length);

                IParseResult pr = _receivePard.ToValues(bsForParse);
                if (pr.IsSuccess)
                {
                    byte[]     remain  = Remove(bs, i, _receivePard.DataFieldManager.Length);
                    PickResult success = PickResult.CreateSuccessPickResult(
                        this.Name, pr, remain);
                    return(success);
                }
            }

            return(PickResult.CreateFailPickResult(bs));
        }
Exemple #22
0
        public override void OnProcess(ITask task, IParseResult pr)
        {
            string s = string.Format("{0} - {1} - {2}",
                                     DateTime.Now, task.Opera.Name, pr);

            Console.WriteLine(s);
        }
Exemple #23
0
        /// <summary>
        /// Succeeds with a successful parser, if any.
        /// </summary>
        /// <remarks>The first successful parser that advances the text position is returned.
        /// Otherwise, the first successful parser that does not advance the text position is returned.
        /// Otherwise, the first failure is returned.</remarks>
        public static IParser <T> Or <T>(IEnumerable <IParser <T> > parsers)
        {
            return(Create(position =>
            {
                IParseResult <T> firstEmptySuccess = null;
                IParseResult <T> firstFailure = null;

                foreach (IParser <T> parser in parsers)
                {
                    IParseResult <T> result = parser.TryParse(position);
                    if (!result.Success)
                    {
                        firstFailure = firstFailure ?? result;
                    }
                    else if (result.NextPosition == position)
                    {
                        firstEmptySuccess = firstEmptySuccess ?? result;
                    }
                    else
                    {
                        return result;
                    }
                }

                return firstEmptySuccess ?? firstFailure ?? ParseResult.Failure <T>(position);
            }));
        }
Exemple #24
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="st"></param>
        /// <param name="parseResult"></param>
        private void ProcessXGReadRecordResult(XGDevice xgdevice, IParseResult pr)
        {
            DateTime dt     = (DateTime)pr.Results["DT"];
            string   cardSn = pr.Results["cardsn"].ToString();

            dt = SaveToDBAndUpdateLast(xgdevice, dt, cardSn);
        }
Exemple #25
0
        private IParseResult <OutputNode> statement(ref Cursor cursor)
        {
            IParseResult <OutputNode> r0 = null;

            r0 = this.output(ref cursor);
            return(r0);
        }
Exemple #26
0
        private IParseResult <string> @operator(ref Cursor cursor)
        {
            IParseResult <string> r0 = null;

            if (r0 == null)
            {
                r0 = this.ParseLiteral(ref cursor, ">=");
            }
            if (r0 == null)
            {
                r0 = this.ParseLiteral(ref cursor, "<=");
            }
            if (r0 == null)
            {
                r0 = this.ParseLiteral(ref cursor, ">");
            }
            if (r0 == null)
            {
                r0 = this.ParseLiteral(ref cursor, "<");
            }
            if (r0 == null)
            {
                r0 = this.ParseLiteral(ref cursor, "==");
            }
            if (r0 == null)
            {
                r0 = this.ParseLiteral(ref cursor, "!=");
            }
            if (r0 == null)
            {
                r0 = this.ParseLiteral(ref cursor, "~=");
            }
            return(r0);
        }
Exemple #27
0
        private IParseResult <IList <string> > _(ref Cursor cursor)
        {
            IParseResult <IList <string> > r0 = null;
            var startCursor0 = cursor;
            var l0           = new List <string>();

            while (true)
            {
                IParseResult <string> r1 = null;
                r1 = this.ParseClass(ref cursor, "\t\t  ");
                if (r1 != null)
                {
                    l0.Add(r1.Value);
                }
                else
                {
                    break;
                }
            }
            if (l0.Count >= 1)
            {
                r0 = this.ReturnHelper <IList <string> >(startCursor0, ref cursor, state => l0.AsReadOnly());
            }
            else
            {
                cursor = startCursor0;
            }
            return(r0);
        }
Exemple #28
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public override void OnProcess(ITask task, IParseResult pr)
        {
            if (pr.IsSuccess)
            {
                string opera = task.Opera.Name;
                if (StringHelper.Equal(opera, XD1100OperaNames.ReadReal))
                {
                    ProcessReadReal(task, pr);
                }
                else if( StringHelper.Equal ( opera, XD1100OperaNames.ReadStatus ))
                {
                    ProcessReadStatus(task, pr);
                }
                else if (
                    (StringHelper.Equal(opera, XD1100OperaNames.WriteOT)) ||
                    (StringHelper.Equal(opera, XD1100OperaNames.WriteOTMode)) ||
                    (StringHelper.Equal(opera, XD1100OperaNames.OPERA_READ)) ||
                    (StringHelper.Equal(opera, XD1100OperaNames.OPERA_WRITE))
                    )
                {

                }
                else
                {
                    string s = string.Format("not process xd1100 opera '{0}'", opera);
                    throw new NotImplementedException(s);
                }
            }
        }
Exemple #29
0
        /// <inheritdoc/>
        public override IParseResult <T> TryParse(string input, int position)
        {
            IParseResult <T> firstResult = First.TryParse(input, position);

            if (firstResult.Success)
            {
                return(firstResult);
            }

            IParseResult <T> secondResult = Second.TryParse(input, position);

            if (secondResult.Success)
            {
                return(secondResult);
            }

            IEnumerable <string> newExpected = Array.Empty <string>();

            if (firstResult.Error is UnexpectedTokenError t1)
            {
                newExpected = newExpected.Concat(t1.Expected);
            }

            if (secondResult.Error is UnexpectedTokenError t2)
            {
                newExpected = newExpected.Concat(t2.Expected);
            }

            return(new ParseResult <T>(position, secondResult.Position, new UnexpectedTokenError(newExpected, GetFound(input, position))));
        }
Exemple #30
0
 public static void ShouldSucceed <T>(this IParseResult <T> actual, T expected, int?remainderIndex = null)
 {
     Assert.True(actual.Success, "parse failed");
     if (expected is IEnumerable sequence && !(expected is string))
     {
         Assert.True(sequence.Cast <object>().SequenceEqual(((IEnumerable)actual.Value !).Cast <object>()));
     }
Exemple #31
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="client"></param>
        /// <param name="received"></param>
        /// <returns></returns>
        public bool Process(Client client, byte[] received)
        {
            StringBuilder sb = new StringBuilder();

            IParseResult pr = this.GetReceivePart().ToValues(received);

            if (pr.IsSuccess)
            {
                string name = Convert.ToString(pr.Results["name"]);
                name = name.Trim();

                DateTime dt = (DateTime)pr.Results["dt"];

                sb.AppendLine(string.Format(
                                  Strings.GateDataRequest,
                                  name, dt));

                byte[] bsReply = CreateGateReplyBytes(name, dt, sb);
                bool   r       = client.CommuniPort.Write(bsReply);

                LogItem log = new LogItem(DateTime.Now, sb.ToString());
                client.LogItems.Add(log);
            }


            return(pr.IsSuccess);
        }
Exemple #32
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public override void OnProcess(ITask task, IParseResult pr)
        {
            if (pr.IsSuccess)
            {
                string opera = task.Opera.Name;
                opera = opera.ToLower();
                XGDevice xgdevice = (XGDevice)task.Device;

                switch (opera)
                {
                    case XGOperaNames.ReadCount:
                        ProcessXGReadRecordCountResult(xgdevice, pr);
                        break;

                    case XGOperaNames.ReadRecord:
                        ProcessXGReadRecordResult(xgdevice, pr);
                        break;

                    case XGOperaNames.RecordUpload:
                        ProcessXGUploadRecordResult(xgdevice, pr);
                        break;

                    case XGOperaNames.ClearRecord:
                        ProcessXGClearRecordResult(pr);
                        break;

                    case XGOperaNames.RemoveUpload:
                        ProcessXGRemoveUploadResult(pr);
                        break;

                    case XGOperaNames.ReadXGDate:
                        ProcessXGReadDateResult(xgdevice, pr);
                        break;

                    case XGOperaNames.ReadXGTime:
                        ProcessXGReadTimeResult(xgdevice, pr);
                        break;

                    case XGOperaNames.WriteXGDate:
                    case XGOperaNames.WriteXGTime:
                    case XGOperaNames.WriteMode:
                        // do nothing
                        //
                        break;

                    default:
                        {
                            string errmsg = string.Format("{0} {1}",
                                    xgdevice.DeviceType.Text,
                                    opera);
                            throw new NotSupportedException(errmsg);
                        }
                }
            }
        }
Exemple #33
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="device"></param>
        /// <param name="bs"></param>
        /// <returns></returns>
        //public override IUploadParseResult OnProcessUpload(IDevice device, byte[] bs)
        public override void OnProcessUpload(IDevice device, IParseResult pr)
        {
            XGDevice xg = (XGDevice)device;
            DateTime dt = (DateTime)pr.Results["DT"];
            string cardSN = pr.Results["cardSN"].ToString();

            //xg.DeviceDataManager.Last = new XGData(dt, cardSN);
            SaveToDBAndUpdateLast(xg, dt, cardSN);

            IOpera op = device.Dpu.OperaFactory.Create(device.GetType().Name,
                XGOperaNames.RemoveUpload);

            TimeSpan timeout = TimeSpan.FromMilliseconds(device.Station.CommuniPortConfig.TimeoutMilliSecond);
            Task task = new Task(device, op, Strategy.CreateImmediateStrategy(), timeout,1);
            device.TaskManager.Tasks.Enqueue(task);
        }
        private static List<DmxPatchGroup> ParseDmxPatchgroup(XElement source, IParseResult result)
        {
            var patchGroups = source.Elements("DmxPatchgroup");

            List<DmxPatchGroup> groups = new List<DmxPatchGroup>();

            if (patchGroups.Any())
            {
                foreach (XElement dmxpgroupElement in patchGroups)
                {
                    var dmxpgroup = new DmxPatchGroup();

                    ParseResult error = new ParseResult(dmxpgroupElement.Name.LocalName);
                    string val;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(dmxpgroupElement, "PatchFootprint");
                            Validate(() => Validator.HasValue(val));
                            dmxpgroup.PatchFootprint = ParseValue<int>(val);
                        }, "PatchFootprint", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(dmxpgroupElement, "PatchGroupLabel");
                            dmxpgroup.PatchGroupLabel = val;
                        }, "PatchGroupLabel", error);

                    TryExecute(
                        () =>
                        {
                            dmxpgroup.Channels = ParseDmxChannel(dmxpgroupElement, error);
                        }, "DmxChannel", error);

                    TryExecute(
                        () =>
                        {
                            var node = dmxpgroupElement.GetElement("DmxMacros", false);
                            if (node != null)
                                dmxpgroup.Macros = ParseDmxMacro(node, error);
                        }, "DmxMacros", error);

                    if(error.FieldsWithError.Count == 0)
                        groups.Add(dmxpgroup);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return groups;
        }
Exemple #35
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="device"></param>
 /// <param name="pr"></param>
 public void ProcessUpload(IDevice device, IParseResult pr)
 {
     OnProcessUpload(device, pr);
 }
        private static List<DmxChannel> ParseDmxChannel(XElement source, IParseResult result)
        {
            List<DmxChannel> channels = new List<DmxChannel>();

            var channelElements = source.Elements("DmxChannel");

            if (channelElements.Any())
            {
                foreach (XElement dmxChannelElement in channelElements)
                {
                    var dmxChannel = new DmxChannel();

                    ParseResult error = new ParseResult(dmxChannelElement.Name.LocalName);
                    string val;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(dmxChannelElement, "ChannelNum");
                            Validate(() => Validator.HasValue(val));

                            if (HaveRangeValue(val))
                            {
                                dmxChannel.ChanelNumRange = ParseRangeValue(val);
                            }
                            else
                            {
                                dmxChannel.ChannelNum = ParseDelimited(val, ",");

                                if (dmxChannel.ChannelNum.Length == 0)
                                    dmxChannel.ChannelNum = new[] { ParseValue<int>(val) };
                            }

                        }, "ChannelNum", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(dmxChannelElement, "DominantFeatureGroup");
                            if (!string.IsNullOrWhiteSpace(val))
                                dmxChannel.DominantFeatureGroup = ParseEnum<FeatureGroup>(val);
                        }, "DominantFeatureGroup", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(dmxChannelElement, "ElementNumber");
                            if (!string.IsNullOrWhiteSpace(val))
                                dmxChannel.ElementNumber = ParseValue<int>(val);
                        }, "ElementNumber", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseElement<string>(dmxChannelElement, "Default");
                            if (!string.IsNullOrWhiteSpace(val))
                                dmxChannel.Default = ParseValue<int>(val);
                        }, "Default", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseElement<string>(dmxChannelElement, "DmxChannelLabel");
                            dmxChannel.DmxChannelLabel = val;
                        }, "DmxChannelLabel", error);

                    TryExecute(
                        () =>
                        {
                            dmxChannel.Ranges = ParseDmxRange(dmxChannelElement, null, error);
                        }, "DmxRange", error);

                    TryExecute(
                        () =>
                        {
                            dmxChannel.Modules = ParseDmxModule(dmxChannelElement, error);
                        }, "DmxModule", error);

                    var conditionalRangeSets = ParseConditionalDmxRangeSet(dmxChannelElement, error);

                    if (conditionalRangeSets.Any())
                        dmxChannel.Ranges.AddRange(conditionalRangeSets.SelectMany(rs => rs.Value));

                    if (error.FieldsWithError.Count == 0)
                        channels.Add(dmxChannel);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return channels;
        }
Exemple #37
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public override void OnProcess(ITask task, IParseResult pr)
        {
            if (pr.IsSuccess)
            {
                string opera = task.Opera.Name;
                if (StringHelper.Equal(opera, "read"))
                {
                    CrlgxlData data = new CrlgxlData();
                    data.InstantFlux = Convert.ToDouble(pr.Results["if"]);
                    data.Sum = Convert.ToDouble(pr.Results["sum"]);
                    data.InstantHeat = Convert.ToDouble(pr.Results["ih"]);
                    data.SumHeat = Convert.ToDouble(pr.Results["sh"]);
                    data.GT = Convert.ToDouble(pr.Results["gt"]);
                    data.BT = Convert.ToDouble(pr.Results["bt"]);

                    task.Device.DeviceDataManager.Last = data;

                    int id = GuidHelper.ConvertToInt32(task.Device.Guid);
                    DBI.Instance.InsertCrlgxlData(id, data);
                }
            }
        }
        private static List<DmxMacro> ParseDmxMacro(XElement source, IParseResult result)
        {
            List<DmxMacro> macros = new List<DmxMacro>();

            var mocroElements = source.Elements("DmxMacro");

            if (mocroElements.Any())
            {
                foreach (XElement macroElement in mocroElements)
                {
                    var macro = new DmxMacro();
                    ParseResult error = new ParseResult(macroElement.Name.LocalName);

                    TryExecute(
                        () =>
                        {
                            macro.FeatureRanges = ParseFeatureRange(macroElement, error);
                        }, "FeatureRange", error);

                    TryExecute(
                        () =>
                        {
                            macro.TimingSets = ParseDmxTimingSet(macroElement, error);
                        }, "DmxTimingSet", error);

                    if (error.FieldsWithError.Count == 0)
                        macros.Add(macro);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return macros;
        }
        private static List<DmxModule> ParseDmxModule(XElement source, IParseResult result)
        {
            List<DmxModule> dmxRanges = new List<DmxModule>();

            var moduleElements = source.Elements("DmxModule");

            if (moduleElements.Any())
            {
                foreach (var moduleElement in moduleElements)
                {
                    var module = new DmxModule();

                    ParseResult error = new ParseResult(moduleElement.Name.LocalName);
                    string val;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(moduleElement, "DmxModuleName");
                            Validate(() => Validator.HasValue(val));
                            module.Name = val;
                        }, "DmxModuleName", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(moduleElement, "ModuleInstance");
                            Validate(() => Validator.HasValue(val));
                            module.Instance = ParseValue<int>(val);
                        }, "ModuleInstance", error);

                    if (moduleElement.HaveAttribute("TempElementModuleInstance"))
                    {
                        TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(moduleElement, "TempElementModuleInstance");
                            Validate(() => Validator.HasValue(val));
                            module.TempElementModuleInstance = ParseValue<int>(val);
                        }, "TempElementModuleInstance", error);
                    }

                    if (error.FieldsWithError.Count == 0)
                        dmxRanges.Add(module);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return dmxRanges;
        }
        private static List<DmxModuleDefinition> ParseDmxModuleDefinition(XElement source, IParseResult result)
        {
            List<DmxModuleDefinition> moduleDefinitions = new List<DmxModuleDefinition>();

            var moduleElements = source.Elements("DmxModuleDefinition");

            if (moduleElements.Any())
            {
                ParseResult error;
                string val;
                foreach (XElement moduleElement in moduleElements)
                {
                    error = new ParseResult(moduleElement.Name.LocalName);
                    var module = new DmxModuleDefinition();

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(moduleElement, "DmxModuleName");
                            Validate(() => Validator.HasValue(val));
                            module.ModuleName = val;
                        }, "DmxModuleName", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(moduleElement, "DmxModuleFootprint");
                            Validate(() => Validator.HasValue(val));
                            module.ModuleFootprint = ParseValue<int>(val);
                        }, "DmxModuleFootprint", error);

                    TryExecute(
                        () =>
                        {
                            module.Channels = ParseDmxChannel(moduleElement, error);
                        }, "DmxChannel", error);

                    if (error.FieldsWithError.Count == 0)
                        moduleDefinitions.Add(module);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return moduleDefinitions;
        }
Exemple #41
0
    public void ReportParseErrors(IParseResult parseResult, ITextSnapshot snapshot)
    {
      _errorListProvider.SuspendRefresh();
      try
      {
        // remove any previously created errors to get a clean start
        ClearErrors();

        var messages = (CompilerMessageList)parseResult.CompilerMessages;

        foreach (var error in messages.GetMessages())
        {
          // creates the instance that will be added to the Error List
          var nSpan = error.Location.Span;
          var span = new Span(nSpan.StartPos, nSpan.Length);
          if (span.Start >= snapshot.Length)
            continue;
          ErrorTask task = new ErrorTask();
          task.Category = TaskCategory.All;
          task.Priority = TaskPriority.Normal;
          task.Document = _textBuffer.Properties.GetProperty<ITextDocument>(typeof(ITextDocument)).FilePath;
          task.ErrorCategory = TranslateErrorCategory(error);
          task.Text = error.Text;
          task.Line = snapshot.GetLineNumberFromPosition(span.Start);
          task.Column = span.Start - snapshot.GetLineFromLineNumber(task.Line).Start;
          task.Navigate += OnTaskNavigate;
          _errorListProvider.Tasks.Add(task);
          _previousErrors.Add(task);

          var trackingSpan = snapshot.CreateTrackingSpan(span, SpanTrackingMode.EdgeNegative);
          _squiggleTagger.CreateTagSpan(trackingSpan, new ErrorTag("syntax error", error.Text));
          _previousSquiggles.Add(new TrackingTagSpan<IErrorTag>(trackingSpan, new ErrorTag("syntax error", error.Text)));
        }
      }
      finally { _errorListProvider.ResumeRefresh(); }
    }
        private static Dictionary<MediaRangeInfo, List<Slot>> ParseMediaRangeInfo(XElement source, IParseResult result)
        {
            Dictionary<MediaRangeInfo,List<Slot>> ranges = new Dictionary<MediaRangeInfo, List<Slot>>();

            var rangeElements = source.Elements("MediaRange");

            if (rangeElements.Any())
            {
                MediaRangeInfo range;
                ParseResult error;
                string val;
                XElement node;

                foreach (var rangeElement in rangeElements)
                {
                    range = new MediaRangeInfo();
                    error = new ParseResult(rangeElement.Name.LocalName);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(rangeElement, "MediaType");
                            Validate(() => Validator.HasValue(val));
                            range.MediaType = ParseEnum<MediaType>(val);
                        }, "MediaType", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(rangeElement, "MediaManufacturer");
                            Validate(() => Validator.HasValue(val));
                            range.Manufacturer = val;
                        }, "MediaManufacturer", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(rangeElement, "MediaRangeName");
                            Validate(() => Validator.HasValue(val));
                            range.Name = val;
                        }, "MediaRangeName", error);

                    if (error.FieldsWithError.Count == 0)
                    {
                        ranges[range] = ParseSlot(rangeElement, range, error);
                    }

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return ranges;
        }
Exemple #43
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        private void ProcessReadStatus(ITask task, IParseResult pr)
        {
            XD1100Device d = (XD1100Device ) task.Device;

            byte[] bsStatus = (byte[])pr.Results["data"];
            Debug.Assert(bsStatus.Length == 4);
            byte b = bsStatus[3];
            bool hasPowerAlarm = (b & (byte)Math.Pow(2, 7)) > 0;
            d.StatusAndAlarmDictionary[XD1100Device.StatusAndAlarmEnum.AlaramPower] = hasPowerAlarm;
        }
Exemple #44
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="d"></param>
        /// <param name="pr"></param>
        private void ProcessReadReal(ITask task, IParseResult pr)
        {
            XD1100Data data = new XD1100Data();

            data.DT = DateTime.Now;

            data.GT1 = Convert.ToSingle(pr.Results["GT1"]);
            data.BT1 = Convert.ToSingle(pr.Results["BT1"]);
            data.GT2 = Convert.ToSingle(pr.Results["GT2"]);
            data.BT2 = Convert.ToSingle(pr.Results["BT2"]);
            data.OT = Convert.ToSingle(pr.Results["OT"]);
            data.GTBase2 = Convert.ToSingle(pr.Results["GTBase2"]);
            data.GP1 = Convert.ToSingle(pr.Results["GP1"]);
            data.BP1 = Convert.ToSingle(pr.Results["BP1"]);
            data.WL = Convert.ToSingle(pr.Results["WL"]);
            data.GP2 = Convert.ToSingle(pr.Results["GP2"]);
            data.BP2 = Convert.ToSingle(pr.Results["BP2"]);
            data.I1 = Convert.ToSingle(pr.Results["I1"]);
            data.IR = Convert.ToSingle(pr.Results["IR"]);
            data.I2 = Convert.ToSingle(pr.Results["I2"]);
            data.S2 = Convert.ToInt32(pr.Results["S2"]);
            data.S1 = Convert.ToInt32(pr.Results["S1"]);
            data.SR = Convert.ToInt32(pr.Results["SR"]);
            data.OD = Convert.ToInt32(pr.Results["OD"]);
            //data.IH1 = Convert.ToDouble (pr.Results ["IH1"]);
            //data.SH1 = Convert.ToDouble (pr.Results ["SH1"]);
            data.IH1 = 0d;
            data.SH1 = 0d;

            // 2012-10-09 xd1100 pump status
            //
            bool[] pumpStatusArray = (bool[])pr.Results["pumpstate"];

            data.CM1 = IsPumpRun(pumpStatusArray[0]);
            data.CM2 = IsPumpRun(pumpStatusArray[1]);
            data.CM3 = IsPumpRun(pumpStatusArray[2]);
            data.RM1 = IsPumpRun(pumpStatusArray[3]);
            data.RM2 = IsPumpRun(pumpStatusArray[4]);

            object objWarn = pr.Results["Warn"];
            IList listWarn = (IList)objWarn;

            bool isContainsPowerAlaram = listWarn.Contains(POWER_ALARM);
            if (!isContainsPowerAlaram)
            {
                if (HasPowerAlaramInStatus(task.Device as XD1100Device))
                {
                    listWarn.Add(POWER_ALARM);
                }
            }

            WarnWrapper ww = new WarnWrapper(listWarn);
            data.Warn = ww;

            XD1100Device d = (XD1100Device)task.Device;
            //List<IFluxProvider> fluxProviderList = GetFluxProviderList(d);
            DeviceCollection fluxDevices = d.Station.Devices.GetDevices(this.KIND_FLUX);
            fluxDevices = RemoveUnkonwnPlaceDevice(fluxDevices);
            bool hasFluxDevices = fluxDevices.Count > 0;
            bool hasFluxData = fluxDevices.HasData(HasDataOption.All);

            bool success = true;
            if (hasFluxDevices)
            {
                if (hasFluxData)
                {
                    Hashtable fluxResultHashTable = GetFluxDatas(fluxDevices);
                    foreach (object obj in fluxResultHashTable.Keys)
                    {
                        FluxPlace place = (FluxPlace)obj;
                        List<double> list = (List<double>)fluxResultHashTable[obj];

                        switch (place)
                        {
                            case FluxPlace.FirstSide:
                                data.I1 = Convert.ToSingle(list[0]);
                                data.S1 = Convert.ToInt32(list[1]);
                                break;

                            case FluxPlace.SecondSide:
                                data.I2 = Convert.ToSingle(list[0]);
                                data.S2 = Convert.ToInt32(list[1]);
                                break;

                            case FluxPlace.RecruitSide:
                                data.IR = Convert.ToSingle(list[0]);
                                data.SR = Convert.ToInt32(list[1]);
                                break;

                            default:
                                break;

                        }
                    }
                }
                else
                {
                    success = false;
                }
            }

            if (!success)
            {
                return;
            }

            DeviceCollection heatDevices = d.Station.Devices.GetDevices(KIND_HEAT);
            //heatDevices = RemoveUnkonwnPlaceDevice(heatDevices);

            heatDevices = this.Filter(heatDevices, FluxPlace.FirstSide);

            bool hasHeatDevices = heatDevices.Count > 0;
            bool hasHeatData = heatDevices.HasData(HasDataOption.All);
            if (hasHeatDevices)
            {
                if (hasHeatData)
                {
                    double instantFlux = 0d;
                    double sumFlux = 0d;
                    double ih = 0d;
                    double sh = 0d;
                    foreach (IDevice hd in heatDevices)
                    {
                        IData last = hd.DeviceDataManager.Last;
                        ih += Convert.ToDouble(last.GetValue("InstantHeat"));
                        sh += Convert.ToDouble(last.GetValue("SumHeat"));
                        instantFlux += Convert.ToDouble(last.GetValue("InstantFlux"));
                        sumFlux += Convert.ToDouble(last.GetValue("Sum"));
                    }

                    data.I1 = Convert.ToSingle(instantFlux);
                    data.S1 = Convert.ToInt32(sumFlux);
                    data.IH1 = ih;
                    data.SH1 = sh;
                }
                else
                {
                    success = false;
                }

            }
            if (!success)
            {
                return;
            }

            switch (d.HtmMode.ModeValue)
            {
                case ModeValue.Indirect:
                    data.CyclePumpDatas.Add(new PumpData("1#", Convert.ToInt32(pr.Results["cyclefrequency"])));
                    data.RecruitPumpDatas.Add(new PumpData("1#", Convert.ToInt32(pr.Results["recruitfrequency"])));
                    break;

                case ModeValue.Direct:
                    data.GT1 = data.GT2;
                    data.BT1 = data.BT2;
                    break;

                case ModeValue.Mixed:
                    data.BT1 = data.BT2;
                    data.CyclePumpDatas.AddRange(
                        new PumpData("1#", Convert.ToInt32(pr.Results["cyclefrequency"])),
                        new PumpData("2#", Convert.ToInt32(pr.Results["recruitfrequency"])),
                        new PumpData("3#", Convert.ToInt32(pr.Results["I2"])));

                    break;
            }
            d.DeviceDataManager.Last = data;

            // save
            //
            int id = GuidHelper.ConvertToInt32(d.Guid);
            DBI.Instance.InsertXD1100Data(id, data);
        }
Exemple #45
0
 public abstract void OnProcessUpload(IDevice device, IParseResult pr);
Exemple #46
0
 /// <summary>
 /// Creates an instance.
 /// </summary>
 public ParseException(IParseResult result)
     : base(result.ToMessage())
 {
     Result = result;
 }
Exemple #47
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="device"></param>
 /// <param name="pr"></param>
 public override void OnProcessUpload(IDevice device, IParseResult pr)
 {
     //throw new NotImplementedException();
 }
        private static List<FeatureRange> ParseFeatureRange(XElement source, IParseResult result)
        {
            List<FeatureRange> ranges = new List<FeatureRange>();

            var rangeElements = source.Elements("FeatureRange");

            if (rangeElements.Any())
            {
                foreach (var rangeElement in rangeElements)
                {
                    var range = new FeatureRange();

                    ParseResult error = new ParseResult(rangeElement.Name.LocalName);
                    string val;
                    XElement node;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(rangeElement, "FeatureName");
                            Validate(() => Validator.HasValue(val));
                            range.FeatureName = ParseEnum<FeatureName>(val);
                        }, "FeatureName", error);

                    TryExecute(
                        () =>
                        {
                            node = rangeElement.GetElement("Value", false);

                            if(node == null) return;
                            range.Value = node.Value;

                            TryExecute(
                                () =>
                                {
                                    val = ParseAttribute<string>(node, "UnitName");
                                    Validate(() => Validator.HasValue(val));
                                    range.UnitName = ParseEnum<UnitType>(val);
                                }, "UnitName", error);

                        }, "Value", error);

                    if (error.FieldsWithError.Count == 0)
                        ranges.Add(range);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return ranges;
        }
Exemple #49
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="task"></param>
        /// <param name="pr"></param>
        public override void OnProcess(ITask task, IParseResult pr)
        {
            if (pr.IsSuccess)
            {
                //Xd100eData data = Xd100eData.GetCachedData();

                Xd100e xd100eDevice = (Xd100e)task.Device;
                Xd100eData data = xd100eDevice.GetCachedData();

                Console.WriteLine("ori xd100e id: " + GuidHelper.ConvertToInt32(xd100eDevice.Guid));

                string opera = task.Opera.Name;

                if (StringHelper.Equal(opera, READ_REAL))
                {
                    for (int i = Xd100eData.BeginChannelNO; i <= Xd100eData.EndChannelNO; i++)
                    {
                        int no = i;
                        string channelName = GetChannelName(no);

                        float val = Convert.ToSingle(pr.Results[channelName]);
                        val /= 100f;

                        data.SetChannelDataAI(no, val);
                        data.IsSetAI = true;
                    }
                }

                else if (StringHelper.Equal(opera, READ_REAL_DI))
                {
                    //XD100EData data = xd100eDevice.XD100EData;
                    for (int i = Xd100eData.BeginChannelNO; i <= Xd100eData.EndChannelNO; i++)
                    {
                        int no = i;
                        string channelName = GetChannelName(no);
                        byte value = Convert.ToByte(pr.Results[channelName]);
                        data.SetChannelDataDI(no, value > 0);
                        data.IsSetDI = true;
                    }

                }

                //
                //
                if (data.IsComplete())
                {
                    double ir = 0d, sr = 0d;
                    //bool hasRecuritFluxDevice;
                    string recuritEx = string.Empty;

                    //bool success = GetFluxValues(xd100eDevice, FluxPlace.RecruitSide, out hasRecuritFluxDevice,
                    //    out ir, out sr, out recuritEx);

                    // get kind == fluxdevice device collection
                    //
                    DeviceCollection rDevices = xd100eDevice.Station.Devices.GetDevices(KIND_FLUX_DEVICE);
                    rDevices = Filter(rDevices, FluxPlace.RecruitSide);
                    bool hasRecuritFluxDevice = rDevices.Count > 0;
                    bool hasRecuritFluxData = rDevices.HasData(HasDataOption.All);
                    if (hasRecuritFluxData)
                    {
                        ir = Calc(rDevices, "InstantFlux", CalcType.Sum);
                        sr = Calc(rDevices, "Sum", CalcType.Sum);
                        recuritEx = GetRecuritEx(rDevices);
                    }

                    // get recruite device collection
                    // get recruite data
                    //
                    // get kind == heatdevcie device collection
                    // check has data
                    // [x] get place == first ?
                    // get device gt bt

                    double if1 = 0d, sf1 = 0d, gt1 = 0d, bt1 = 0d, ih1 = 0d, sh1=0d;
                    //bool hasFirstFluxDevice;
                    //string firstEx;
                    //bool success2 = GetFluxValues(xd100eDevice, FluxPlace.FirstSide, out hasFirstFluxDevice,
                    //    out if1, out sf1, out firstEx);

                    DeviceCollection hs = xd100eDevice.Station.Devices.GetDevices(KIND);
                    hs = Filter(hs, FluxPlace.FirstSide);

                    bool hasFirstFluxDevice = hs.Count > 0;
                    bool hasFirstFluxData = hs.HasData(HasDataOption.All);
                    if (hasFirstFluxData)
                    {
                        if1 = Calc(hs, "InstantFlux", CalcType.Sum);
                        sf1 = Calc(hs, "Sum", CalcType.Sum);
                        gt1 = Calc(hs, "GT", CalcType.Avg);
                        bt1 = Calc(hs, "BT", CalcType.Avg);
                        ih1 = Calc(hs, "InstantHeat", CalcType.Sum);
                        sh1 = Calc(hs, "SumHeat", CalcType.Sum);

                    }

                    bool success = true;
                    if (hasRecuritFluxDevice )
                    {
                        if (hasRecuritFluxData)
                        {
                            data.IR = ir;
                            data.SR = sr;
                            data.REx = recuritEx;
                        }
                        else
                        {
                            success = false;
                        }
                    }

                    //
                    //
                    if (success)
                    {
                        if (hasFirstFluxDevice)
                        {
                            if (hasFirstFluxData)
                            {
                                // xd100e ai5 == if1
                                //
                                // ai1 - gt1, ai2 - bt1
                                //
                                data.IF1 = if1;
                                data.SF1 = sf1;

                                data.AI5 = Convert.ToSingle(if1);
                                data.AI1 = Convert.ToSingle(gt1);
                                data.AI2 = Convert.ToSingle(bt1);

                                data.IH1 = ih1;
                                data.SH1 = sh1;
                            }
                            else
                            {
                                success = false;
                            }
                        }
                    }

                    if (success)
                    {
                        data.DT = DateTime.Now;
                        xd100eDevice.DeviceDataManager.Last = data;

                        int deviceID = GuidHelper.ConvertToInt32(xd100eDevice.Guid);
                        Console.WriteLine("write xd100e id: " + deviceID);
                        DBI.Instance.InsertXd100eData(deviceID, data);
                    }

                    //if (success && success2)
                    //{
                    //    data.IR = ir;
                    //    data.SR = sr;
                    //    data.REx = recuritEx;

                    //    data.IF1 = if1;
                    //    data.SF1 = sf1;

                    //    if (hasFirstFluxDevice)
                    //    {
                    //        // xd100e ai5 == if1
                    //        //
                    //        // ai1 - gt1, ai2 - bt1
                    //        //
                    //        data.AI5 = Convert.ToSingle(if1);
                    //        data.AI1 = Convert.ToSingle(GetGT1FromCRL_G(xd100eDevice));
                    //        data.AI2 = Convert.ToSingle(GetBT1FromCRL_G(xd100eDevice));
                    //    }

                    //    data.DT = DateTime.Now;
                    //    xd100eDevice.DeviceDataManager.Last = data;

                    //    int deviceID = GuidHelper.ConvertToInt32(xd100eDevice.Guid);
                    //    Console.WriteLine("write xd100e id: " + deviceID);
                    //    DBI.Instance.InsertXd100eData(deviceID, data);
                    //}
                }
            }
        }
        private static List<Feature> ParseFeature(XElement source, IParseResult result)
        {
            List<Feature> features = new List<Feature>();

            var featureElements = source.Elements("Feature");

            if (featureElements.Any())
            {
                foreach (var featureElement in featureElements)
                {
                    var feature = new Feature();

                    ParseResult error = new ParseResult(featureElement.Name.LocalName);
                    string val;
                    XElement node;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(featureElement, "FeatureName");
                            Validate(() => Validator.HasValue(val));
                            feature.FeatureName = ParseEnum<FeatureName>(val);
                        }, "FeatureName", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(featureElement, "UnitName");
                            if (!string.IsNullOrWhiteSpace(val))
                                feature.UnitName = ParseEnum<UnitType>(val);
                        }, "UnitName", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(featureElement, "WheelType");
                            if (!string.IsNullOrWhiteSpace(val))
                                feature.WheelType = ParseEnum<WheelType>(val);
                        }, "WheelType", error);

                    TryExecute(
                        () =>
                        {
                            if (featureElement.HaveElement("ResponseTime"))
                                feature.ResponseTime = ParseResponseTime(featureElement, error).FirstOrDefault();
                        }, "ResponseTime", error);

                    feature.Specs = ParseSpecValue(featureElement, error);
                    feature.Slots = new List<Slot>();

                    var nodes = featureElement.Elements("Slot");
                    if (nodes.Any())
                    {
                        feature.Slots = nodes.SelectMany(n => ParseSlot(n, null, error)).ToList();
                    }

                    var mediaSlots = ParseMediaRangeInfo(featureElement, error);
                    feature.Slots.AddRange(mediaSlots.SelectMany(ms => ms.Value).ToList());

                    if (error.FieldsWithError.Count == 0)
                        features.Add(feature);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return features;
        }
        private static CompoundStructure ParseCompoundSturcture(XElement source, IParseResult result)
        {
            XElement structureElement = source.Element("CompoundStructure");

            if (structureElement == null) return null;

            ParseResult error = new ParseResult(structureElement.Name.LocalName);

            CompoundStructure structure = new CompoundStructure();

            TryExecute(
                () =>
                {
                    XElement node;
                    string val;

                    if(structureElement.HaveElement("CellGeometry"))
                    {
                        node = structureElement.GetElement("CellGeometry", false);
                        TryExecute(
                            () =>
                            {
                                val = ParseAttribute<string>(node, "XCount");
                                Validate(() => Validator.HasValue(val));
                                structure.GeometryXCount = ParseValue<int>(val);
                            }, "XCount", error);

                        TryExecute(
                            () =>
                            {
                                val = ParseAttribute<string>(node, "YCount");
                                Validate(() => Validator.HasValue(val));
                                structure.GeometryYCount = ParseValue<int>(val);
                            }, "YCount", error);
                    }

                    if (structureElement.HaveElement("CellSize"))
                    {
                        node = structureElement.GetElement("CellSize", false);
                        TryExecute(
                            () =>
                            {
                                val = ParseAttribute<string>(node, "XSize");
                                Validate(() => Validator.HasValue(val));
                                structure.CellSizeX = ParseValue<int>(val);
                            }, "XSize", error);

                        TryExecute(
                            () =>
                            {
                                val = ParseAttribute<string>(node, "YSize");
                                Validate(() => Validator.HasValue(val));
                                structure.CellSizeY = ParseValue<int>(val);
                            }, "YSize", error);
                    }

                    if (structureElement.HaveElement("CellShape"))
                    {
                        TryExecute(
                            () =>
                            {
                                val = ParseElement<string>(structureElement, "CellShape");
                                Validate(() => Validator.HasValue(val));
                                structure.CellShape = ParseEnum<CellType>(val);
                            }, "CellShape", error);
                    }

                }, "CompoundStructure", error);

            if (error.HaveError) result.ErrorList.Add(error);

            return structure;
        }
        private static List<DmxTimingSet> ParseDmxTimingSet(XElement source, IParseResult result)
        {
            List<DmxTimingSet> timingSets = new List<DmxTimingSet>();

            var tsElements = source.Elements("DmxTimingSet");

            if (tsElements.Any())
            {
                foreach (var tsElement in tsElements)
                {
                    var timingSet = new DmxTimingSet();

                    ParseResult error = new ParseResult(tsElement.Name.LocalName);
                    string val;
                    XElement node;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(tsElement, "HoldTime");
                            Validate(() => Validator.HasValue(val));
                            timingSet.HoldTime = ParseValue<int>(val);
                        }, "HoldTime", error);

                    TryExecute(
                        () =>
                        {
                            timingSet.ChannelSetting = ParseDmxChannelSetting(tsElement, error).FirstOrDefault();
                        }, "DmxChannelSetting", error);

                    if (error.FieldsWithError.Count == 0)
                        timingSets.Add(timingSet);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return timingSets;
        }
        Action IRunnerRepository.FindRunner(IParseResult inResult, ConsoleLogEventHandler inEvent)
        {
            Action<IParseResult, ConsoleLogEventHandler> act;
            if (mLookups.TryGetValue(inResult.GetType(), out act)) {
                return () => {
                    act(inResult, inEvent);
                };
            }

            throw new NotSupportedException(inResult.GetType().ToString());
        }
        private static DmxSpecification ParseDmxSpecification(XElement source, IParseResult result)
        {
            XElement dmxSpecElement = source.Element("DmxSpecification");

            var dmxSpec = new DmxSpecification();

            if (dmxSpecElement != null)
            {
                ParseResult error = new ParseResult(dmxSpecElement.Name.LocalName);
                string val;

                TryExecute(
                    () =>
                    {
                        val = ParseAttribute<string>(dmxSpecElement, "DmxFootprint");
                        Validate(() => Validator.HasValue(val));
                        dmxSpec.DmxFootprint = ParseValue<int>(val);
                    }, "DmxFootprint", error);

                TryExecute(
                    () =>
                    {
                        if (dmxSpecElement.HaveElement("DmxPatchgroup"))
                            dmxSpec.PatchGroups = ParseDmxPatchgroup(dmxSpecElement, error);
                    }, "DmxPatchgroup", error);

                TryExecute(
                    () =>
                    {
                        if (dmxSpecElement.HaveElement("DmxModuleDefinitions"))
                            dmxSpec.ModuleDefinitions = ParseDmxModuleDefinition(dmxSpecElement.Element("DmxModuleDefinitions"), error);
                    }, "DmxModuleDefinitions", error);

                if(error.HaveError) result.ErrorList.Add(error);
            }

            return dmxSpec;
        }
        private static List<DmxChannelSetting> ParseDmxChannelSetting(XElement source, IParseResult result)
        {
            List<DmxChannelSetting> channelSettings = new List<DmxChannelSetting>();

            var settingElements = source.Elements("DmxChannelSetting");

            if (settingElements.Any())
            {
                foreach (var settingElement in settingElements)
                {
                    var setting = new DmxChannelSetting();

                    ParseResult error = new ParseResult(settingElement.Name.LocalName);
                    string val;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(settingElement, "ChannelNum");
                            Validate(() => Validator.HasValue(val));
                            setting.ChannelNum = ParseValue<int>(val);
                        }, "ChannelNum", error);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(settingElement, "DmxValue");
                            Validate(() => Validator.HasValue(val));

                            if (HaveRangeValue(val))
                            {
                                setting.DmxValueRange = ParseRangeValue(val);
                                return;
                            }

                            setting.DmxValue = ParseValue<int>(val);
                        }, "DmxValue", error);

                    if (error.FieldsWithError.Count == 0)
                        channelSettings.Add(setting);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return channelSettings;
        }
        private static List<DmxRangeSetCondition> ParseDmxRangeSetCondition(XElement source, IParseResult result)
        {
            List<DmxRangeSetCondition> setConditions = new List<DmxRangeSetCondition>();

            var conditionElements = source.Elements("DmxRangeSetCondition");

            if (conditionElements.Any())
            {
                string val;
                foreach (XElement conditionElement in conditionElements)
                {
                    var condition = new DmxRangeSetCondition();
                    ParseResult error = new ParseResult(conditionElement.Name.LocalName);

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(conditionElement, "ChannelNum");
                            Validate(() => Validator.HasValue(val));
                            Validate(() => Validator.IsMatch("\\d+", val));
                            condition.ChannelNum = ParseValue<int>(val);
                        }, "ChannelNum", error);

                    TryExecute(
                        () =>
                        {
                            var node = conditionElement.GetElement("DmxRange", true);

                            val = ParseAttribute<string>(node, "Range");
                            Validate(() => Validator.HasValue(val));
                            Validate(() => Validator.IsMatch("\\d+.{3}\\d+", val));
                            condition.DmxRange = ParseRangeValue(val);
                        }, "DmxRange", error);

                    if(error.FieldsWithError.Count == 0)
                        setConditions.Add(condition);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return setConditions;
        }
Exemple #57
0
 public override void OnProcessUpload(IDevice device, IParseResult pr)
 {
     // nothing
     //
 }
        private static List<DmxRange> ParseDmxRange(XElement source, ConditionalDmxRangeSet rangeSet, IParseResult result)
        {
            List<DmxRange> dmxRanges = new List<DmxRange>();

            var rangeElements = source.Elements("DmxRange");

            if (rangeElements.Any())
            {
                foreach (var rangeElement in rangeElements)
                {
                    var range = new DmxRange();

                    ParseResult error = new ParseResult(rangeElement.Name.LocalName);
                    string val;

                    TryExecute(
                        () =>
                        {
                            val = ParseAttribute<string>(rangeElement, "Range");
                            Validate(() => Validator.HasValue(val));
                            Validate(() => Validator.IsMatch("\\d+.{3}\\d+", val));
                            range.Range = ParseRangeValue(val);
                        }, "Range", error);

                    TryExecute(
                        () =>
                        {
                            if (rangeElement.HaveElement("DmxRangeLabel"))
                            {
                                range.RangeLabel = rangeElement.GetElementValue("DmxRangeLabel");
                            }
                        }, "DmxRangeLabel", error);

                    TryExecute(
                        () =>
                        {
                            range.FeatureRange = ParseFeatureRange(rangeElement, error);
                        }, "FeatureRange", error);

                    range.ConditionalRangeSet = rangeSet;

                    if (error.FieldsWithError.Count == 0)
                        dmxRanges.Add(range);

                    if (error.HaveError) result.ErrorList.Add(error);
                }
            }

            return dmxRanges;
        }
Exemple #59
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="task"></param>
 /// <param name="pr"></param>
 public abstract void OnProcess(ITask task, IParseResult pr);
Exemple #60
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="task"></param>
 /// <param name="pr"></param>
 public void Process(ITask task, IParseResult pr)
 {
     OnProcess(task, pr);
 }