251 lines
5.4 KiB
C#
251 lines
5.4 KiB
C#
//
|
|
// OracleTimeSpan.cs
|
|
//
|
|
// Part of the Mono class libraries at
|
|
// mcs/class/System.Data.OracleClient/System.Data.OracleClient
|
|
//
|
|
// Assembly: System.Data.OracleClient.dll
|
|
// Namespace: System.Data.OracleClient
|
|
//
|
|
// Author: Tim Coleman <tim@timcoleman.com>
|
|
//
|
|
// Copyright (C) Tim Coleman, 2003
|
|
//
|
|
// Licensed under the MIT/X11 License.
|
|
//
|
|
|
|
using System;
|
|
using System.Data.SqlTypes;
|
|
|
|
namespace System.Data.OracleClient
|
|
{
|
|
public struct OracleTimeSpan : IComparable, INullable
|
|
{
|
|
#region Fields
|
|
|
|
public static readonly OracleTimeSpan MaxValue = new OracleTimeSpan (TimeSpan.MaxValue);
|
|
public static readonly OracleTimeSpan MinValue = new OracleTimeSpan (TimeSpan.MinValue);
|
|
public static readonly OracleTimeSpan Null = new OracleTimeSpan ();
|
|
|
|
bool notNull;
|
|
TimeSpan value;
|
|
|
|
#endregion // Fields
|
|
|
|
#region Constructors
|
|
|
|
public OracleTimeSpan (long ticks)
|
|
: this (new TimeSpan (ticks))
|
|
{
|
|
}
|
|
|
|
public OracleTimeSpan (OracleTimeSpan from)
|
|
{
|
|
if (from.IsNull)
|
|
throw new NullReferenceException ();
|
|
value = from.value;
|
|
notNull = true;
|
|
}
|
|
|
|
public OracleTimeSpan (TimeSpan ts)
|
|
{
|
|
value = ts;
|
|
notNull = true;
|
|
}
|
|
|
|
public OracleTimeSpan (int hours, int minutes, int seconds)
|
|
: this (new TimeSpan (hours, minutes, seconds))
|
|
{
|
|
}
|
|
|
|
public OracleTimeSpan (int days, int hours, int minutes, int seconds)
|
|
: this (new TimeSpan (days, hours, minutes, seconds))
|
|
{
|
|
}
|
|
|
|
public OracleTimeSpan (int days, int hours, int minutes, int seconds, int milliseconds)
|
|
: this (new TimeSpan (days, hours, minutes, seconds, milliseconds))
|
|
{
|
|
}
|
|
|
|
#endregion // Constructors
|
|
|
|
#region Properties
|
|
|
|
public int Days {
|
|
get { return Value.Days; }
|
|
}
|
|
|
|
public int Hours {
|
|
get { return Value.Hours; }
|
|
}
|
|
|
|
public bool IsNull {
|
|
get { return !notNull; }
|
|
}
|
|
|
|
public int Milliseconds {
|
|
get { return Value.Milliseconds; }
|
|
}
|
|
|
|
public int Minutes {
|
|
get { return Value.Minutes; }
|
|
}
|
|
|
|
public int Seconds {
|
|
get { return Value.Seconds; }
|
|
}
|
|
|
|
public TimeSpan Value {
|
|
get {
|
|
if (IsNull)
|
|
throw CreateValueNullException ();
|
|
return value;
|
|
}
|
|
}
|
|
|
|
#endregion // Properties
|
|
|
|
#region Methods
|
|
|
|
public int CompareTo (object obj)
|
|
{
|
|
OracleTimeSpan o = (OracleTimeSpan) obj;
|
|
if (obj == null)
|
|
throw new NullReferenceException ("Object reference not set to an instance of an object");
|
|
else if (!(obj is OracleTimeSpan))
|
|
throw new ArgumentException ("Value is not a System.Data.OracleClient.OracleTimeSpan", obj.ToString ());
|
|
else if (o.IsNull && this.IsNull)
|
|
return 0;
|
|
else if (o.IsNull && !(this.IsNull))
|
|
return 1;
|
|
else
|
|
return value.CompareTo (o.Value);
|
|
}
|
|
|
|
public override bool Equals (object value)
|
|
{
|
|
if (value is OracleTimeSpan)
|
|
{
|
|
OracleTimeSpan t = (OracleTimeSpan) value;
|
|
if (!(this.IsNull) && !(t.IsNull))
|
|
return this.value == t.value;
|
|
else
|
|
throw new InvalidOperationException ("The value is null");
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static OracleBoolean Equals (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
if (x.IsNull || y.IsNull)
|
|
return OracleBoolean.Null;
|
|
return new OracleBoolean (x.Value == y.Value);
|
|
}
|
|
|
|
[MonoTODO]
|
|
public override int GetHashCode ()
|
|
{
|
|
throw new NotImplementedException ();
|
|
}
|
|
|
|
public static OracleBoolean GreaterThan (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
if (x.IsNull || y.IsNull)
|
|
return OracleBoolean.Null;
|
|
return (x.Value > y.Value);
|
|
}
|
|
|
|
public static OracleBoolean GreaterThanOrEqual (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
if (x.IsNull || y.IsNull)
|
|
return OracleBoolean.Null;
|
|
return (x.Value >= y.Value);
|
|
}
|
|
|
|
public static OracleBoolean LessThan (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
if (x.IsNull || y.IsNull)
|
|
return OracleBoolean.Null;
|
|
return (x.Value < y.Value);
|
|
}
|
|
|
|
public static OracleBoolean LessThanOrEqual (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
if (x.IsNull || y.IsNull)
|
|
return OracleBoolean.Null;
|
|
return (x.Value <= y.Value);
|
|
}
|
|
|
|
public static OracleBoolean NotEquals (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
if (x.IsNull || y.IsNull)
|
|
return OracleBoolean.Null;
|
|
return (x.Value != y.Value);
|
|
}
|
|
|
|
public static OracleTimeSpan Parse (string s)
|
|
{
|
|
return new OracleTimeSpan (TimeSpan.Parse (s));
|
|
}
|
|
|
|
public override string ToString ()
|
|
{
|
|
if (IsNull)
|
|
return "Null";
|
|
return value.ToString ();
|
|
}
|
|
|
|
static Exception CreateValueNullException ()
|
|
{
|
|
return new InvalidOperationException ("The value is Null");
|
|
}
|
|
|
|
#endregion // Methods
|
|
|
|
#region Operators and Type Conversions
|
|
|
|
public static OracleBoolean operator == (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
return Equals (x, y);
|
|
}
|
|
|
|
public static OracleBoolean operator > (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
return GreaterThan (x, y);
|
|
}
|
|
|
|
public static OracleBoolean operator >= (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
return GreaterThanOrEqual (x, y);
|
|
}
|
|
|
|
public static OracleBoolean operator != (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
return NotEquals (x, y);
|
|
}
|
|
|
|
public static OracleBoolean operator < (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
return LessThan (x, y);
|
|
}
|
|
|
|
public static OracleBoolean operator <= (OracleTimeSpan x, OracleTimeSpan y)
|
|
{
|
|
return LessThan (x, y);
|
|
}
|
|
|
|
public static explicit operator TimeSpan (OracleTimeSpan x)
|
|
{
|
|
return x.Value;
|
|
}
|
|
|
|
public static explicit operator OracleTimeSpan (string x)
|
|
{
|
|
return Parse (x);
|
|
}
|
|
|
|
#endregion // Operators and Type Conversions
|
|
}
|
|
}
|