private static QueryFilterCondition ParseTimeTagValue(QueryTag queryTag, string value) { if (QueryLimit.IsValidRangeQueryTag(queryTag)) { var splitString = value.Split('-'); if (splitString.Length == 2) { string minTime = splitString[0].Trim(); string maxTime = splitString[1].Trim(); // Make sure both parts of the range values are not empty. // If so, throw an exception. ValidateEmptyValuesForRangeQuery(minTime, maxTime); long parsedMinTime = string.IsNullOrEmpty(minTime) ? 0 : ParseTime(minTime, queryTag); long parsedMaxTime = string.IsNullOrEmpty(maxTime) ? TimeSpan.TicksPerDay : ParseTime(maxTime, queryTag); if (parsedMinTime > parsedMaxTime) { throw new QueryParseException(string.Format( DicomCoreResource.InvalidTimeRangeValue, value, minTime, maxTime)); } return(new LongRangeValueMatchCondition(queryTag, parsedMinTime, parsedMaxTime)); } } long parsedTime = ParseTime(value, queryTag); return(new LongSingleValueMatchCondition(queryTag, parsedTime)); }
private static QueryFilterCondition ParseDateTagValue(DicomTag dicomTag, string value) { if (QueryLimit.IsValidRangeQueryTag(dicomTag)) { var splitString = value.Split('-'); if (splitString.Length == 2) { string minDate = splitString[0].Trim(); string maxDate = splitString[1].Trim(); DateTime parsedMinDate = ParseDate(minDate, dicomTag.DictionaryEntry.Keyword); DateTime parsedMaxDate = ParseDate(maxDate, dicomTag.DictionaryEntry.Keyword); if (parsedMinDate > parsedMaxDate) { throw new QueryParseException(string.Format( DicomCoreResource.InvalidDateRangeValue, value, minDate, maxDate)); } return(new DateRangeValueMatchCondition(dicomTag, parsedMinDate, parsedMaxDate)); } } DateTime parsedDate = ParseDate(value, dicomTag.DictionaryEntry.Keyword); return(new DateSingleValueMatchCondition(dicomTag, parsedDate)); }
private static QueryFilterCondition ParseDateOrTimeTagValue(QueryTag queryTag, string value, string exceptionBaseMessage, Func <string, string, DateTime> parseValue) { if (QueryLimit.IsValidRangeQueryTag(queryTag)) { var splitString = value.Split('-'); if (splitString.Length == 2) { string minDateTime = splitString[0].Trim(); string maxDateTime = splitString[1].Trim(); // Make sure both parts of the range values are not empty. // If so, throw an exception. ValidateEmptyValuesForRangeQuery(minDateTime, maxDateTime); DateTime parsedMinDateTime = string.IsNullOrEmpty(minDateTime) ? DateTime.MinValue : parseValue(minDateTime, queryTag.GetName()); DateTime parsedMaxDateTime = string.IsNullOrEmpty(maxDateTime) ? DateTime.MaxValue : parseValue(maxDateTime, queryTag.GetName()); if (parsedMinDateTime > parsedMaxDateTime) { throw new QueryParseException(string.Format( exceptionBaseMessage, value, minDateTime, maxDateTime)); } return(new DateRangeValueMatchCondition(queryTag, parsedMinDateTime, parsedMaxDateTime)); } } DateTime parsedDateTime = parseValue(value, queryTag.GetName()); return(new DateSingleValueMatchCondition(queryTag, parsedDateTime)); }