/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.api.domain;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class Recording {
private String id;
private String meetingID;
private String name;
private boolean published;
private String startTime;
private String endTime;
private String numParticipants;
private Map<String, String> metadata = new TreeMap<String, String>();
private List<Playback> playbacks=new ArrayList<Playback>();
//TODO:
private String state;
private String playbackLink;
private String playbackFormat;
private String playbackDuration;
private List<Extension> playbackExtensions;
public static final String STATE_PROCESSING = "processing";
public static final String STATE_PROCESSED = "processed";
public static final String STATE_PUBLISING = "publishing";
public static final String STATE_PUBLISHED = "published";
public static final String STATE_UNPUBLISING = "unpublishing";
public static final String STATE_UNPUBLISHED = "unpublished";
public static final String STATE_DELETING = "deleting";
public static final String STATE_DELETED = "deleted";
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getState() {
String state = this.state;
if ( state == null || state.equals("") || state.equals("available") ) {
state = isPublished()? STATE_PUBLISHED: STATE_UNPUBLISHED;
}
return state;
}
public void setState(String state) {
this.state = state;
}
public boolean isPublished() {
return published;
}
public void setPublished(boolean published) {
this.published = published;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = convertOldDateFormat(startTime);
}
public String getEndTime() {
return endTime;
}
public void setNumParticipants(String numParticipants) {
this.numParticipants = numParticipants;
}
public String getNumParticipants() {
return numParticipants;
}
public void setEndTime(String endTime) {
this.endTime = convertOldDateFormat(endTime);
}
public String getPlaybackLink() {
return playbackLink;
}
public void setPlaybackLink(String playbackLink) {
this.playbackLink = playbackLink;
}
public String getPlaybackFormat() {
return playbackFormat;
}
public void setPlaybackFormat(String playbackFormat) {
this.playbackFormat = playbackFormat;
}
public String getPlaybackDuration() {
return playbackDuration;
}
public void setPlaybackDuration(String playbackDuration) {
this.playbackDuration = playbackDuration;
}
public List<Extension> getPlaybackExtensions() {
return playbackExtensions;
}
public void setPlaybackExtensions(List<Extension> playbackExtensions) {
this.playbackExtensions = playbackExtensions;
}
public Map<String, String> getMetadata() {
return this.metadata;
}
public String getMetadata(String key) {
return this.metadata.get(key);
}
public void setMetadata(Map<String, String> metadata) {
this.metadata = metadata;
}
public void updateMetadata(String key, String value) {
this.metadata.put(key, value);
}
public void deleteMetadata(String key) {
this.metadata.remove(key);
}
public boolean containsMetadata(String key) {
return this.metadata.containsKey(key);
}
public String getMeetingID() {
return this.meetingID;
}
public void setMeetingID(String meetingID) {
this.meetingID = meetingID;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public List<Playback> getPlaybacks() {
return playbacks;
}
public void setPlaybacks(List<Playback> playbacks) {
this.playbacks = playbacks;
}
/* We used to have an old date format in the recordings
* e.g.: Thu Mar 04 14:05:56 UTC 2010
* Now, we have a new one which it's a long string
* This method converts the old date format to the new one */
private String convertOldDateFormat(String olddate){
String newdate = olddate;
try {
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");
Calendar cal=Calendar.getInstance();
sdf.setLenient(false);
cal.setTime(sdf.parse(olddate));
newdate = Long.toString(cal.getTimeInMillis());
} catch (ParseException pe) {
}
return newdate;
}
}
/*
<recording>
<id>Demo Meeting-3243244</id>
<state>available</state>
<published>true</published>
<start_time>Thu Mar 04 14:05:56 UTC 2010</start_time>
<end_time>Thu Mar 04 15:01:01 UTC 2010</end_time>
<playback>
<format>simple</format>
<link>http://server.com/simple/playback?recordingID=Demo Meeting-3243244</link>
</playback>
<meta>
<title>Test Recording 2</title>
<subject>English 232 session</subject>
<description>Second test recording</description>
<creator>Omar Shammas</creator>
<contributor>Blindside</contributor>
<language>en_US</language>
</meta>
</recording>
*/