package org.bigbluebutton.api.domain; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import java.util.Map; import java.util.TreeMap; @JacksonXmlRootElement(localName = "recording") public class RecordingMetadata { /** * <recording> <id>32ee8bcccfad34f85c58a12f87fc4268130a4fd3-1489173065780</id> <state>published</state> <published>true</published> <start_time>1489173065780</start_time> <end_time>1489173199386</end_time> <breakout parentMeetingId="f3ffe06acedf425565cc024c8ebe89a6552e8782-1489172964374" sequence="2" meetingId="f2041d123b6a4b994e7ad87ee9d348496a73472c-1489173065780"/> <meta> <meetingId>f2041d123b6a4b994e7ad87ee9d348496a73472c-1489173065780</meetingId> <meetingName>random-2810069 (Room - 2)</meetingName> <isBreakout>true</isBreakout> </meta> <playback> <format>presentation</format> <link>http://192.168.23.22/playback/presentation/0.9.0/playback.html?meetingId=32ee8bcccfad34f85c58a12f87fc4268130a4fd3-1489173065780</link> <processing_time>9841</processing_time> <duration>126376</duration> <extensions> <preview> <images> <image width="176" height="136" alt="Welcome to">http://192.168.23.22/presentation/32ee8bcccfad34f85c58a12f87fc4268130a4fd3-1489173065780/presentation/743dd59a958334b4cdcdaa302846d0c0eadcf9ff-1489173070800/thumbnails/thumb-1.png</image> </images> </preview> </extensions> </playback> </recording> */ private String metadataXml; private Boolean processingError = false; private String id; private String state; private boolean published; @JacksonXmlProperty(localName = "start_time") private String startTime; @JacksonXmlProperty(localName = "end_time") private String endTime; @JacksonXmlProperty(localName = "participants") private int participants; @JacksonXmlProperty(localName = "meeting") private MeetingInfo meetingInfo; private String meetingId = ""; private String meetingName = ""; private Breakout breakout; @JacksonXmlElementWrapper(localName = "breakoutRooms") @JacksonXmlProperty(localName = "breakoutRoom") private BreakoutRoom[] breakoutRooms; private Metadata meta; private RecordingMetadataPlayback playback; public void setId(String id) { this.id = id; } public String getId() { return id; } public String getMeetingId() { MeetingInfo info = getMeeting(); if (info == null) { // return the recording id return id; } return info.getId(); } public String getMeetingName() { MeetingInfo info = getMeeting(); if (info == null) { return getMeta().get().get("meetingName"); } return info.getName(); } public Boolean isBreakout() { MeetingInfo info = getMeeting(); if (info == null) { return Boolean.parseBoolean(getMeta().get().get("isBreakout")); } return info.isBreakout(); } public void setState(String state) { this.state = state; } public String getState() { return state; } public void setPublished(boolean published) { this.published = published; } public boolean getPublished() { return published; } public void setStartTime(String startTime) { this.startTime = startTime; } public String getStartTime() { return startTime; } public void setEndTime(String endTime) { this.endTime = endTime; } public String getEndTime() { return endTime; } public void setParticipants(int participants) { this.participants = participants; } public int getParticipants() { return participants; } public void setMeeting(MeetingInfo meetingInfo) { this.meetingInfo = meetingInfo; } public MeetingInfo getMeeting() { return meetingInfo; } public void setBreakout(Breakout breakout) { this.breakout = breakout; } public Breakout getBreakout() { return breakout; } public void setBreakoutRooms(BreakoutRoom[] breakoutRooms) { this.breakoutRooms = breakoutRooms; } public BreakoutRoom[] getBreakoutRooms() { return breakoutRooms; } public void setMeta(Metadata meta) { this.meta = meta; } public Metadata getMeta() { return meta; } public RecordingMetadataPlayback getPlayback() { return playback; } public void setMetadataXml(String metadataXml) { this.metadataXml = metadataXml; } public String getMetadataXml() { return metadataXml; } public void setProcessingError(Boolean error) { processingError = error; } public Boolean hasError() { return processingError; } public Integer calculateDuration() { if ((endTime == null) || (endTime == "") || (startTime == null) || (startTime == "")) return 0; int start = (int) Math.ceil((Long.parseLong(startTime)) / 60000.0); int end = (int) Math.ceil((Long.parseLong(endTime)) / 60000.0); return end - start; } }