/* * Conditions Of Use * * This software was developed by employees of the National Institute of * Standards and Technology (NIST), an agency of the Federal Government. * Pursuant to title 15 Untied States Code Section 105, works of NIST * employees are not subject to copyright protection in the United States * and are considered to be in the public domain. As a result, a formal * license is not needed to use the software. * * This software is provided by NIST as a service and is expressly * provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT * AND DATA ACCURACY. NIST does not warrant or make any representations * regarding the use of the software or the results thereof, including but * not limited to the correctness, accuracy, reliability or usefulness of * the software. * * Permission to use this software is contingent upon your acceptance * of the terms of this agreement * * . * */ /******************************************************************************* * Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * *******************************************************************************/ package gov.nist.javax.sdp.fields; import gov.nist.core.*; import javax.sdp.*; import java.util.*; /** * Time Field. *@version JSR141-PUBLIC-REVIEW (subject to change). * *@author Olivier Deruelle <deruelle@antd.nist.gov> *@author M. Ranganathan * *Bug Report contributed by Brian J. Collins. * */ public class TimeField extends SDPField implements Time { protected long startTime; protected long stopTime; public TimeField() { super(TIME_FIELD); } public long getStartTime() { return startTime; } public long getStopTime() { return stopTime; } /** * Set the startTime member */ public void setStartTime(long startTime) { this.startTime = startTime; } /** * Set the stopTime member */ public void setStopTime(long stopTime) { this.stopTime = stopTime; } /** Returns the start time of the conference/session. * @throws SdpParseException * @return the date */ public Date getStart() throws SdpParseException { return SdpFactory.getDateFromNtp(startTime); } /** Returns the stop time of the session * @throws SdpParseException * @return the stop time of the session. */ public Date getStop() throws SdpParseException { return SdpFactory.getDateFromNtp(stopTime); } /** Sets the stop time of the session. * @param stop start - the start time * @throws SdpException if the date is null */ public void setStop(Date stop) throws SdpException { if (stop == null) throw new SdpException("The date is null"); else { this.stopTime = SdpFactory.getNtpTime(stop); } } /** Sets the start time of the conference/session. * @param start start - the start time for the session. * @throws SdpException if the date is null */ public void setStart(Date start) throws SdpException { if (start == null) throw new SdpException("The date is null"); else { this.startTime = SdpFactory.getNtpTime(start); } } /** Returns whether the field will be output as a typed time * or a integer value. * * Typed time is formatted as an integer followed by a unit character. * The unit indicates an appropriate multiplier for * the integer. * * The following unit types are allowed. * d - days (86400 seconds) * h - hours (3600 seconds) * m - minutes (60 seconds) * s - seconds ( 1 seconds) * @return true, if the field will be output as a * typed time; false, if as an integer value. */ public boolean getTypedTime() { return false; } /** Sets whether the field will be output as a typed time or a integer value. * * Typed time is formatted as an integer followed by a unit character. * The unit indicates an appropriate multiplier for * the integer. * * The following unit types are allowed. * d - days (86400 seconds) * h - hours (3600 seconds) * m - minutes (60 seconds) * s - seconds ( 1 seconds) * @param typedTime typedTime - if set true, the start and stop times will * be output in an optimal typed time format; if false, the * times will be output as integers. */ public void setTypedTime(boolean typedTime) { } /** Returns whether the start and stop times were set to zero (in NTP). * @return boolean */ public boolean isZero() { return getStartTime()==0 && getStopTime()==0; } /** Sets the start and stop times to zero (in NTP). */ public void setZero() { setStopTime(0); setStartTime(0); } /** * Get the string encoded version of this object * @since v1.0 */ public String encode() { return new StringBuilder() .append(TIME_FIELD) .append(startTime) .append(Separators.SP) .append(stopTime) .append(Separators.NEWLINE) .toString(); } }