blob: 90dd5f5f7758b79253bd467960b39508832459c7 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License") + you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.openmeetings.servlet.outputhandler;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.data.basic.AuthLevelmanagement;
import org.openmeetings.app.data.basic.Configurationmanagement;
import org.openmeetings.app.data.basic.Sessionmanagement;
import org.openmeetings.app.data.basic.dao.LdapConfigDaoImpl;
import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl;
import org.openmeetings.app.data.calendar.daos.MeetingMemberDaoImpl;
import org.openmeetings.app.data.conference.PollManagement;
import org.openmeetings.app.data.conference.Roommanagement;
import org.openmeetings.app.data.conference.dao.RoomModeratorsDaoImpl;
import org.openmeetings.app.data.file.dao.FileExplorerItemDaoImpl;
import org.openmeetings.app.data.flvrecord.FlvRecordingDaoImpl;
import org.openmeetings.app.data.flvrecord.FlvRecordingMetaDataDaoImpl;
import org.openmeetings.app.data.user.Organisationmanagement;
import org.openmeetings.app.data.user.Usermanagement;
import org.openmeetings.app.data.user.dao.PrivateMessageFolderDaoImpl;
import org.openmeetings.app.data.user.dao.PrivateMessagesDaoImpl;
import org.openmeetings.app.data.user.dao.UserContactsDaoImpl;
import org.openmeetings.app.data.user.dao.UsersDaoImpl;
import org.openmeetings.app.persistence.beans.basic.Configuration;
import org.openmeetings.app.persistence.beans.basic.LdapConfig;
import org.openmeetings.app.persistence.beans.calendar.Appointment;
import org.openmeetings.app.persistence.beans.calendar.MeetingMember;
import org.openmeetings.app.persistence.beans.domain.Organisation;
import org.openmeetings.app.persistence.beans.domain.Organisation_Users;
import org.openmeetings.app.persistence.beans.files.FileExplorerItem;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecording;
import org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData;
import org.openmeetings.app.persistence.beans.poll.RoomPoll;
import org.openmeetings.app.persistence.beans.poll.RoomPollAnswers;
import org.openmeetings.app.persistence.beans.rooms.RoomModerators;
import org.openmeetings.app.persistence.beans.rooms.Rooms;
import org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation;
import org.openmeetings.app.persistence.beans.sip.asterisk.AsteriskSipUsers;
import org.openmeetings.app.persistence.beans.sip.asterisk.Extensions;
import org.openmeetings.app.persistence.beans.sip.asterisk.MeetMe;
import org.openmeetings.app.persistence.beans.user.PrivateMessageFolder;
import org.openmeetings.app.persistence.beans.user.PrivateMessages;
import org.openmeetings.app.persistence.beans.user.UserContacts;
import org.openmeetings.app.persistence.beans.user.Users;
import org.openmeetings.app.sip.api.impl.asterisk.dao.AsteriskDAOImpl;
import org.openmeetings.utils.math.CalendarPatterns;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* @author sebastianwagner
*
*/
public class BackupExport {
private static final Logger log = Red5LoggerFactory.getLogger(
BackupExport.class, OpenmeetingsVariables.webAppRootKey);
private static final String BACKUP_COMMENT =
"###############################################\n"
+ "This File is auto-generated by the Backup Tool \n"
+ "you should use the BackupPanel to modify or change this file \n"
+ "see http://incubator.apache.org/openmeetings/Upgrade.html for Details \n"
+ "###############################################";
@Autowired
private AppointmentDaoImpl appointmentDao;
@Autowired
private Sessionmanagement sessionManagement;
@Autowired
private Usermanagement userManagement;
@Autowired
private Organisationmanagement organisationmanagement;
@Autowired
private Roommanagement roommanagement;
@Autowired
private FileExplorerItemDaoImpl fileExplorerItemDao;
@Autowired
private FlvRecordingDaoImpl flvRecordingDao;
@Autowired
private FlvRecordingMetaDataDaoImpl flvRecordingMetaDataDao;
@Autowired
private RoomModeratorsDaoImpl roomModeratorsDao;
@Autowired
private UsersDaoImpl usersDao;
@Autowired
private MeetingMemberDaoImpl meetingMemberDao;
@Autowired
private LdapConfigDaoImpl ldapConfigDao;
@Autowired
private PrivateMessagesDaoImpl privateMessagesDao;
@Autowired
private PrivateMessageFolderDaoImpl privateMessageFolderDao;
@Autowired
private UserContactsDaoImpl userContactsDao;
@Autowired
private AuthLevelmanagement authLevelManagement;
@Autowired
private PollManagement pollManagement;
@Autowired
private Configurationmanagement cfgManagement;
@Autowired
private AsteriskDAOImpl asteriskDAOImpl;
public void performExport(String filePath, File backup_dir,
boolean includeFiles, String omFilesDir) throws Exception {
if (!backup_dir.exists()) {
backup_dir.mkdirs();
}
/*
* ##################### Backup Organizations
*/
List<Organisation> orgList = organisationmanagement
.getOrganisations(3L);
if (orgList != null) {
Document doc = this.createOrgDocument(orgList);
File orgListXML = new File(backup_dir, "organizations.xml");
FileOutputStream fos = new FileOutputStream(orgListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Backup Users
*/
List<Users> uList = usersDao.getAllUsersDeleted();
if (uList != null) {
log.debug("Number of Users to be deleted " + uList.size());
Document doc = this.createDocument(uList);
File userListXML = new File(backup_dir, "users.xml");
FileOutputStream fos = new FileOutputStream(userListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Backup Room
*/
List<Rooms> roomList = roommanagement.getBackupRooms();
if (roomList != null) {
Document doc = this.createRoomsDocument(roomList);
File roomListXML = new File(backup_dir, "rooms.xml");
FileOutputStream fos = new FileOutputStream(roomListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Backup Room Organizations
*/
List<Rooms_Organisation> roomOrgList = roommanagement
.getRoomsOrganisations();
if (roomOrgList != null) {
Document doc = this.createOrgRoomsDocument(roomOrgList);
File roomListXML = new File(backup_dir, "rooms_organisation.xml");
FileOutputStream fos = new FileOutputStream(roomListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Backup Appointements
*/
List<Appointment> aList = appointmentDao.getAppointments();
if (aList != null) {
Document doc = this.createAppointementDocument(aList);
File aListXML = new File(backup_dir, "appointements.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Backup Meeting Members
*/
List<MeetingMember> membersList = meetingMemberDao.getMeetingMembers();
if (membersList != null) {
Document doc = this.createMeetingMemberDocument(membersList);
File aListXML = new File(backup_dir, "meetingmembers.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### LDAP Configs
*/
List<LdapConfig> ldapConfigList = ldapConfigDao.getLdapConfigs();
if (ldapConfigList != null) {
Document doc = this.createLdapConfigDocument(ldapConfigList);
File aListXML = new File(backup_dir, "ldapconfigs.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Private Messages
*/
List<PrivateMessages> privateMessages = privateMessagesDao
.getPrivateMessages();
if (privateMessages != null) {
Document doc = this.createPrivateMessagesDocument(privateMessages);
File aListXML = new File(backup_dir, "privateMessages.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Private Message Folders
*/
List<PrivateMessageFolder> privateMessageFolders = privateMessageFolderDao
.getPrivateMessageFolders();
if (privateMessageFolders != null) {
Document doc = this
.createPrivateMessageFolderDocument(privateMessageFolders);
File aListXML = new File(backup_dir, "privateMessageFolder.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### User Contacts
*/
List<UserContacts> userContacts = userContactsDao.getUserContacts();
if (privateMessageFolders != null) {
Document doc = this.createUserContactsDocument(userContacts);
File aListXML = new File(backup_dir, "userContacts.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### File-Explorer
*/
List<FileExplorerItem> fileExplorerList = fileExplorerItemDao
.getFileExplorerItems();
if (fileExplorerList != null) {
Document doc = this
.createFileExplorerItemDocument(fileExplorerList);
File aListXML = new File(backup_dir, "fileExplorerItems.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Recordings
*/
List<FlvRecording> flvRecordings = flvRecordingDao
.getAllFlvRecordings();
for (FlvRecording flvRecording : flvRecordings) {
flvRecording.setFlvRecordingMetaData(flvRecordingMetaDataDao
.getFlvRecordingMetaDataByRecording(flvRecording
.getFlvRecordingId()));
}
if (privateMessageFolders != null) {
Document doc = this.createFlvRecordingDocument(flvRecordings);
File aListXML = new File(backup_dir, "flvRecordings.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Polls
*/
List<RoomPoll> roomPolls = pollManagement.getPollListBackup();
if (roomPolls != null) {
Document doc = this.createRoomPollDocument(roomPolls);
File aListXML = new File(backup_dir, "roompolls.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Config
*/
List<Configuration> configs = cfgManagement.getConfigurations(0, Integer.MAX_VALUE, "conf_key", true);
if (configs != null) {
Document doc = createConfigDocument(configs);
File aListXML = new File(backup_dir, "configs.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Asterisk SIP Data
*/
List<AsteriskSipUsers> asteriskSipUsers = asteriskDAOImpl.getAsteriskSipUsers();
if (asteriskSipUsers != null) {
Document doc = createAsteriskSipUsersDocument(asteriskSipUsers);
File aListXML = new File(backup_dir, "asterisksipusers.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Asterisk SIP Extensions
*/
List<Extensions> extensions = asteriskDAOImpl.getExtensions();
if (extensions != null) {
Document doc = createExtensionsDocument(extensions);
File aListXML = new File(backup_dir, "extensions.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
/*
* ##################### Asterisk SIP Meetme
*/
List<MeetMe> members = asteriskDAOImpl.getMembers();
if (members != null) {
Document doc = createMembersDocument(members);
File aListXML = new File(backup_dir, "members.xml");
FileOutputStream fos = new FileOutputStream(aListXML);
this.serializetoXML(fos, "UTF-8", doc);
}
if (includeFiles) {
/*
* ##################### Backup Room Files
*/
File targetDir = new File(backup_dir, "roomFiles");
if (!targetDir.exists()) {
targetDir.mkdir();
}
File sourceDir = new File(omFilesDir, OpenmeetingsVariables.UPLOAD_DIR);
File[] files = sourceDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
if (!file.getName().equals("backup")
&& !file.getName().equals("import")) {
targetDir = new File(backup_dir, "roomFiles" + File.separatorChar
+ file.getName());
log.debug("### " + file.getName());
copyDirectory(file, targetDir);
}
}
}
/*
* ##################### Backup Recording Files
*/
File targetDirRec = new File(backup_dir, "recordingFiles");
if (!targetDirRec.exists()) {
targetDirRec.mkdir();
}
File sourceDirRec = new File(omFilesDir, OpenmeetingsVariables.STREAMS_DIR
+ File.separatorChar + "hibernate" + File.separatorChar);
copyDirectory(sourceDirRec, targetDirRec);
}
List<File> fileList = new ArrayList<File>();
log.debug("---Getting references to all files in: "
+ backup_dir.getCanonicalPath());
getAllFiles(backup_dir, fileList);
log.debug("---Creating zip file");
writeZipFile(backup_dir, fileList, new FileOutputStream(filePath));
log.debug("---Done");
}
/*
* (non-Javadoc)
*
* @see
* javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
* , javax.servlet.http.HttpServletResponse)
*/
public void service(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, ServletContext servletCtx)
throws ServletException, IOException {
String sid = httpServletRequest.getParameter("sid");
if (sid == null) {
sid = "default";
}
log.debug("sid: " + sid);
Long users_id = sessionManagement.checkSession(sid);
Long user_level = userManagement.getUserLevelByID(users_id);
log.debug("users_id: " + users_id);
log.debug("user_level: " + user_level);
if (authLevelManagement.checkAdminLevel(user_level)) {
// if (true) {
String includeFileOption = httpServletRequest
.getParameter("includeFileOption");
boolean includeFiles = includeFileOption == null || "yes".equals(includeFileOption);
String moduleName = httpServletRequest
.getParameter("moduleName");
if (moduleName == null) {
moduleName = "moduleName";
}
log.debug("moduleName: " + moduleName);
if (moduleName.equals("backup")) {
/*
* ##################### Create Base Folder structure
*/
String current_dir = servletCtx.getRealPath("/");
File working_dir = new File(new File(current_dir, OpenmeetingsVariables.UPLOAD_DIR), "backup");
if (!working_dir.exists()) {
working_dir.mkdir();
}
String dateString = "backup_"
+ CalendarPatterns.getTimeForStreamId(new Date());
File backup_dir = new File(working_dir, dateString);
String requestedFile = dateString + ".zip";
File backupFile = new File(backup_dir, requestedFile);
String full_path = backupFile.getAbsolutePath();
try {
performExport(full_path, backup_dir, includeFiles, current_dir);
RandomAccessFile rf = new RandomAccessFile(full_path, "r");
httpServletResponse.reset();
httpServletResponse.resetBuffer();
httpServletResponse
.setContentType("APPLICATION/OCTET-STREAM");
httpServletResponse.setHeader("Content-Disposition",
"attachment; filename=\"" + requestedFile + "\"");
httpServletResponse.setHeader("Content-Length",
"" + rf.length());
OutputStream out = httpServletResponse.getOutputStream();
byte[] buffer = new byte[1024];
int readed = -1;
while ((readed = rf.read(buffer, 0, buffer.length)) > -1) {
out.write(buffer, 0, readed);
}
rf.close();
out.flush();
out.close();
} catch (Exception er) {
log.error("Error exporting: ", er);
}
if (backupFile.exists()) {
// log.debug("DELETE :1: "+backupFile.getAbsolutePath());
backupFile.delete();
}
deleteDirectory(backup_dir);
}
} else {
log.debug("ERROR LangExport: not authorized FileDownload "
+ (new Date()));
}
}
private Document createRoomPollDocument(List<RoomPoll> roomPollList) {
Document document = getDocument();
Element root = document.addElement("root");
Element roompolls = root.addElement("roompolls");
for (RoomPoll roomPollItem : roomPollList) {
Element roompoll = roompolls.addElement("roompoll");
roompoll.addElement("pollname").addCDATA(
formatString("" + roomPollItem.getPollName()));
roompoll.addElement("pollquestion").addCDATA(
formatString("" + roomPollItem.getPollQuestion()));
roompoll.addElement("archived").addCDATA(
formatString("" + roomPollItem.isArchived()));
roompoll.addElement("created").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(roomPollItem
.getCreated())));
if (roomPollItem.getCreatedBy() != null) {
roompoll.addElement("createdbyuserid").addCDATA(
formatString(""
+ roomPollItem.getCreatedBy().getUser_id()));
} else {
roompoll.addElement("createdbyuserid").addCDATA(
formatString(""));
}
if (roomPollItem.getPollType() != null) {
roompoll.addElement("polltypeid").addCDATA(
formatString(""
+ roomPollItem.getPollType().getPollTypesId()));
} else {
roompoll.addElement("polltypeid").addCDATA(formatString(""));
}
if (roomPollItem.getRoom() != null) {
roompoll.addElement("roomid")
.addCDATA(
formatString(""
+ roomPollItem.getRoom().getRooms_id()));
} else {
roompoll.addElement("roomid").addCDATA(formatString(""));
}
if (roomPollItem.getRoomPollAnswerList() == null) {
continue;
}
Element roompollanswers = roompoll
.addElement("roompollanswers");
for (RoomPollAnswers roomPollAnswersItem : roomPollItem
.getRoomPollAnswerList()) {
Element roompollanswer = roompollanswers
.addElement("roompollanswer");
roompollanswer.addElement("pointlist").addCDATA(
formatString("" + roomPollAnswersItem.getPointList()));
roompollanswer.addElement("answer").addCDATA(
formatString("" + roomPollAnswersItem.getAnswer()));
roompollanswer.addElement("votedate").addCDATA(
formatString(""
+ CalendarPatterns
.getExportDate(roomPollAnswersItem
.getVoteDate())));
if (roomPollAnswersItem.getVotedUser() != null){
roompollanswer.addElement("voteduserid").addCDATA(
formatString("" + roomPollAnswersItem.getVotedUser().getUser_id()));
} else {
roompollanswer.addElement("voteduserid").addCDATA(
formatString(""));
}
}
}
return document;
}
public boolean deleteDirectory(File path) throws IOException {
// log.debug("deleteDirectory :: "+path);
if (path.exists()) {
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
deleteDirectory(files[i]);
} else {
files[i].delete();
}
}
}
// log.debug("DELETE :3: "+path.getAbsolutePath());
return (path.delete());
}
public void getAllFiles(File dir, List<File> fileList) throws IOException {
try {
File[] files = dir.listFiles();
for (File file : files) {
fileList.add(file);
if (file.isDirectory()) {
// log.debug("directory:" + file.getCanonicalPath());
getAllFiles(file, fileList);
} else {
// log.debug(" file:" + file.getCanonicalPath());
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void writeZipFile(File directoryToZip, List<File> fileList,
FileOutputStream fos) {
try {
ZipOutputStream zos = new ZipOutputStream(fos);
for (File file : fileList) {
if (!file.isDirectory()) { // we only zip files, not directories
addToZip(directoryToZip, file, zos);
}
}
zos.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void copyDirectory(File sourceLocation, File targetLocation)
throws IOException {
// log.debug("^^^^ "+sourceLocation.getName()+" || "+targetLocation.getName());
if (sourceLocation.isDirectory()) {
if (!targetLocation.exists()) {
targetLocation.mkdir();
}
String[] children = sourceLocation.list();
for (int i = 0; i < children.length; i++) {
copyDirectory(new File(sourceLocation, children[i]), new File(
targetLocation, children[i]));
}
} else {
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
public void addToZip(File directoryToZip, File file, ZipOutputStream zos)
throws FileNotFoundException, IOException {
FileInputStream fis = new FileInputStream(file);
// we want the zipEntry's path to be a relative path that is relative
// to the directory being zipped, so chop off the rest of the path
String zipFilePath = file.getCanonicalPath().substring(
directoryToZip.getCanonicalPath().length() + 1,
file.getCanonicalPath().length());
log.debug("Writing '" + zipFilePath + "' to zip file");
ZipEntry zipEntry = new ZipEntry(zipFilePath);
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}
zos.closeEntry();
fis.close();
}
public Document createAppointementDocument(List<Appointment> aList)
throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element appointments = root.addElement("appointments");
for (Iterator<Appointment> it = aList.iterator(); it.hasNext();) {
Appointment a = it.next();
Element appointment = appointments.addElement("appointment");
appointment.addElement("appointmentId").addCDATA(
"" + a.getAppointmentId());
appointment.addElement("appointmentName").addCDATA(
"" + a.getAppointmentName());
appointment.addElement("appointmentLocation").addCDATA(
"" + a.getAppointmentLocation());
appointment.addElement("appointmentDescription").addCDATA(
"" + a.getAppointmentDescription());
appointment.addElement("appointmentStarttime")
.addCDATA(
CalendarPatterns.getExportDate(a
.getAppointmentStarttime()));
appointment.addElement("appointmentEndtime").addCDATA(
CalendarPatterns.getExportDate(a.getAppointmentEndtime()));
if (a.getAppointmentCategory() != null) {
appointment.addElement("categoryId").addCDATA(
"" + a.getAppointmentCategory().getCategoryId());
} else {
appointment.addElement("categoryId").addCDATA("" + 0);
}
if (a.getUserId() != null) {
appointment.addElement("users_id").addCDATA(
"" + a.getUserId().getUser_id());
} else {
appointment.addElement("users_id").addCDATA("" + 0);
}
appointment.addElement("deleted").addCDATA("" + a.getDeleted());
if (a.getRemind() != null) {
appointment.addElement("typId").addCDATA(
"" + a.getRemind().getTypId());
} else {
appointment.addElement("typId").addCDATA("" + 0);
}
appointment.addElement("isDaily").addCDATA("" + a.getIsDaily());
appointment.addElement("isWeekly").addCDATA("" + a.getIsWeekly());
appointment.addElement("isMonthly").addCDATA("" + a.getIsMonthly());
appointment.addElement("isYearly").addCDATA("" + a.getIsYearly());
if (a.getRoom() != null) {
appointment.addElement("room_id").addCDATA(
"" + a.getRoom().getRooms_id());
} else {
appointment.addElement("room_id").addCDATA("" + 0);
}
appointment.addElement("icalId").addCDATA("" + a.getIcalId());
appointment.addElement("language_id").addCDATA(
"" + a.getLanguage_id());
appointment.addElement("isPasswordProtected").addCDATA(
"" + a.getIsPasswordProtected());
appointment.addElement("password").addCDATA("" + a.getPassword());
}
return document;
}
public Document createRoomsDocument(List<Rooms> roomList) throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element rooms = root.addElement("rooms");
for (Iterator<Rooms> it = roomList.iterator(); it.hasNext();) {
Rooms r = it.next();
Element room = rooms.addElement("room");
room.addElement("name").addCDATA("" + r.getName());
room.addElement("rooms_id").addCDATA("" + r.getRooms_id());
room.addElement("deleted").addCDATA("" + r.getDeleted());
room.addElement("comment").addCDATA("" + r.getComment());
room.addElement("numberOfPartizipants").addCDATA(
"" + r.getNumberOfPartizipants());
room.addElement("appointment").addCDATA("" + r.getAppointment());
room.addElement("externalRoomId").addCDATA(
"" + r.getExternalRoomId());
room.addElement("externalRoomType").addCDATA(
"" + r.getExternalRoomType());
if (r.getRoomtype() != null) {
room.addElement("roomtypeId").addCDATA(
"" + r.getRoomtype().getRoomtypes_id());
} else {
room.addElement("roomtypeId").addCDATA("" + 0);
}
if (r.getOwnerId() != null) {
room.addElement("ownerid").addCDATA("" + r.getOwnerId());
} else {
room.addElement("ownerid").addCDATA("");
}
if (r.getWaitForRecording() != null) {
room.addElement("waitForRecording").addCDATA(
"" + r.getWaitForRecording());
} else {
room.addElement("waitForRecording").addCDATA("");
}
if (r.getHideTopBar() != null) {
room.addElement("hideTopBar").addCDATA("" + r.getHideTopBar());
} else {
room.addElement("hideTopBar").addCDATA("");
}
if (r.getAllowRecording() != null) {
room.addElement("allowRecording").addCDATA(
"" + r.getAllowRecording());
} else {
room.addElement("allowRecording").addCDATA("");
}
room.addElement("isDemoRoom").addCDATA("" + r.getIsDemoRoom());
room.addElement("demoTime").addCDATA("" + r.getDemoTime());
room.addElement("isModeratedRoom").addCDATA(
"" + r.getIsModeratedRoom());
room.addElement("allowUserQuestions").addCDATA(
"" + r.getAllowUserQuestions());
room.addElement("isAudioOnly").addCDATA("" + r.getIsAudioOnly());
room.addElement("sipNumber").addCDATA("" + r.getSipNumber());
room.addElement("conferencePin")
.addCDATA("" + r.getConferencePin());
if (r.getIspublic() != null) {
room.addElement("ispublic").addCDATA("" + r.getIspublic());
} else {
r.setIspublic(false);
room.addElement("ispublic").addCDATA("" + r.getIspublic());
}
if (r.getShowMicrophoneStatus() != null) {
room.addElement("showMicrophoneStatus").addCDATA("" + r.getShowMicrophoneStatus());
} else {
r.setShowMicrophoneStatus(false);
room.addElement("showMicrophoneStatus").addCDATA("" + r.getShowMicrophoneStatus());
}
if (r.getHideActionsMenu() != null) {
room.addElement("hideActionsMenu").addCDATA("" + r.getHideActionsMenu());
} else {
room.addElement("hideActionsMenu").addCDATA("");
}
if (r.getHideActivitiesAndActions() != null) {
room.addElement("hideActivitiesAndActions").addCDATA("" + r.getHideActivitiesAndActions());
} else {
room.addElement("hideActivitiesAndActions").addCDATA("");
}
if (r.getHideChat() != null) {
room.addElement("hideChat").addCDATA("" + r.getHideChat());
} else {
room.addElement("hideChat").addCDATA("");
}
if (r.getHideFilesExplorer() != null) {
room.addElement("hideFilesExplorer").addCDATA("" + r.getHideFilesExplorer());
} else {
room.addElement("hideFilesExplorer").addCDATA("");
}
if (r.getHideScreenSharing() != null) {
room.addElement("hideScreenSharing").addCDATA("" + r.getHideScreenSharing());
} else {
room.addElement("hideScreenSharing").addCDATA("");
}
if (r.getHideWhiteboard() != null) {
room.addElement("hideWhiteboard").addCDATA("" + r.getHideWhiteboard());
} else {
room.addElement("hideWhiteboard").addCDATA("");
}
room.addElement("isClosed").addCDATA("" + r.getIsClosed());
room.addElement("redirectURL").addCDATA("" + r.getRedirectURL());
List<RoomModerators> roomModeratorsList = roomModeratorsDao
.getRoomModeratorByRoomId(r.getRooms_id());
Element room_moderators = room.addElement("room_moderators");
for (RoomModerators roomModerator : roomModeratorsList) {
Element room_moderator = room_moderators
.addElement("room_moderator");
if (roomModerator.getUser() != null) {
room_moderator.addElement("user_id").addCDATA(
"" + roomModerator.getUser().getUser_id());
} else {
room_moderator.addElement("user_id").addCDATA("0");
}
room_moderator.addElement("is_supermoderator").addCDATA(
"" + roomModerator.getIsSuperModerator());
}
}
return document;
}
public Document createOrgDocument(List<Organisation> orgList)
throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element organisations = root.addElement("organisations");
for (Iterator<Organisation> it = orgList.iterator(); it.hasNext();) {
Organisation org = it.next();
Element organisation = organisations.addElement("organisation");
organisation.addElement("name").addCDATA(
formatString("" + org.getName()));
organisation.addElement("organisation_id").addCDATA(
formatString("" + org.getOrganisation_id()));
organisation.addElement("deleted").addCDATA(
formatString("" + org.getDeleted()));
}
return document;
}
private String formatString(String str) {
// Todo fix if there is sth. we can do to prevent unicode replacement
// with invalid chars
// This is the place if you need to do special conversion on the strings
return str;
}
private Document createPrivateMessagesDocument(
List<PrivateMessages> privateMessages) throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element privatemessages = root.addElement("privatemessages");
for (Iterator<PrivateMessages> it = privateMessages.iterator(); it
.hasNext();) {
PrivateMessages pm = it.next();
Element privateMessage = privatemessages
.addElement("privatemessage");
privateMessage.addElement("privateMessageId").addCDATA(
formatString("" + pm.getPrivateMessageId()));
privateMessage.addElement("message").addCDATA(
formatString("" + pm.getMessage()));
privateMessage.addElement("subject").addCDATA(
formatString("" + pm.getSubject()));
privateMessage.addElement("privateMessageFolderId").addCDATA(
formatString("" + pm.getPrivateMessageFolderId()));
privateMessage.addElement("userContactId").addCDATA(
formatString("" + pm.getUserContactId()));
privateMessage.addElement("parentMessage").addCDATA(
formatString("" + pm.getParentMessage()));
privateMessage.addElement("bookedRoom").addCDATA(
formatString("" + pm.getBookedRoom()));
if (pm.getFrom() != null) {
privateMessage.addElement("from").addCDATA(
formatString("" + pm.getFrom().getUser_id()));
} else {
privateMessage.addElement("from").addCDATA("0");
}
if (pm.getTo() != null) {
privateMessage.addElement("to").addCDATA(
formatString("" + pm.getTo().getUser_id()));
} else {
privateMessage.addElement("to").addCDATA("0");
}
privateMessage.addElement("inserted")
.addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(pm
.getInserted())));
privateMessage.addElement("isContactRequest").addCDATA(
formatString("" + pm.getIsContactRequest()));
privateMessage.addElement("isRead").addCDATA(
formatString("" + pm.getIsRead()));
privateMessage.addElement("isTrash").addCDATA(
formatString("" + pm.getIsTrash()));
if (pm.getOwner() != null) {
privateMessage.addElement("owner").addCDATA(
formatString("" + pm.getOwner().getUser_id()));
} else {
privateMessage.addElement("owner").addCDATA("0");
}
if (pm.getRoom() != null) {
privateMessage.addElement("room").addCDATA(
formatString("" + pm.getRoom().getRooms_id()));
} else {
privateMessage.addElement("room").addCDATA("0");
}
}
return document;
}
private Document createFileExplorerItemDocument(
List<FileExplorerItem> fileExplorerItems) throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element fileExplorerItemsElement = root.addElement("fileExplorerItems");
for (Iterator<FileExplorerItem> it = fileExplorerItems.iterator(); it
.hasNext();) {
FileExplorerItem fileExplorerItem = it.next();
Element fileExplorerItemElement = fileExplorerItemsElement
.addElement("fileExplorerItem");
fileExplorerItemElement
.addElement("fileExplorerItemId")
.addCDATA(
formatString(""
+ fileExplorerItem.getFileExplorerItemId()));
fileExplorerItemElement.addElement("fileName").addCDATA(
formatString("" + fileExplorerItem.getFileName()));
fileExplorerItemElement.addElement("fileHash").addCDATA(
formatString("" + fileExplorerItem.getFileHash()));
fileExplorerItemElement.addElement("parentFileExplorerItemId")
.addCDATA(
formatString(""
+ fileExplorerItem
.getParentFileExplorerItemId()));
fileExplorerItemElement.addElement("room_id").addCDATA(
formatString("" + fileExplorerItem.getRoom_id()));
fileExplorerItemElement.addElement("ownerId").addCDATA(
formatString("" + fileExplorerItem.getOwnerId()));
fileExplorerItemElement.addElement("isFolder").addCDATA(
formatString("" + fileExplorerItem.getIsFolder()));
fileExplorerItemElement.addElement("isImage").addCDATA(
formatString("" + fileExplorerItem.getIsImage()));
fileExplorerItemElement.addElement("isPresentation").addCDATA(
formatString("" + fileExplorerItem.getIsPresentation()));
fileExplorerItemElement.addElement("isVideo").addCDATA(
formatString("" + fileExplorerItem.getIsVideo()));
fileExplorerItemElement.addElement("insertedBy").addCDATA(
formatString("" + fileExplorerItem.getInsertedBy()));
fileExplorerItemElement.addElement("inserted").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(fileExplorerItem
.getInserted())));
fileExplorerItemElement.addElement("updated").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(fileExplorerItem
.getUpdated())));
fileExplorerItemElement.addElement("deleted").addCDATA(
formatString("" + fileExplorerItem.getDeleted()));
fileExplorerItemElement.addElement("fileSize").addCDATA(
formatString("" + fileExplorerItem.getFileSize()));
fileExplorerItemElement.addElement("flvWidth").addCDATA(
formatString("" + fileExplorerItem.getFlvWidth()));
fileExplorerItemElement.addElement("flvHeight").addCDATA(
formatString("" + fileExplorerItem.getFlvHeight()));
fileExplorerItemElement.addElement("previewImage").addCDATA(
formatString("" + fileExplorerItem.getPreviewImage()));
fileExplorerItemElement.addElement("wmlFilePath").addCDATA(
formatString("" + fileExplorerItem.getWmlFilePath()));
fileExplorerItemElement.addElement("isStoredWmlFile").addCDATA(
formatString("" + fileExplorerItem.getIsStoredWmlFile()));
fileExplorerItemElement.addElement("isChart").addCDATA(
formatString("" + fileExplorerItem.getIsChart()));
}
return document;
}
private Document createFlvRecordingDocument(List<FlvRecording> flvRecordings)
throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element flvrecordings = root.addElement("flvrecordings");
for (Iterator<FlvRecording> it = flvRecordings.iterator(); it.hasNext();) {
FlvRecording flvRec = it.next();
Element flvrecording = flvrecordings.addElement("flvrecording");
flvrecording.addElement("alternateDownload").addCDATA(
formatString("" + flvRec.getAlternateDownload()));
flvrecording.addElement("comment").addCDATA(
formatString("" + flvRec.getComment()));
flvrecording.addElement("deleted").addCDATA(
formatString("" + flvRec.getDeleted()));
flvrecording.addElement("fileHash").addCDATA(
formatString("" + flvRec.getFileHash()));
flvrecording.addElement("fileName").addCDATA(
formatString("" + flvRec.getFileName()));
flvrecording.addElement("flvRecordingId").addCDATA(
formatString("" + flvRec.getFlvRecordingId()));
flvrecording.addElement("previewImage").addCDATA(
formatString("" + flvRec.getPreviewImage()));
flvrecording.addElement("recorderStreamId").addCDATA(
formatString("" + flvRec.getRecorderStreamId()));
flvrecording.addElement("fileSize").addCDATA(
formatString("" + flvRec.getFileSize()));
flvrecording.addElement("flvHeight").addCDATA(
formatString("" + flvRec.getFlvHeight()));
flvrecording.addElement("flvWidth").addCDATA(
formatString("" + flvRec.getFlvWidth()));
flvrecording.addElement("height").addCDATA(
formatString("" + flvRec.getHeight()));
flvrecording.addElement("width").addCDATA(
formatString("" + flvRec.getWidth()));
flvrecording.addElement("insertedBy").addCDATA(
formatString("" + flvRec.getInsertedBy()));
flvrecording.addElement("organization_id").addCDATA(
formatString("" + flvRec.getOrganization_id()));
flvrecording.addElement("ownerId").addCDATA(
formatString("" + flvRec.getOwnerId()));
flvrecording.addElement("parentFileExplorerItemId").addCDATA(
formatString("" + flvRec.getParentFileExplorerItemId()));
flvrecording.addElement("progressPostProcessing").addCDATA(
formatString("" + flvRec.getProgressPostProcessing()));
flvrecording.addElement("room_id").addCDATA(
formatString("" + flvRec.getRoom_id()));
flvrecording.addElement("inserted").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(flvRec
.getInserted())));
flvrecording.addElement("isFolder").addCDATA(
formatString("" + flvRec.getIsFolder()));
flvrecording.addElement("isImage").addCDATA(
formatString("" + flvRec.getIsImage()));
flvrecording.addElement("isInterview").addCDATA(
formatString("" + flvRec.getIsInterview()));
flvrecording.addElement("isPresentation").addCDATA(
formatString("" + flvRec.getIsPresentation()));
flvrecording.addElement("isRecording").addCDATA(
formatString("" + flvRec.getIsRecording()));
flvrecording.addElement("recordEnd").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(flvRec
.getRecordEnd())));
flvrecording.addElement("recordStart").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(flvRec
.getRecordStart())));
Element flvrecordingmetadatas = flvrecording
.addElement("flvrecordingmetadatas");
for (Iterator<FlvRecordingMetaData> itMeta = flvRec
.getFlvRecordingMetaData().iterator(); itMeta.hasNext();) {
FlvRecordingMetaData flvMeta = itMeta.next();
Element flvrecordingmetadata = flvrecordingmetadatas
.addElement("flvrecordingmetadata");
flvrecordingmetadata.addElement("flvRecordingMetaDataId")
.addCDATA(
formatString(""
+ flvMeta.getFlvRecordingMetaDataId()));
flvrecordingmetadata.addElement("freeTextUserName").addCDATA(
formatString("" + flvMeta.getFreeTextUserName()));
flvrecordingmetadata.addElement("fullWavAudioData").addCDATA(
formatString("" + flvMeta.getFullWavAudioData()));
flvrecordingmetadata.addElement("streamName").addCDATA(
formatString("" + flvMeta.getStreamName()));
flvrecordingmetadata.addElement("wavAudioData").addCDATA(
formatString("" + flvMeta.getWavAudioData()));
flvrecordingmetadata.addElement("initialGapSeconds").addCDATA(
formatString("" + flvMeta.getInitialGapSeconds()));
flvrecordingmetadata.addElement("insertedBy").addCDATA(
formatString("" + flvMeta.getInsertedBy()));
flvrecordingmetadata.addElement("interiewPodId").addCDATA(
formatString("" + flvMeta.getInteriewPodId()));
flvrecordingmetadata.addElement("audioIsValid").addCDATA(
formatString("" + flvMeta.getAudioIsValid()));
flvrecordingmetadata.addElement("inserted").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(flvMeta
.getInserted())));
flvrecordingmetadata.addElement("isAudioOnly").addCDATA(
formatString("" + flvMeta.getIsAudioOnly()));
flvrecordingmetadata.addElement("isScreenData").addCDATA(
formatString("" + flvMeta.getIsScreenData()));
flvrecordingmetadata.addElement("isVideoOnly").addCDATA(
formatString("" + flvMeta.getIsVideoOnly()));
flvrecordingmetadata.addElement("recordEnd").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(flvMeta
.getRecordEnd())));
flvrecordingmetadata.addElement("recordStart").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(flvMeta
.getRecordStart())));
flvrecordingmetadata.addElement("updated").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(flvMeta
.getUpdated())));
}
}
return document;
}
private Document createPrivateMessageFolderDocument(
List<PrivateMessageFolder> privateMessageFolders) throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element privatemessagefolders = root
.addElement("privatemessagefolders");
for (Iterator<PrivateMessageFolder> it = privateMessageFolders
.iterator(); it.hasNext();) {
PrivateMessageFolder pmf = it.next();
Element privateMessageFolder = privatemessagefolders
.addElement("privatemessagefolder");
privateMessageFolder.addElement("privateMessageFolderId").addCDATA(
formatString("" + pmf.getPrivateMessageFolderId()));
privateMessageFolder.addElement("folderName").addCDATA(
formatString("" + pmf.getFolderName()));
privateMessageFolder.addElement("userId").addCDATA(
formatString("" + pmf.getUserId()));
}
return document;
}
private Document createUserContactsDocument(List<UserContacts> userContacts)
throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element usercontacts = root.addElement("usercontacts");
for (Iterator<UserContacts> it = userContacts.iterator(); it.hasNext();) {
UserContacts uc = it.next();
Element usercontact = usercontacts.addElement("usercontact");
usercontact.addElement("userContactId").addCDATA(
formatString("" + uc.getUserContactId()));
usercontact.addElement("hash").addCDATA(
formatString("" + uc.getHash()));
if (uc.getContact() != null) {
usercontact.addElement("contact").addCDATA(
formatString("" + uc.getContact().getUser_id()));
} else {
usercontact.addElement("contact").addCDATA("0");
}
if (uc.getOwner() != null) {
usercontact.addElement("owner").addCDATA(
formatString("" + uc.getOwner().getUser_id()));
} else {
usercontact.addElement("owner").addCDATA("0");
}
usercontact.addElement("pending").addCDATA(
formatString("" + uc.getPending()));
usercontact.addElement("shareCalendar").addCDATA(
formatString("" + uc.getShareCalendar()));
}
return document;
}
private Document createOrgRoomsDocument(List<Rooms_Organisation> roomOrgList)
throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element organisations = root.addElement("room_organisations");
for (Iterator<Rooms_Organisation> it = roomOrgList.iterator(); it
.hasNext();) {
Rooms_Organisation roomOrg = it.next();
Element room_organisation = organisations
.addElement("room_organisation");
room_organisation.addElement("rooms_organisation_id").addCDATA(
formatString("" + roomOrg.getRooms_organisation_id()));
room_organisation.addElement("organisation_id").addCDATA(
"true".equals(roomOrg.getDeleted()) ? "0" :
formatString(""
+ roomOrg.getOrganisation().getOrganisation_id()));
if (roomOrg.getRoom() != null) {
room_organisation.addElement("rooms_id").addCDATA(
formatString("" + roomOrg.getRoom().getRooms_id()));
} else {
room_organisation.addElement("rooms_id").addCDATA("0");
}
room_organisation.addElement("deleted").addCDATA(
formatString("" + roomOrg.getDeleted()));
}
return document;
}
private Document createMeetingMemberDocument(List<MeetingMember> memberList)
throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element meetingmembers = root.addElement("meetingmembers");
for (Iterator<MeetingMember> it = memberList.iterator(); it.hasNext();) {
MeetingMember meetMember = it.next();
Element meetingmember = meetingmembers.addElement("meetingmember");
meetingmember.addElement("meetingMemberId").addCDATA(
formatString("" + meetMember.getMeetingMemberId()));
if (meetMember.getUserid() != null) {
meetingmember.addElement("userid").addCDATA(
formatString("" + meetMember.getUserid().getUser_id()));
} else {
meetingmember.addElement("userid").addCDATA("0");
}
if (meetMember.getAppointment() != null) {
meetingmember.addElement("appointment").addCDATA(
formatString(""
+ meetMember.getAppointment()
.getAppointmentId()));
} else {
meetingmember.addElement("appointment").addCDATA("0");
}
meetingmember.addElement("firstname").addCDATA(
formatString("" + meetMember.getFirstname()));
meetingmember.addElement("lastname").addCDATA(
formatString("" + meetMember.getLastname()));
meetingmember.addElement("memberStatus").addCDATA(
formatString("" + meetMember.getMemberStatus()));
meetingmember.addElement("appointmentStatus").addCDATA(
formatString("" + meetMember.getAppointmentStatus()));
meetingmember.addElement("email").addCDATA(
formatString("" + meetMember.getEmail()));
meetingmember.addElement("deleted").addCDATA(
formatString("" + meetMember.getDeleted()));
meetingmember.addElement("invitor").addCDATA(
formatString("" + meetMember.getInvitor()));
}
return document;
}
private Document createLdapConfigDocument(List<LdapConfig> ldapConfigList)
throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element ldapconfigs = root.addElement("ldapconfigs");
for (Iterator<LdapConfig> it = ldapConfigList.iterator(); it.hasNext();) {
LdapConfig ldapC = it.next();
Element ldapconfig = ldapconfigs.addElement("ldapconfig");
ldapconfig.addElement("name").addCDATA(
formatString("" + ldapC.getName()));
ldapconfig.addElement("configFileName").addCDATA(
formatString("" + ldapC.getConfigFileName()));
ldapconfig.addElement("addDomainToUserName").addCDATA(
formatString("" + ldapC.getAddDomainToUserName()));
ldapconfig.addElement("domain").addCDATA(
formatString("" + ldapC.getDomain()));
ldapconfig.addElement("isActive").addCDATA(
formatString("" + ldapC.getIsActive()));
}
return document;
}
public Document createDocument(List<Users> uList) throws Exception {
Document document = getDocument();
Element root = document.addElement("root");
Element users = root.addElement("users");
for (Users u : uList) {
Element user = users.addElement("user");
user.addElement("user_id").addCDATA(
formatString("" + u.getUser_id()));
user.addElement("deleted").addCDATA(
formatString("" + u.getDeleted()));
user.addElement("age")
.addCDATA(
formatString(""
+ CalendarPatterns.getDateByMiliSeconds(u
.getAge())));
if (u.getAvailible() != null) {
user.addElement("availible").addCDATA(
formatString("" + u.getAvailible().toString()));
} else {
user.addElement("availible").addCDATA("0");
}
user.addElement("deleted").addCDATA(
formatString("" + u.getDeleted()));
user.addElement("firstname").addCDATA(
formatString("" + u.getFirstname()));
user.addElement("lastname").addCDATA(
formatString("" + u.getLastname()));
user.addElement("login").addCDATA(formatString("" + u.getLogin()));
user.addElement("pass")
.addCDATA(formatString("" + u.getPassword()));
if (u.getActivatehash() != null) {
user.addElement("activatehash").addCDATA(
formatString("" + u.getActivatehash()));
} else {
user.addElement("activatehash").addCDATA(formatString(""));
}
if (u.getExternalUserType() != null) {
user.addElement("externalUserType").addCDATA(
formatString("" + u.getExternalUserType()));
} else {
user.addElement("externalUserType").addCDATA(formatString(""));
}
if (u.getExternalUserId() != null) {
user.addElement("externalUserId").addCDATA(
formatString("" + u.getExternalUserId()));
} else {
user.addElement("externalUserId").addCDATA(formatString(""));
}
if (u.getResethash() != null) {
user.addElement("resethash").addCDATA(
formatString("" + u.getResethash()));
} else {
user.addElement("resethash").addCDATA(formatString(""));
}
if (u.getUserOffers() != null) {
user.addElement("userOffers").addCDATA(
formatString("" + u.getUserOffers()));
} else {
user.addElement("userOffers").addCDATA(formatString(""));
}
if (u.getUserSearchs() != null) {
user.addElement("userSearchs").addCDATA(
formatString("" + u.getUserSearchs()));
} else {
user.addElement("userSearchs").addCDATA(formatString(""));
}
if (u.getForceTimeZoneCheck() != null) {
user.addElement("forceTimeZoneCheck").addCDATA(
formatString("" + u.getForceTimeZoneCheck()));
} else {
user.addElement("ForceTimeZoneCheck")
.addCDATA(formatString(""));
}
if (u.getLasttrans() != null) {
user.addElement("lasttrans").addCDATA(
formatString("" + u.getLasttrans()));
} else {
user.addElement("lasttrans").addCDATA(formatString(""));
}
if (u.getShowContactData() != null) {
user.addElement("showContactData").addCDATA(
formatString("" + u.getShowContactData()));
} else {
user.addElement("showContactData").addCDATA(formatString(""));
}
if (u.getShowContactDataToContacts() != null) {
user.addElement("showContactDataToContacts").addCDATA(
formatString("" + u.getShowContactDataToContacts()));
} else {
user.addElement("showContactDataToContacts").addCDATA(
formatString(""));
}
String pictureuri = u.getPictureuri();
if (pictureuri != null)
user.addElement("pictureuri").addCDATA(pictureuri);
else
user.addElement("pictureuri").addCDATA(formatString(""));
if (u.getLanguage_id() != null)
user.addElement("language_id").addCDATA(
formatString(u.getLanguage_id().toString()));
else
user.addElement("language_id").addCDATA(formatString(""));
if (u.getStatus() != null) {
user.addElement("status").addCDATA(
formatString("" + u.getStatus().toString()));
} else {
user.addElement("status").addCDATA("0");
}
user.addElement("regdate").addCDATA(
formatString(""
+ CalendarPatterns.getExportDate(u.getRegdate())));
if (u.getTitle_id() != null) {
user.addElement("title_id").addCDATA(
formatString("" + u.getTitle_id().toString()));
user.addElement("level_id").addCDATA(
formatString("" + u.getLevel_id().toString()));
} else {
user.addElement("title_id").addCDATA("1");
user.addElement("level_id").addCDATA("1");
}
if (u.getOmTimeZone() != null) {
user.addElement("omTimeZone").addCDATA(
formatString("" + u.getOmTimeZone().getJname()));
} else {
user.addElement("omTimeZone").addCDATA(formatString(""));
}
if (u.getAdresses() != null) {
user.addElement("additionalname").addCDATA(
formatString("" + u.getAdresses().getAdditionalname()));
user.addElement("comment").addCDATA(
formatString("" + u.getAdresses().getComment()));
// A User can not have a deleted Adress, you cannot delete the
// Adress of an User
// String deleted = u.getAdresses().getDeleted()
// Phone Number not done yet
user.addElement("fax").addCDATA(
formatString("" + u.getAdresses().getFax()));
if (u.getAdresses().getStates() != null) {
user.addElement("state_id").addCDATA(
formatString(""
+ u.getAdresses().getStates().getState_id()
.toString()));
} else {
user.addElement("state_id").addCDATA("1");
}
user.addElement("street").addCDATA(
formatString("" + u.getAdresses().getStreet()));
user.addElement("town").addCDATA(
formatString("" + u.getAdresses().getTown()));
user.addElement("zip").addCDATA(
formatString("" + u.getAdresses().getZip()));
// Email and Phone
user.addElement("mail").addCDATA(
formatString("" + u.getAdresses().getEmail()));
user.addElement("phone").addCDATA(
formatString("" + u.getAdresses().getPhone()));
} else {
user.addElement("additionalname").addCDATA(formatString(""));
user.addElement("comment").addCDATA(formatString(""));
// A User can not have a deleted address, you cannot delete the
// address of an User without deleting the user
// only SOAP users might have a null
// String deleted = u.getAdresses().getDeleted()
// Phone Number not done yet
user.addElement("fax").addCDATA(formatString(""));
user.addElement("state_id").addCDATA("1");
user.addElement("street").addCDATA(formatString(""));
user.addElement("town").addCDATA(formatString(""));
user.addElement("zip").addCDATA(formatString(""));
user.addElement("mail").addCDATA(formatString(""));
user.addElement("phone").addCDATA(formatString(""));
}
if (u.getUserSipData() != null) {
user.addElement("sip_username").addCDATA(
formatString("" + u.getUserSipData().getUsername()));
user.addElement("sip_userpass").addCDATA(
formatString("" + u.getUserSipData().getUserpass()));
user.addElement("sip_authid").addCDATA(
formatString("" + u.getUserSipData().getAuthId()));
}
Element user_organisations = user.addElement("organisations");
// List<String> organisations = new LinkedList();
for (Iterator<Organisation_Users> iterObj = u
.getOrganisation_users().iterator(); iterObj.hasNext();) {
Element user_organisation = user_organisations
.addElement("user_organisation");
Organisation_Users orgUsers = iterObj.next();
if (orgUsers.getOrganisation() != null) {
user_organisation.addElement("organisation_id").addCDATA(
formatString(""
+ orgUsers.getOrganisation()
.getOrganisation_id().toString()));
} else {
user_organisation.addElement("organisation_id").addCDATA(
"0");
}
user_organisation.addElement("deleted").addCDATA(
formatString("" + orgUsers.getDeleted()));
user_organisation.addElement("isModerator").addCDATA(
formatString("" + orgUsers.getIsModerator()));
}
// Not need at the moment
// Element user_groups = user.addElement("groups");
}
return document;
}
private Document getDocument() {
Document document = DocumentHelper.createDocument();
document.setXMLEncoding("UTF-8");
document.addComment(BACKUP_COMMENT);
return document;
}
private Document createConfigDocument(List<Configuration> configs) {
Document document = getDocument();
Element root = document.addElement("root");
Element configsElem = root.addElement("configs");
for (Configuration cfg : configs) {
Element cfgElem = configsElem.addElement("config");
cfgElem.addElement("id").addCDATA(formatString("" + cfg.getConfiguration_id()));
cfgElem.addElement("comment").addCDATA(formatString("" + cfg.getComment()));
cfgElem.addElement("key").addCDATA(formatString(cfg.getConf_key()));
cfgElem.addElement("value").addCDATA(formatString(cfg.getConf_value()));
cfgElem.addElement("deleted").addCDATA(formatString(cfg.getDeleted()));
cfgElem.addElement("created").addCDATA(formatString(CalendarPatterns.getExportDate(cfg.getStarttime())));
cfgElem.addElement("updated").addCDATA(formatString(CalendarPatterns.getExportDate(cfg.getUpdatetime())));
cfgElem.addElement("user_id").addCDATA(formatString("" + cfg.getUser_id()));
}
return document;
}
private Document createAsteriskSipUsersDocument(
List<AsteriskSipUsers> asteriskSipUsers) {
Document document = getDocument();
Element root = document.addElement("root");
Element astusersElem = root.addElement("asterisksipusers");
for (AsteriskSipUsers asteriskSipUser : asteriskSipUsers) {
Element astuserElem = astusersElem.addElement("asterisksipuser");
astuserElem.addElement("id").addCDATA(formatString("" + asteriskSipUser.getId()));
astuserElem.addElement("accountcode").addCDATA(formatString("" + asteriskSipUser.getAccountcode()));
astuserElem.addElement("disallow").addCDATA(formatString("" + asteriskSipUser.getDisallow()));
astuserElem.addElement("allow").addCDATA(formatString("" + asteriskSipUser.getAllow()));
astuserElem.addElement("allowoverlap").addCDATA(formatString("" + asteriskSipUser.getAllowoverlap()));
astuserElem.addElement("allowsubscribe").addCDATA(formatString("" + asteriskSipUser.getAllowsubscribe()));
astuserElem.addElement("allowtransfer").addCDATA(formatString("" + asteriskSipUser.getAllowtransfer()));
astuserElem.addElement("amaflags").addCDATA(formatString("" + asteriskSipUser.getAmaflags()));
astuserElem.addElement("autoframing").addCDATA(formatString("" + asteriskSipUser.getAutoframing()));
astuserElem.addElement("auth").addCDATA(formatString("" + asteriskSipUser.getAuth()));
astuserElem.addElement("buggymwi").addCDATA(formatString("" + asteriskSipUser.getBuggymwi()));
astuserElem.addElement("callgroup").addCDATA(formatString("" + asteriskSipUser.getCallgroup()));
astuserElem.addElement("callerid").addCDATA(formatString("" + asteriskSipUser.getCallerid()));
astuserElem.addElement("cid_number").addCDATA(formatString("" + asteriskSipUser.getCid_number()));
astuserElem.addElement("fullname").addCDATA(formatString("" + asteriskSipUser.getFullname()));
astuserElem.addElement("callingpres").addCDATA(formatString("" + asteriskSipUser.getCallingpres()));
astuserElem.addElement("canreinvite").addCDATA(formatString("" + asteriskSipUser.getCanreinvite()));
astuserElem.addElement("context").addCDATA(formatString("" + asteriskSipUser.getContext()));
astuserElem.addElement("defaultip").addCDATA(formatString("" + asteriskSipUser.getDefaultip()));
astuserElem.addElement("dtmfmode").addCDATA(formatString("" + asteriskSipUser.getDtmfmode()));
astuserElem.addElement("fromuser").addCDATA(formatString("" + asteriskSipUser.getFromuser()));
astuserElem.addElement("fromdomain").addCDATA(formatString("" + asteriskSipUser.getFromdomain()));
astuserElem.addElement("fullcontact").addCDATA(formatString("" + asteriskSipUser.getFullcontact()));
astuserElem.addElement("g726nonstandard").addCDATA(formatString("" + asteriskSipUser.getG726nonstandard()));
astuserElem.addElement("host").addCDATA(formatString("" + asteriskSipUser.getHost()));
astuserElem.addElement("insecure").addCDATA(formatString("" + asteriskSipUser.getInsecure()));
astuserElem.addElement("ipaddr").addCDATA(formatString("" + asteriskSipUser.getIpaddr()));
astuserElem.addElement("language").addCDATA(formatString("" + asteriskSipUser.getLanguage()));
astuserElem.addElement("lastms").addCDATA(formatString("" + asteriskSipUser.getLastms()));
astuserElem.addElement("mailbox").addCDATA(formatString("" + asteriskSipUser.getMailbox()));
astuserElem.addElement("maxcallbitrate").addCDATA(formatString("" + asteriskSipUser.getMaxcallbitrate()));
astuserElem.addElement("mohsuggest").addCDATA(formatString("" + asteriskSipUser.getMohsuggest()));
astuserElem.addElement("md5secret").addCDATA(formatString("" + asteriskSipUser.getMd5secret()));
astuserElem.addElement("musiconhold").addCDATA(formatString("" + asteriskSipUser.getMusiconhold()));
astuserElem.addElement("name").addCDATA(formatString("" + asteriskSipUser.getName()));
astuserElem.addElement("nat").addCDATA(formatString("" + asteriskSipUser.getNat()));
astuserElem.addElement("outboundproxy").addCDATA(formatString("" + asteriskSipUser.getOutboundproxy()));
astuserElem.addElement("deny").addCDATA(formatString("" + asteriskSipUser.getDeny()));
astuserElem.addElement("permit").addCDATA(formatString("" + asteriskSipUser.getPermit()));
astuserElem.addElement("pickupgroup").addCDATA(formatString("" + asteriskSipUser.getPickupgroup()));
astuserElem.addElement("port").addCDATA(formatString("" + asteriskSipUser.getPort()));
astuserElem.addElement("progressinband").addCDATA(formatString("" + asteriskSipUser.getProgressinband()));
astuserElem.addElement("promiscredir").addCDATA(formatString("" + asteriskSipUser.getPromiscredir()));
astuserElem.addElement("qualify").addCDATA(formatString("" + asteriskSipUser.getQualify()));
astuserElem.addElement("regexten").addCDATA(formatString("" + asteriskSipUser.getRegexten()));
astuserElem.addElement("regseconds").addCDATA(formatString("" + asteriskSipUser.getRegseconds()));
astuserElem.addElement("rfc2833compensate").addCDATA(formatString("" + asteriskSipUser.getRfc2833compensate()));
astuserElem.addElement("rtptimeout").addCDATA(formatString("" + asteriskSipUser.getRtptimeout()));
astuserElem.addElement("rtpholdtimeout").addCDATA(formatString("" + asteriskSipUser.getRtpholdtimeout()));
astuserElem.addElement("secret").addCDATA(formatString("" + asteriskSipUser.getSecret()));
astuserElem.addElement("sendrpid").addCDATA(formatString("" + asteriskSipUser.getSendrpid()));
astuserElem.addElement("setvar").addCDATA(formatString("" + asteriskSipUser.getSetvar()));
astuserElem.addElement("subscribecontext").addCDATA(formatString("" + asteriskSipUser.getSubscribecontext()));
astuserElem.addElement("subscribemwi").addCDATA(formatString("" + asteriskSipUser.getSubscribemwi()));
astuserElem.addElement("t38pt_udptl").addCDATA(formatString("" + asteriskSipUser.getId()));
astuserElem.addElement("trustrpid").addCDATA(formatString("" + asteriskSipUser.getTrustrpid()));
astuserElem.addElement("type").addCDATA(formatString("" + asteriskSipUser.getType()));
astuserElem.addElement("useclientcode").addCDATA(formatString("" + asteriskSipUser.getUseclientcode()));
astuserElem.addElement("username").addCDATA(formatString("" + asteriskSipUser.getUsername()));
astuserElem.addElement("usereqphone").addCDATA(formatString("" + asteriskSipUser.getUsereqphone()));
astuserElem.addElement("videosupport").addCDATA(formatString("" + asteriskSipUser.getVideosupport()));
astuserElem.addElement("vmexten").addCDATA(formatString("" + asteriskSipUser.getVmexten()));
}
return document;
}
private Document createExtensionsDocument(List<Extensions> extensions) {
Document document = getDocument();
Element root = document.addElement("root");
Element extensionsElem = root.addElement("extensions");
for (Extensions extension : extensions) {
Element extensionElem = extensionsElem.addElement("extension");
extensionElem.addElement("id").addCDATA(formatString("" + extension.getId()));
extensionElem.addElement("exten").addCDATA(formatString("" + extension.getExten()));
extensionElem.addElement("priority").addCDATA(formatString("" + extension.getPriority()));
extensionElem.addElement("app").addCDATA(formatString("" + extension.getApp()));
extensionElem.addElement("appdata").addCDATA(formatString("" + extension.getAppdata()));
}
return document;
}
private Document createMembersDocument(List<MeetMe> members) {
Document document = getDocument();
Element root = document.addElement("root");
Element membersElem = root.addElement("members");
for (MeetMe member : members) {
Element memberElem = membersElem.addElement("member");
memberElem.addElement("confno").addCDATA(formatString("" + member.getConfno()));
memberElem.addElement("pin").addCDATA(formatString("" + member.getPin()));
memberElem.addElement("adminpin").addCDATA(formatString("" + member.getAdminpin()));
memberElem.addElement("members").addCDATA(formatString("" + member.getMembers()));
}
return document;
}
public void serializetoXML(OutputStream out, String aEncodingScheme,
Document doc) throws Exception {
OutputFormat outformat = OutputFormat.createPrettyPrint();
outformat.setXHTML(true);
outformat.setEncoding(aEncodingScheme);
XMLWriter writer = new XMLWriter(out, outformat);
writer.write(doc);
writer.flush();
writer.close();
out.close();
}
}