4 // Copyright (C) 2004 Novell, Inc.
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to deal
10 // in the Software without restriction, including without limitation the rights
11 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 // copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
15 // The above copyright notice and this permission notice shall be included in all
16 // copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29 using System
.Xml
.Serialization
;
33 public class Versioned
{
35 protected DateTime timestamp
= new DateTime (0);
37 public bool ValidTimestamp
{
38 get { return timestamp.Ticks > 0; }
42 public DateTime Timestamp
{
43 get { return timestamp; }
44 set { timestamp = value; }
48 public double DaysSinceTimestamp
{
49 get { return (DateTime.Now - timestamp).TotalDays; }
52 public bool IsObsoletedBy (DateTime timestamp
)
54 return !ValidTimestamp
|| Timestamp
< timestamp
;
57 public bool IsObsoletedBy (Versioned other
)
59 // We are never obsoleted by null.
63 // Anything with a valid timestamp always is
64 // more recent than something w/o a timestamp.
65 if (ValidTimestamp
|| other
.ValidTimestamp
) {
66 if (other
.ValidTimestamp
)
67 return IsObsoletedBy (other
.Timestamp
);
75 public bool IsNewerThan (DateTime timestamp
)
77 return ValidTimestamp
&& Timestamp
> timestamp
;
80 public bool IsNewerThan (Versioned other
)
82 // We are always newer than null.
86 // Anything with a valid timestamp always is
87 // more recent than something w/o a timestamp.
88 if (ValidTimestamp
|| other
.ValidTimestamp
) {
89 if (other
.ValidTimestamp
)
90 return IsNewerThan (other
.Timestamp
);