2 // System.Xml.Query.XQueryConvert
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2004 Novell Inc.
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System
.Globalization
;
37 using System
.Xml
.Schema
;
41 // basically this class is obsoleted and removed from .NET 2.0.
42 internal class XQueryConvert
44 private XQueryConvert ()
48 public static XmlTypeCode
GetFallbackType (XmlTypeCode type
)
51 case XmlTypeCode
.AnyAtomicType
:
52 return XmlTypeCode
.Item
;
53 case XmlTypeCode
.UntypedAtomic
:
54 return XmlTypeCode
.String
;
55 case XmlTypeCode
.Notation
:
56 return XmlTypeCode
.QName
;
57 case XmlTypeCode
.NormalizedString
:
58 case XmlTypeCode
.Token
:
59 case XmlTypeCode
.Language
:
60 case XmlTypeCode
.NmToken
:
61 case XmlTypeCode
.Name
:
62 case XmlTypeCode
.NCName
:
64 case XmlTypeCode
.Idref
:
65 case XmlTypeCode
.Entity
:
66 return XmlTypeCode
.String
;
67 case XmlTypeCode
.NonPositiveInteger
:
68 return XmlTypeCode
.Decimal
;
69 case XmlTypeCode
.NegativeInteger
:
70 return XmlTypeCode
.NonPositiveInteger
;
71 case XmlTypeCode
.Long
:
72 return XmlTypeCode
.Integer
;
73 case XmlTypeCode
.Short
:
74 return XmlTypeCode
.Int
;
75 case XmlTypeCode
.Byte
:
76 return XmlTypeCode
.Int
;
77 case XmlTypeCode
.NonNegativeInteger
:
78 return XmlTypeCode
.Decimal
;
79 case XmlTypeCode
.UnsignedLong
:
80 return XmlTypeCode
.NonNegativeInteger
;
81 case XmlTypeCode
.UnsignedInt
:
82 return XmlTypeCode
.Integer
;
83 case XmlTypeCode
.UnsignedShort
:
84 return XmlTypeCode
.Int
;
85 case XmlTypeCode
.UnsignedByte
:
86 return XmlTypeCode
.UnsignedShort
;
87 case XmlTypeCode
.PositiveInteger
:
88 return XmlTypeCode
.NonNegativeInteger
;
90 return XmlTypeCode
.None
;
94 // Individual conversion
96 public static string AnyUriToString (string value)
101 public static byte [] Base64BinaryToHexBinary (byte [] value)
103 return XmlConvert
.FromBinHexString (Convert
.ToBase64String (value));
106 public static string Base64BinaryToString (byte [] value)
108 return Convert
.ToBase64String (value);
111 public static decimal BooleanToDecimal (bool value)
113 return Convert
.ToDecimal (value);
116 public static double BooleanToDouble (bool value)
118 return Convert
.ToDouble (value);
121 public static float BooleanToFloat (bool value)
123 return Convert
.ToSingle (value);
126 public static int BooleanToInt (bool value)
128 return Convert
.ToInt32 (value);
131 public static long BooleanToInteger (bool value)
133 return Convert
.ToInt64 (value);
136 public static string BooleanToString (bool value)
138 // It looks not returning "True"
139 return value ? "true" : "false";
142 public static DateTime
DateTimeToDate (DateTime
value)
147 public static DateTime
DateTimeToGDay (DateTime
value)
149 return new DateTime (0, 0, value.Day
);
152 public static DateTime
DateTimeToGMonth (DateTime
value)
154 return new DateTime (0, value.Month
, 0);
157 public static DateTime
DateTimeToGMonthDay (DateTime
value)
159 return new DateTime (0, value.Month
, value.Day
);
162 public static DateTime
DateTimeToGYear (DateTime
value)
164 return new DateTime (value.Year
, 0, 0);
167 public static DateTime
DateTimeToGYearMonth (DateTime
value)
169 return new DateTime (value.Year
, value.Month
, 0);
172 public static DateTime
DateTimeToTime (DateTime
value)
174 return new DateTime (value.TimeOfDay
.Ticks
);
177 public static DateTime
DateToDateTime (DateTime
value)
182 public static DateTime
DateToGDay (DateTime
value)
184 return new DateTime (0, 0, value.Day
);
187 public static DateTime
DateToGMonth (DateTime
value)
189 return new DateTime (0, value.Month
, 0);
192 public static DateTime
DateToGMonthDay (DateTime
value)
194 return new DateTime (0, value.Month
, value.Day
);
197 public static DateTime
DateToGYear (DateTime
value)
199 return new DateTime (value.Year
, 0, 0);
202 public static DateTime
DateToGYearMonth (DateTime
value)
204 return new DateTime (value.Year
, value.Month
, 0);
207 public static string DateToString (DateTime
value)
209 return XmlConvert
.ToString (value);
212 public static string DateTimeToString (DateTime
value)
214 return XmlConvert
.ToString (value);
217 public static string DayTimeDurationToDuration (TimeSpan
value)
219 return XmlConvert
.ToString (value);
222 public static string DayTimeDurationToString (TimeSpan
value)
224 return DayTimeDurationToDuration (value);
227 public static bool DecimalToBoolean (decimal value)
232 public static double DecimalToDouble (decimal value)
234 return Convert
.ToDouble (value);
237 public static float DecimalToFloat (decimal value)
239 return Convert
.ToSingle (value);
242 public static int DecimalToInt (decimal value)
244 return Convert
.ToInt32 (value);
247 public static long DecimalToInteger (decimal value)
249 return Convert
.ToInt64 (value);
252 public static string DecimalToString (decimal value)
254 return XmlConvert
.ToString (value);
257 public static bool DoubleToBoolean (double value)
262 public static decimal DoubleToDecimal (double value)
264 return (decimal) value;
267 public static float DoubleToFloat (double value)
269 return Convert
.ToSingle (value);
272 public static int DoubleToInt (double value)
274 return Convert
.ToInt32 (value);
277 public static long DoubleToInteger (double value)
279 return Convert
.ToInt64 (value);
282 public static string DoubleToString (double value)
284 return XmlConvert
.ToString (value);
287 public static TimeSpan
DurationToDayTimeDuration (string value)
289 return XmlConvert
.ToTimeSpan (value);
292 public static string DurationToString (string value)
294 return XmlConvert
.ToString (XmlConvert
.ToTimeSpan (value));
297 public static TimeSpan
DurationToYearMonthDuration (string value)
299 return XmlConvert
.ToTimeSpan (value);
303 public static bool FloatToBoolean (float value)
308 public static decimal FloatToDecimal (float value)
310 return (decimal) value;
313 public static double FloatToDouble (float value)
315 return Convert
.ToDouble (value);
318 public static int FloatToInt (float value)
320 return Convert
.ToInt32 (value);
323 public static long FloatToInteger (float value)
325 return Convert
.ToInt64 (value);
328 public static string FloatToString (float value)
330 return XmlConvert
.ToString (value);
333 public static string GDayToString (DateTime
value)
335 return XmlConvert
.ToString (TimeSpan
.FromDays (value.Day
));
338 public static string GMonthDayToString (DateTime
value)
340 return XmlConvert
.ToString (new TimeSpan (value.Day
, value.Hour
, value.Minute
, value.Second
));
343 public static string GMonthToString (DateTime
value)
345 return XmlConvert
.ToString (new TimeSpan (0, value.Month
, 0));
348 public static string GYearMonthToString (DateTime
value)
350 return XmlConvert
.ToString (new TimeSpan (value.Year
, value.Month
, 0));
353 public static string GYearToString (DateTime
value)
355 return XmlConvert
.ToString (new TimeSpan (new DateTime (value.Year
, 0, 0).Ticks
));
358 public static string HexBinaryToString (byte [] data
)
360 return XmlConvert
.ToBinHexString (data
);
363 public static byte [] HexBinaryToBase64Binary (byte [] data
)
365 return data
;//XmlConvert.ToBinHexString (data);
369 public static bool IntegerToBoolean (long value)
374 public static decimal IntegerToDecimal (long value)
376 return (decimal) value;
379 public static double IntegerToDouble (long value)
381 return Convert
.ToDouble (value);
384 public static float IntegerToFloat (long value)
386 return Convert
.ToSingle (value);
389 public static int IntegerToInt (long value)
391 return Convert
.ToInt32 (value);
394 public static string IntegerToString (long value)
396 return XmlConvert
.ToString (value);
399 public static bool IntToBoolean (int value)
404 public static decimal IntToDecimal (int value)
406 return (decimal) value;
409 public static double IntToDouble (int value)
411 return Convert
.ToDouble (value);
414 public static float IntToFloat (int value)
416 return Convert
.ToSingle (value);
419 public static long IntToInteger (int value)
424 public static string IntToString (int value)
426 return XmlConvert
.ToString (value);
429 public static string NonNegativeIntegerToString (decimal value)
431 return XmlConvert
.ToString (value);
434 public static string NonPositiveIntegerToString (decimal value)
436 return XmlConvert
.ToString (value);
439 public static DateTime
TimeToDateTime (DateTime
value)
444 public static string TimeToString (DateTime
value)
446 return XmlConvert
.ToString (value, "HH:mm:ssZ");
449 public static string YearMonthDurationToDuration (TimeSpan
value)
451 return XmlConvert
.ToString (value);
454 public static string YearMonthDurationToString (TimeSpan
value)
456 return YearMonthDurationToDuration (value);
459 public static string StringToAnyUri (string value)
464 public static byte [] StringToBase64Binary (string value)
466 return Convert
.FromBase64String (value);
469 public static bool StringToBoolean (string value)
471 return XmlConvert
.ToBoolean (value);
474 public static DateTime
StringToDate (string value)
476 return XmlConvert
.ToDateTime (value);
479 public static DateTime
StringToDateTime (string value)
481 return XmlConvert
.ToDateTime (value);
484 public static TimeSpan
StringToDayTimeDuration (string value)
486 return XmlConvert
.ToTimeSpan (value);
489 public static decimal StringToDecimal (string value)
491 return XmlConvert
.ToDecimal (value);
494 public static double StringToDouble (string value)
496 return XmlConvert
.ToDouble (value);
499 public static string StringToDuration (string value)
501 return XmlConvert
.ToString (XmlConvert
.ToTimeSpan (value));
504 public static float StringToFloat (string value)
506 return XmlConvert
.ToSingle (value);
509 public static DateTime
StringToGDay (string value)
511 return XmlConvert
.ToDateTime (value);
514 public static DateTime
StringToGMonth (string value)
516 return XmlConvert
.ToDateTime (value);
519 public static DateTime
StringToGMonthDay (string value)
521 return XmlConvert
.ToDateTime (value);
524 public static DateTime
StringToGYear (string value)
526 return XmlConvert
.ToDateTime (value);
529 public static DateTime
StringToGYearMonth (string value)
531 return XmlConvert
.ToDateTime (value);
534 public static byte [] StringToHexBinary (string value)
536 return XmlConvert
.FromBinHexString (value);
539 public static int StringToInt (string value)
541 return XmlConvert
.ToInt32 (value);
544 public static long StringToInteger (string value)
546 return XmlConvert
.ToInt64 (value);
549 public static decimal StringToNonNegativeInteger (string value)
551 return XmlConvert
.ToDecimal (value);
554 public static decimal StringToNonPositiveInteger (string value)
556 return XmlConvert
.ToDecimal (value);
559 public static DateTime
StringToTime (string value)
561 return XmlConvert
.ToDateTime (value);
564 public static long StringToUnsignedInt (string value)
566 return XmlConvert
.ToUInt32 (value);
569 public static decimal StringToUnsignedLong (string value)
571 return XmlConvert
.ToUInt64 (value);
574 public static int StringToUnsignedShort (string value)
576 return XmlConvert
.ToUInt16 (value);
579 public static TimeSpan
StringToYearMonthDuration (string value)
581 return XmlConvert
.ToTimeSpan (value);