All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gov.nist.javax.sdp.fields.RepeatField Maven / Gradle / Ivy

There is a newer version: 1.3.0-91
Show newest version
/*
* 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 java.util.LinkedList;
import java.util.ListIterator;
import javax.sdp.*;
/**
* Repeat SDP Field (part of the time field).
*
*@version  JSR141-PUBLIC-REVIEW (subject to change).
*
*@author Olivier Deruelle 
*@author M. Ranganathan   
* * * */ public class RepeatField extends SDPField implements javax.sdp.RepeatTime { private static final long serialVersionUID = -6415338212212641819L; protected TypedTime repeatInterval; protected TypedTime activeDuration; protected SDPObjectList offsets; public RepeatField() { super(REPEAT_FIELD); offsets = new SDPObjectList(); } public void setRepeatInterval(TypedTime interval) { repeatInterval = interval; } public void setActiveDuration(TypedTime duration) { activeDuration = duration; } public void addOffset(TypedTime offset) { offsets.add(offset); } public LinkedList getOffsets() { return offsets; } /** Returns the "repeat interval" in seconds. * @throws SdpParseException * @return the "repeat interval" in seconds. */ public int getRepeatInterval() throws SdpParseException { if (repeatInterval == null) return -1; else { return repeatInterval.getTime(); } } /** Set the "repeat interval" in seconds. * @param repeatInterval the "repeat interval" in seconds. * @throws SdpException if repeatInterval is <0 */ public void setRepeatInterval(int repeatInterval) throws SdpException { if (repeatInterval < 0) throw new SdpException("The repeat interval is <0"); else { if (this.repeatInterval == null) this.repeatInterval = new TypedTime(); this.repeatInterval.setTime(repeatInterval); } } /** Returns the "active duration" in seconds. * @throws SdpParseException * @return the "active duration" in seconds. */ public int getActiveDuration() throws SdpParseException { if (activeDuration == null) return -1; else { return activeDuration.getTime(); } } /** Sets the "active duration" in seconds. * @param activeDuration the "active duration" in seconds. * @throws SdpException if the active duration is <0 */ public void setActiveDuration(int activeDuration) throws SdpException { if (activeDuration < 0) throw new SdpException("The active Duration is <0"); else { if (this.activeDuration == null) this.activeDuration = new TypedTime(); this.activeDuration.setTime(activeDuration); } } /** Returns the list of offsets. These are relative to the start-time given * in the Time object (t= * field) with which this RepeatTime is associated. * @throws SdpParseException * @return the list of offsets */ public int[] getOffsetArray() throws SdpParseException { LinkedList linkedList = getOffsets(); int[] result = new int[linkedList.size()]; for (int i = 0; i < linkedList.size(); i++) { TypedTime typedTime = (TypedTime) linkedList.get(i); result[i] = typedTime.getTime(); } return result; } /** Set the list of offsets. These are relative to the start-time given in the * Time object (t= * field) with which this RepeatTime is associated. * @param offsets array of repeat time offsets * @throws SdpException */ public void setOffsetArray(int[] offsets) throws SdpException { for (int i = 0; i < offsets.length; i++) { TypedTime typedTime = new TypedTime(); typedTime.setTime(offsets[i]); addOffset(typedTime); } } /** 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) * @throws SdpParseException * @return true, if the field will be output as a typed time; false, if as an integer value. */ public boolean getTypedTime() throws SdpParseException { return true; } /** 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) { } public String encode() { StringBuilder retval = new StringBuilder(); retval.append(REPEAT_FIELD) .append(repeatInterval.encode()) .append(Separators.SP) .append(activeDuration.encode()); ListIterator li = offsets.listIterator(); while (li.hasNext()) { TypedTime off = (TypedTime) li.next(); retval.append (Separators.SP).append (off.encode()); } retval.append (Separators.NEWLINE); return retval.toString (); } public Object clone() { RepeatField retval = (RepeatField) super.clone(); if (this.repeatInterval != null) retval.repeatInterval = (TypedTime) this.repeatInterval.clone(); if (this.activeDuration != null) retval.activeDuration = (TypedTime) this.activeDuration.clone(); if (this.offsets != null) retval.offsets = (SDPObjectList) this.offsets.clone(); return retval; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy