Exemplo n.º 1
0
        private Item GetTimeItemFromProxy(XsdNs.GetObservationTypeTemporalFilter proxy)
        {
            switch (proxy.TemporalOpsTypeInfo)
            {
            case XsdNs.TemporalObsTypeType.After:
            case XsdNs.TemporalObsTypeType.Before:

                // It is necessary to build a PropertyType object
                var timeInstantObj  = ((XsdNs.BinaryTemporalOpType_TimeInstant)proxy.TemporalOps).TimeInstant;
                var timeInstantProp = new XsdNs.TimeInstantPropertyType
                {
                    TimeInstant = timeInstantObj
                };

                return(new Item_TimeInstant(timeInstantProp));

            case XsdNs.TemporalObsTypeType.During:

                // It is necessary to build a PropertyType object
                var timePeriodObj  = ((XsdNs.BinaryTemporalOpType_TimePeriod)proxy.TemporalOps).TimePeriod;
                var timePeriodProp = new XsdNs.TimePeriodPropertyType
                {
                    TimePeriod = timePeriodObj
                };

                return(new Item_TimeRange(timePeriodProp));

            default:
                throw new XNeut.InvalidMessageException("Unsupported temporal operator in message: " + proxy.TemporalOpsTypeInfo.ToString());
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Constructor. Use this to instantiate an item from XML (observation result).
        /// </summary>
        /// <param name="el">XML contents.</param>
        /// <exception cref="XNeut.InvalidMessageException">Thrown if an error is encountered.</exception>
        internal Item_TimeRange(XsdNs.TimePeriodPropertyType el) : base(XNeut.Helper.TypeUri_Temporal)
        {
            try
            {
                var startRaw = (XsdNs.TimePositionType)el.TimePeriod.Item;
                var endRaw   = (XsdNs.TimePositionType)el.TimePeriod.Item1;

                Start = XNeut.Helper.DateTimeFromString(startRaw.Value);
                End   = XNeut.Helper.DateTimeFromString(endRaw.Value);

                ValidateStartEnd(Start, End);
            }
            catch (ArgumentException e)
            {
                throw new XNeut.InvalidMessageException("Invalid time range values", e);
            }
            catch (InvalidCastException e)
            {
                throw new XNeut.InvalidMessageException("Invalid time range values", e);
            }
            catch (NullReferenceException e)
            {
                throw new XNeut.InvalidMessageException("Invalid time range (something missing?)", e);
            }
        }