Package com.adobe.xmp

Source Code of com.adobe.xmp.XMPDateTimeFactory

// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2006 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// =================================================================================================

package com.adobe.xmp;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

import com.adobe.xmp.impl.XMPDateTimeImpl;


/**
* A factory to create <code>XMPDateTime</code>-instances from a <code>Calendar</code> or an
* ISO 8601 string or for the current time.
*
* @since 16.02.2006
*/
public final class XMPDateTimeFactory
{
  /** The UTC TimeZone */
  private static final TimeZone UTC = TimeZone.getTimeZone("UTC");

 

  /** Private constructor */
  private XMPDateTimeFactory()
  {
    // EMPTY
  }


  /**
   * Creates an <code>XMPDateTime</code> from a <code>Calendar</code>-object.
   *
   * @param calendar a <code>Calendar</code>-object.
   * @return An <code>XMPDateTime</code>-object.
   */
  public static XMPDateTime createFromCalendar(Calendar calendar)
  {
    return new XMPDateTimeImpl(calendar);
  }

 
  /**
   * Creates an empty <code>XMPDateTime</code>-object.
   * @return Returns an <code>XMPDateTime</code>-object.
   */
  public static XMPDateTime create()
  {
    return new XMPDateTimeImpl();
  }
 
 
  /**
   * Creates an <code>XMPDateTime</code>-object from initial values.
   * @param year years
   * @param month months from 1 to 12<br>
   * <em>Note:</em> Remember that the month in {@link Calendar} is defined from 0 to 11.
   * @param day days
   * @return Returns an <code>XMPDateTime</code>-object.
   */
  public static XMPDateTime create(int year, int month, int day)
  {
    XMPDateTime dt = new XMPDateTimeImpl();
    dt.setYear(year);
    dt.setMonth(month);
    dt.setDay(day);
    return dt;
  }
 
 
  /**
   * Creates an <code>XMPDateTime</code>-object from initial values.
   * @param year years
   * @param month months from 1 to 12<br>
   * <em>Note:</em> Remember that the month in {@link Calendar} is defined from 0 to 11.
   * @param day days
   * @param hour hours
   * @param minute minutes
   * @param second seconds
   * @param nanoSecond nanoseconds
   * @return Returns an <code>XMPDateTime</code>-object.
   */
  public static XMPDateTime create(int year, int month, int day,
    int hour, int minute, int second, int nanoSecond)
  {
    XMPDateTime dt = new XMPDateTimeImpl();
    dt.setYear(year);
    dt.setMonth(month);
    dt.setDay(day);
    dt.setHour(hour);
    dt.setMinute(minute);
    dt.setSecond(second);
    dt.setNanoSecond(nanoSecond);
    return dt;
  }
 

  /**
   * Creates an <code>XMPDateTime</code> from an ISO 8601 string.
   *
   * @param strValue The ISO 8601 string representation of the date/time.
   * @return An <code>XMPDateTime</code>-object.
   * @throws XMPException When the ISO 8601 string is non-conform
   */
  public static XMPDateTime createFromISO8601(String strValue) throws XMPException
  {
    return new XMPDateTimeImpl(strValue);
  }


  /**
   * Obtain the current date and time.
   *
   * @return Returns The returned time is UTC, properly adjusted for the local time zone. The
   *         resolution of the time is not guaranteed to be finer than seconds.
   */
  public static XMPDateTime getCurrentDateTime()
  {
    return new XMPDateTimeImpl(new GregorianCalendar());
  }


  /**
   * Sets the local time zone without touching any other Any existing time zone value is replaced,
   * the other date/time fields are not adjusted in any way.
   *
   * @param dateTime the <code>XMPDateTime</code> variable containing the value to be modified.
   * @return Returns an updated <code>XMPDateTime</code>-object.
   */
  public static XMPDateTime setLocalTimeZone(XMPDateTime dateTime)
  {
    Calendar cal = dateTime.getCalendar();
    cal.setTimeZone(TimeZone.getDefault());
    return new XMPDateTimeImpl(cal);
  }


  /**
   * Make sure a time is UTC. If the time zone is not UTC, the time is
   * adjusted and the time zone set to be UTC.
   *
   * @param dateTime
   *            the <code>XMPDateTime</code> variable containing the time to
   *            be modified.
   * @return Returns an updated <code>XMPDateTime</code>-object.
   */
  public static XMPDateTime convertToUTCTime(XMPDateTime dateTime)
  {
    long timeInMillis = dateTime.getCalendar().getTimeInMillis();
    GregorianCalendar cal = new GregorianCalendar(UTC);
    cal.setGregorianChange(new Date(Long.MIN_VALUE));   
    cal.setTimeInMillis(timeInMillis);
    return new XMPDateTimeImpl(cal);
  }


  /**
   * Make sure a time is local. If the time zone is not the local zone, the time is adjusted and
   * the time zone set to be local.
   *
   * @param dateTime the <code>XMPDateTime</code> variable containing the time to be modified.
   * @return Returns an updated <code>XMPDateTime</code>-object.
   */
  public static XMPDateTime convertToLocalTime(XMPDateTime dateTime)
  {
    long timeInMillis = dateTime.getCalendar().getTimeInMillis();
    // has automatically local timezone
    GregorianCalendar cal = new GregorianCalendar();
    cal.setTimeInMillis(timeInMillis);
    return new XMPDateTimeImpl(cal);
  }
}
TOP

Related Classes of com.adobe.xmp.XMPDateTimeFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.