org.alfresco.service.cmr.repository.datatype
Class Duration

java.lang.Object
  extended by org.alfresco.service.cmr.repository.datatype.Duration
All Implemented Interfaces:
java.io.Serializable, java.lang.Comparable

public class Duration
extends java.lang.Object
implements java.lang.Comparable, java.io.Serializable

This data type represents duration/interval/period as defined by the XMLSchema type duration. The lexical representation of duration is PnYnMnDTnHnMnS. P is a literal value that starts the expression nY is an integer number of years followed by the literal Y nM is an integer number of months followed by the literal M nD is an integer number of days followed by the literal D T is the literal that separates the date and time nH is an integer number of hours followed by a literal H nM is an integer number of minutes followed by a literal M nS is a decimal number of seconds followed by a literal S Any numbers and designator may be absent if the value is zero. A minus sign may appear before the literal P to indicate a negative duration. If no time items are present the literal T must not appear. This implementation is immutable and thread safe. There are two forms of duration common on database types. The code contains warnings wheer these are relevant.

See Also:
Serialized Form

Field Summary
static Duration DAY
           
static Duration MONTH
           
static Duration QUARTER
           
static Duration SIX_MONTHS
           
static Duration TWO_WEEKS
           
static Duration WEEK
           
static java.lang.String XML_DAY
           
static java.lang.String XML_MONTH
           
static java.lang.String XML_QUARTER
           
static java.lang.String XML_SIX_MONTHS
           
static java.lang.String XML_TWO_WEEKS
           
static java.lang.String XML_WEEK
           
static java.lang.String XML_YEAR
           
static Duration YEAR
           
 
Constructor Summary
Duration()
          Constructor for Duration - a zero value duration
Duration(boolean positive_in, long months_in, long seconds_in, long nanos_in)
          Construct a duration from months seconds and nanos Checks sign and fixes up seconds and nano.
Duration(java.util.Date date)
          Create a duration given a date.
Duration(java.util.Date start_in, java.util.Date end_in)
          Construct a preiod between the two given dates
Duration(java.lang.String duration)
          Construct a Duration from the XMLSchema definition
Duration(java.lang.String start, java.lang.String end)
          Create a duration betweeen two dates expressed as strings.
 
Method Summary
static java.util.Date add(java.util.Date date, Duration duration)
          Add a duration to a date and return the date plus the specified increment.
 Duration add(Duration add)
          Add two durations together
 int compareTo(java.lang.Object o)
          Compare two durations
 Duration divide(int d)
          Divide the duration - if year-month drops the day-second part of the duration
 boolean equals(java.lang.Object o)
           
 java.lang.String formattedString()
          Format in human readable form TODO: I18n
 Duration getDayToYear()
          Extract the day to sec part.
 Duration getYearToMonth()
          Extract the year to month part
 int hashCode()
           
 boolean hasTime()
          Check if it includes time
 boolean isDayToSec()
          Check if is day-sec
 boolean isYearToMonth()
          Check if is year-month
static void main(java.lang.String[] args)
          TODO: Tests that should be moved into a unit test
static java.util.Date subtract(java.util.Date date, Duration duration)
          Subtract a period for a given date
 Duration subtract(Duration sub)
          Subtract one duration from another
 java.lang.String toString()
          Produce the XML Schema string
 Duration unaryMinus()
          Negate the duration
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

XML_DAY

public static final java.lang.String XML_DAY
See Also:
Constant Field Values

XML_WEEK

public static final java.lang.String XML_WEEK
See Also:
Constant Field Values

XML_TWO_WEEKS

public static final java.lang.String XML_TWO_WEEKS
See Also:
Constant Field Values

XML_MONTH

public static final java.lang.String XML_MONTH
See Also:
Constant Field Values

XML_QUARTER

public static final java.lang.String XML_QUARTER
See Also:
Constant Field Values

XML_SIX_MONTHS

public static final java.lang.String XML_SIX_MONTHS
See Also:
Constant Field Values

XML_YEAR

public static final java.lang.String XML_YEAR
See Also:
Constant Field Values

DAY

public static final Duration DAY

WEEK

public static final Duration WEEK

TWO_WEEKS

public static final Duration TWO_WEEKS

MONTH

public static final Duration MONTH

QUARTER

public static final Duration QUARTER

SIX_MONTHS

public static final Duration SIX_MONTHS

YEAR

public static final Duration YEAR
Constructor Detail

Duration

public Duration()
Constructor for Duration - a zero value duration


Duration

public Duration(java.lang.String duration)
Construct a Duration from the XMLSchema definition


Duration

public Duration(java.util.Date date)
Create a duration given a date. The duration is between the two dates provided. Sadly, it works out the duration by incrementing the lower calendar until it matches the higher.


Duration

public Duration(java.lang.String start,
                java.lang.String end)
Create a duration betweeen two dates expressed as strings. Uses the standard XML date form.

Parameters:
start - - the date at the start of the period
end - - the date at the end of the period

Duration

public Duration(java.util.Date start_in,
                java.util.Date end_in)
Construct a preiod between the two given dates

Parameters:
start_in -
end_in -

Duration

public Duration(boolean positive_in,
                long months_in,
                long seconds_in,
                long nanos_in)
Construct a duration from months seconds and nanos Checks sign and fixes up seconds and nano. Treats year-month abd day-sec as separate chunks

Method Detail

add

public static java.util.Date add(java.util.Date date,
                                 Duration duration)
Add a duration to a date and return the date plus the specified increment.

Parameters:
date - - the initial date
duration - - the duration to add on to the date (the duration may be negative)
Returns:
the adjusted date.

subtract

public static java.util.Date subtract(java.util.Date date,
                                      Duration duration)
Subtract a period for a given date

Parameters:
date - - the intial date
duration - - the diration to subtract
Returns:
the adjusted date.

add

public Duration add(Duration add)
Add two durations together


subtract

public Duration subtract(Duration sub)
Subtract one duration from another


unaryMinus

public Duration unaryMinus()
Negate the duration


divide

public Duration divide(int d)
Divide the duration - if year-month drops the day-second part of the duration


isYearToMonth

public boolean isYearToMonth()
Check if is year-month


isDayToSec

public boolean isDayToSec()
Check if is day-sec


hasTime

public boolean hasTime()
Check if it includes time


getYearToMonth

public Duration getYearToMonth()
Extract the year to month part


getDayToYear

public Duration getDayToYear()
Extract the day to sec part.


compareTo

public int compareTo(java.lang.Object o)
Compare two durations

Specified by:
compareTo in interface java.lang.Comparable

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object
See Also:
Object.equals(Object)

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object
See Also:
Object.hashCode()

toString

public java.lang.String toString()
Produce the XML Schema string

Overrides:
toString in class java.lang.Object
See Also:
Object.toString()

formattedString

public java.lang.String formattedString()
Format in human readable form TODO: I18n


main

public static void main(java.lang.String[] args)
TODO: Tests that should be moved into a unit test

Parameters:
args -


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.