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()); } }
/// <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); } }