/*
* GT-Mconf: Multiconference system for interoperable web and mobile
* http://www.inf.ufrgs.br/prav/gtmconf
* PRAV Labs - UFRGS
*
* This file is part of Mconf-Mobile.
*
* Mconf-Mobile 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 of the License, or
* (at your option) any later version.
*
* Mconf-Mobile 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 Mconf-Mobile. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mconf.bbb.api;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Meeting {
private String returncode;
private String meetingName;
private String meetingID;
private String internalMeetingID;
private Date createTime;
private int voiceBridge;
private String attendeePW;
private String moderatorPW;
private boolean running;
private boolean recording;
private boolean hasBeenForciblyEnded;
private Date startTime;
private Date endTime;
private int participantCount;
private int maxUsers;
private int moderatorCount;
private int listenerCount;
private List<Attendee> attendees = new ArrayList<Attendee>();
private Metadata metadata = new Metadata();
private String messageKey;
private String message;
public Meeting() {
}
public boolean parse(Element elementMeeting, boolean check_return_code) {
returncode = ParserUtils.getNodeValue(elementMeeting, "returncode");
messageKey = ParserUtils.getNodeValue(elementMeeting, "messageKey");
message = ParserUtils.getNodeValue(elementMeeting, "message");
if (check_return_code && !returncode.equals("SUCCESS"))
return false;
meetingName = ParserUtils.getNodeValue(elementMeeting, "meetingName");
meetingID = ParserUtils.getNodeValue(elementMeeting, "meetingID");
internalMeetingID = ParserUtils.getNodeValue(elementMeeting, "internalMeetingID");
createTime = new Date(Long.parseLong(ParserUtils.getNodeValue(elementMeeting, "createTime", true)));
voiceBridge = Integer.parseInt(ParserUtils.getNodeValue(elementMeeting, "voiceBridge", true));
attendeePW = ParserUtils.getNodeValue(elementMeeting, "attendeePW");
moderatorPW = ParserUtils.getNodeValue(elementMeeting, "moderatorPW");
running = Boolean.parseBoolean(ParserUtils.getNodeValue(elementMeeting, "running", true));
recording = Boolean.parseBoolean(ParserUtils.getNodeValue(elementMeeting, "recording", true));
hasBeenForciblyEnded = Boolean.parseBoolean(ParserUtils.getNodeValue(elementMeeting, "hasBeenForciblyEnded", true));
try {
startTime = new Date(Long.parseLong(ParserUtils.getNodeValue(elementMeeting, "startTime", true)));
endTime = new Date(Long.parseLong(ParserUtils.getNodeValue(elementMeeting, "endTime", true)));
} catch (Exception e) {
}
try {
startTime = parseDate(ParserUtils.getNodeValue(elementMeeting, "startTime"));
endTime = parseDate(ParserUtils.getNodeValue(elementMeeting, "endTime"));
} catch (Exception e) {
}
participantCount = Integer.parseInt(ParserUtils.getNodeValue(elementMeeting, "participantCount", true));
maxUsers = Integer.parseInt(ParserUtils.getNodeValue(elementMeeting, "maxUsers", true));
moderatorCount = Integer.parseInt(ParserUtils.getNodeValue(elementMeeting, "moderatorCount", true));
listenerCount = Integer.parseInt(ParserUtils.getNodeValue(elementMeeting, "listenerCount", true));
NodeList nodeAttendees = elementMeeting.getElementsByTagName("attendee");
for (int i = 0; i < nodeAttendees.getLength(); ++i) {
Attendee attendee = new Attendee();
if (attendee.parse((Element) nodeAttendees.item(i))) {
attendees.add(attendee);
}
}
NodeList nodeMetadata = elementMeeting.getElementsByTagName("metadata");
if (nodeMetadata.getLength() > 0)
metadata.parse((Element) nodeMetadata.item(0));
return true;
}
private Date parseDate(String date) {
DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy", Locale.CANADA);
try {
date = date.replace(date.substring(20, 24), "");
return dateFormat.parse(date);
} catch (Exception e) {
return new Date();
}
}
public String getReturncode() {
return returncode;
}
public void setReturncode(String returncode) {
this.returncode = returncode;
}
public String getMeetingName() {
return meetingName;
}
public void setMeetingName(String meetingName) {
this.meetingName = meetingName;
}
public String getMeetingID() {
return meetingID;
}
public void setMeetingID(String meetingID) {
this.meetingID = meetingID;
}
public String getInternalMeetingID() {
return internalMeetingID;
}
public void setInternalMeetingID(String internalMeetingID) {
this.internalMeetingID = internalMeetingID;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public int getVoiceBridge() {
return voiceBridge;
}
public void setVoiceBridge(int voiceBridge) {
this.voiceBridge = voiceBridge;
}
public String getAttendeePW() {
return attendeePW;
}
public void setAttendeePW(String attendeePW) {
this.attendeePW = attendeePW;
}
public String getModeratorPW() {
return moderatorPW;
}
public void setModeratorPW(String moderatorPW) {
this.moderatorPW = moderatorPW;
}
public boolean isRunning() {
return running;
}
public void setRunning(boolean running) {
this.running = running;
}
public boolean isRecording() {
return recording;
}
public void setRecording(boolean recording) {
this.recording = recording;
}
public boolean isHasBeenForciblyEnded() {
return hasBeenForciblyEnded;
}
public void setHasBeenForciblyEnded(boolean hasBeenForciblyEnded) {
this.hasBeenForciblyEnded = hasBeenForciblyEnded;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public int getParticipantCount() {
return participantCount;
}
public void setParticipantCount(int participantCount) {
this.participantCount = participantCount;
}
public int getMaxUsers() {
return maxUsers;
}
public void setMaxUsers(int maxUsers) {
this.maxUsers = maxUsers;
}
public int getModeratorCount() {
return moderatorCount;
}
public void setModeratorCount(int moderatorCount) {
this.moderatorCount = moderatorCount;
}
public int getListenerCount() {
return listenerCount;
}
public void setListenerCount(int listenerCount) {
this.listenerCount = listenerCount;
}
public List<Attendee> getAttendees() {
return attendees;
}
public void setAttendees(List<Attendee> attendees) {
this.attendees = attendees;
}
public Metadata getMetadata() {
return metadata;
}
public void setMetadata(Metadata metadata) {
this.metadata = metadata;
}
public String getMessageKey() {
return messageKey;
}
public void setMessageKey(String messageKey) {
this.messageKey = messageKey;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("returncode: ").append(returncode)
.append("\nmeetingName: ").append(meetingName)
.append("\nmeetingID: ").append(meetingID)
.append("\ninternalMeetingID: ").append(internalMeetingID)
.append("\ncreateTime: ").append(createTime)
.append("\nvoiceBridge: ").append(voiceBridge)
.append("\nattendeePW: ").append(attendeePW)
.append("\nmoderatorPW: ").append(moderatorPW)
.append("\nrunning: ").append(running).append("\nrecording: ")
.append(recording).append("\nhasBeenForciblyEnded: ")
.append(hasBeenForciblyEnded).append("\nstartTime: ")
.append(startTime).append("\nendTime: ").append(endTime)
.append("\nparticipantCount: ").append(participantCount)
.append("\nmaxUsers: ").append(maxUsers)
.append("\nmoderatorCount: ").append(moderatorCount)
.append("\nlistenerCount: ").append(listenerCount)
.append("\nattendees: ").append(attendees)
.append("\nmetadata: ").append(metadata)
.append("\nmessageKey: ").append(messageKey)
.append("\nmessage: ").append(message);
return builder.toString();
}
}