Java tutorial
/* * 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.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.openmeetings.app.OpenmeetingsVariables; import org.openmeetings.app.data.basic.Configurationmanagement; import org.openmeetings.app.data.basic.dao.LdapConfigDaoImpl; import org.openmeetings.app.data.basic.dao.OmTimeZoneDaoImpl; import org.openmeetings.app.data.calendar.daos.AppointmentCategoryDaoImpl; import org.openmeetings.app.data.calendar.daos.AppointmentDaoImpl; import org.openmeetings.app.data.calendar.daos.AppointmentReminderTypDaoImpl; 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.Statemanagement; 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.adresses.States; import org.openmeetings.app.persistence.beans.basic.Configuration; import org.openmeetings.app.persistence.beans.basic.LdapConfig; import org.openmeetings.app.persistence.beans.basic.OmTimeZone; 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.UserSipData; import org.openmeetings.app.persistence.beans.user.Users; import org.openmeetings.app.remote.red5.ScopeApplicationAdapter; 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; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.multipart.MultipartFile; @Controller public class BackupImportController extends AbstractUploadController { private static final Logger log = Red5LoggerFactory.getLogger(BackupImportController.class, OpenmeetingsVariables.webAppRootKey); @Autowired private AppointmentDaoImpl appointmentDao; @Autowired private Statemanagement statemanagement; @Autowired private OmTimeZoneDaoImpl omTimeZoneDaoImpl; @Autowired private Organisationmanagement organisationmanagement; @Autowired private Roommanagement roommanagement; @Autowired private AppointmentCategoryDaoImpl appointmentCategoryDaoImpl; @Autowired private AppointmentReminderTypDaoImpl appointmentReminderTypDaoImpl; @Autowired private UsersDaoImpl usersDao; @Autowired private FlvRecordingDaoImpl flvRecordingDao; @Autowired private FlvRecordingMetaDataDaoImpl flvRecordingMetaDataDao; @Autowired private PrivateMessageFolderDaoImpl privateMessageFolderDao; @Autowired private PrivateMessagesDaoImpl privateMessagesDao; @Autowired private MeetingMemberDaoImpl meetingMemberDao; @Autowired private LdapConfigDaoImpl ldapConfigDao; @Autowired private RoomModeratorsDaoImpl roomModeratorsDao; @Autowired private FileExplorerItemDaoImpl fileExplorerItemDao; @Autowired private UserContactsDaoImpl userContactsDao; @Autowired private ScopeApplicationAdapter scopeApplicationAdapter; @Autowired private PollManagement pollManagement; @Autowired private Configurationmanagement cfgManagement; @Autowired private AsteriskDAOImpl asteriskDAOImpl; private final HashMap<Long, Long> usersMap = new HashMap<Long, Long>(); private final HashMap<Long, Long> organisationsMap = new HashMap<Long, Long>(); private final HashMap<Long, Long> appointmentsMap = new HashMap<Long, Long>(); private final HashMap<Long, Long> roomsMap = new HashMap<Long, Long>(); private final HashMap<Long, Long> messageFoldersMap = new HashMap<Long, Long>(); private final HashMap<Long, Long> userContactsMap = new HashMap<Long, Long>(); private final HashMap<Long, Long> fileExplorerItemsMap = new HashMap<Long, Long>(); private enum Maps { USERS, ORGANISATIONS, APPOINTMENTS, ROOMS, MESSAGEFOLDERS, USERCONTACTS, FILEEXPLORERITEMS }; public void performImport(InputStream is, String current_dir) throws Exception { File working_dir = new File(current_dir, OpenmeetingsVariables.UPLOAD_DIR + File.separatorChar + "import"); if (!working_dir.exists()) { working_dir.mkdir(); } File f = new File(working_dir, "import_" + CalendarPatterns.getTimeForStreamId(new Date())); int recursiveNumber = 0; do { if (f.exists()) { f = new File(f.getAbsolutePath() + (recursiveNumber++)); } } while (f.exists()); f.mkdir(); log.debug("##### WRITE FILE TO: " + f); ZipInputStream zipinputstream = new ZipInputStream(is); byte[] buf = new byte[1024]; ZipEntry zipentry = zipinputstream.getNextEntry(); while (zipentry != null) { // for each entry to be extracted int n; FileOutputStream fileoutputstream; File fentryName = new File(f, zipentry.getName()); if (zipentry.isDirectory()) { if (!fentryName.mkdir()) { break; } zipentry = zipinputstream.getNextEntry(); continue; } File fparent = new File(fentryName.getParent()); if (!fparent.exists()) { File fparentparent = new File(fparent.getParent()); if (!fparentparent.exists()) { File fparentparentparent = new File(fparentparent.getParent()); if (!fparentparentparent.exists()) { fparentparentparent.mkdir(); fparentparent.mkdir(); fparent.mkdir(); } else { fparentparent.mkdir(); fparent.mkdir(); } } else { fparent.mkdir(); } } fileoutputstream = new FileOutputStream(fentryName); while ((n = zipinputstream.read(buf, 0, 1024)) > -1) { fileoutputstream.write(buf, 0, n); } fileoutputstream.close(); zipinputstream.closeEntry(); zipentry = zipinputstream.getNextEntry(); } // while zipinputstream.close(); /* * ##################### Import Organizations */ File orgFile = new File(f, "organizations.xml"); if (!orgFile.exists()) { throw new Exception("organizations.xml missing"); } this.importOrganizsations(orgFile); log.info("Organizations import complete, starting user import"); /* * ##################### Import Users */ File userFile = new File(f, "users.xml"); if (!userFile.exists()) { throw new Exception("users.xml missing"); } this.importUsers(userFile); log.info("Users import complete, starting room import"); /* * ##################### Import Rooms */ File roomFile = new File(f, "rooms.xml"); if (!roomFile.exists()) { throw new Exception("rooms.xml missing"); } this.importRooms(roomFile); log.info("Room import complete, starting room organizations import"); /* * ##################### Import Room Organisations */ File orgRoomListFile = new File(f, "rooms_organisation.xml"); if (!orgRoomListFile.exists()) { throw new Exception("rooms_organisation.xml missing"); } this.importOrgRooms(orgRoomListFile); log.info("Room organizations import complete, starting appointement import"); /* * ##################### Import Appointements */ File appointementListFile = new File(f, "appointements.xml"); if (!appointementListFile.exists()) { throw new Exception("appointements.xml missing"); } this.importAppointements(appointementListFile); log.info("Appointement import complete, starting meeting members import"); /* * ##################### Import MeetingMembers * * Reminder Invitations will be NOT send! */ File meetingmembersListFile = new File(f, "meetingmembers.xml"); if (!meetingmembersListFile.exists()) { throw new Exception("meetingmembersListFile missing"); } this.importMeetingmembers(meetingmembersListFile); log.info("Meeting members import complete, starting ldap config import"); /* * ##################### Import LDAP Configs */ File ldapConfigListFile = new File(f, "ldapconfigs.xml"); if (!ldapConfigListFile.exists()) { log.debug("meetingmembersListFile missing"); // throw new Exception // ("meetingmembersListFile missing"); } else { this.importLdapConfig(ldapConfigListFile); } log.info("Ldap config import complete, starting recordings import"); /* * ##################### Import Recordings */ File flvRecordingsListFile = new File(f, "flvRecordings.xml"); if (!flvRecordingsListFile.exists()) { log.debug("flvRecordingsListFile missing"); // throw new Exception // ("meetingmembersListFile missing"); } else { this.importFlvRecordings(flvRecordingsListFile); } log.info("FLVrecording import complete, starting private message folder import"); /* * ##################### Import Private Message Folders */ File privateMessageFoldersFile = new File(f, "privateMessageFolder.xml"); if (!privateMessageFoldersFile.exists()) { log.debug("privateMessageFoldersFile missing"); // throw new Exception // ("meetingmembersListFile missing"); } else { this.importPrivateMessageFolders(privateMessageFoldersFile); } log.info("Private message folder import complete, starting private message import"); /* * ##################### Import Private Messages */ File privateMessagesFile = new File(f, "privateMessages.xml"); if (!privateMessagesFile.exists()) { log.debug("privateMessagesFile missing"); // throw new Exception // ("meetingmembersListFile missing"); } else { this.importPrivateMessages(privateMessagesFile); } log.info("Private message import complete, starting usercontact import"); /* * ##################### Import User Contacts */ File userContactsFile = new File(f, "userContacts.xml"); if (!userContactsFile.exists()) { log.debug("userContactsFile missing"); // throw new Exception // ("meetingmembersListFile missing"); } else { this.importUserContacts(userContactsFile); } log.info("Usercontact import complete, starting file explorer item import"); /* * ##################### Import File-Explorer Items */ File fileExplorerListFile = new File(f, "fileExplorerItems.xml"); if (!fileExplorerListFile.exists()) { log.debug("fileExplorerListFile missing"); // throw new Exception // ("meetingmembersListFile missing"); } else { this.importFileExplorerItems(fileExplorerListFile); } log.info("File explorer item import complete, starting file poll import"); /* * ##################### Import Room Polls */ File roomPollListFile = new File(f, "roompolls.xml"); if (!roomPollListFile.exists()) { log.debug("roomPollListFile missing"); } else { this.importRoomPolls(roomPollListFile); } log.info("Poll import complete, starting configs import"); /* * ##################### Import Configs */ File configsFile = new File(f, "configs.xml"); if (!configsFile.exists()) { log.debug("configsFile missing"); } else { importConfigs(configsFile); } log.info("Configs import complete, starting asteriskSipUsersFile import"); /* * ##################### Import AsteriskSipUsers */ File asteriskSipUsersFile = new File(f, "asterisksipusers.xml"); if (!asteriskSipUsersFile.exists()) { log.debug("asteriskSipUsersFile missing"); } else { importAsteriskSipUsers(asteriskSipUsersFile); } log.info("AsteriskSipUsers import complete, starting extensions import"); /* * ##################### Import Extensions */ File extensionsFile = new File(f, "extensions.xml"); if (!extensionsFile.exists()) { log.debug("extensionsFile missing"); } else { importExtensions(extensionsFile); } log.info("Extensions import complete, starting members import"); /* * ##################### Import Extensions */ File membersFile = new File(f, "members.xml"); if (!membersFile.exists()) { log.debug("membersFile missing"); } else { importMembers(membersFile); } log.info("Members import complete, starting copy of files and folders"); /* * ##################### Import real files and folders */ importFolders(current_dir, f); log.info("File explorer item import complete, clearing temp files"); deleteDirectory(f); } @RequestMapping(value = "/backup.upload", method = RequestMethod.POST) public void service(HttpServletRequest request, HttpServletResponse httpServletResponse) throws ServletException, IOException { UploadInfo info = validate(request, true); try { String current_dir = context.getRealPath("/"); MultipartFile multipartFile = info.file; InputStream is = multipartFile.getInputStream(); performImport(is, current_dir); LinkedHashMap<String, Object> hs = new LinkedHashMap<String, Object>(); hs.put("user", usersDao.getUser(info.userId)); hs.put("message", "library"); hs.put("action", "import"); hs.put("error", ""); hs.put("fileName", info.filename); scopeApplicationAdapter.sendMessageWithClientByPublicSID(hs, info.publicSID); } catch (Exception e) { log.error("[ImportExport]", e); e.printStackTrace(); throw new ServletException(e); } return; } private void importRoomPolls(File roomPollListFile) { try { List<RoomPoll> roomPolls = this.getRoomPolls(roomPollListFile); for (RoomPoll roomPoll : roomPolls) { pollManagement.savePollBackup(roomPoll); } } catch (Exception err) { log.error("[getRoomPolls]", err); } } private void importMembers(File membersFile) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(membersFile); Element root = document.getRootElement(); Element extensions = root.element("members"); for (@SuppressWarnings("unchecked") Iterator<Element> iter = extensions.elementIterator("member"); iter.hasNext();) { Element extensionElem = iter.next(); String confno = extensionElem.elementText("confno"); try { MeetMe meetMe = new MeetMe(); meetMe.setConfno(unformatString(extensionElem.element("confno").getText())); meetMe.setPin(unformatString(extensionElem.element("pin").getText())); meetMe.setAdminpin(unformatString(extensionElem.element("adminpin").getText())); meetMe.setMembers(importIntegerType(unformatString(extensionElem.element("members").getText()))); asteriskDAOImpl.saveMeetMe(meetMe); } catch (Exception e) { log.debug("failed to add/update members confno: " + confno, e); } } } private void importExtensions(File extensionsFile) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(extensionsFile); Element root = document.getRootElement(); Element extensions = root.element("extensions"); for (@SuppressWarnings("unchecked") Iterator<Element> iter = extensions.elementIterator("extension"); iter.hasNext();) { Element extensionElem = iter.next(); String id = extensionElem.elementText("id"); try { Extensions extension = new Extensions(); //the primary key must be null for new objects if its an auto-increment extension.setExten(unformatString(extensionElem.element("exten").getText())); extension.setPriority( importIntegerType(unformatString(extensionElem.element("priority").getText()))); extension.setApp(unformatString(extensionElem.element("app").getText())); extension.setAppdata(unformatString(extensionElem.element("appdata").getText())); asteriskDAOImpl.saveExtensions(extension); } catch (Exception e) { log.debug("failed to add/update extensions id: " + id, e); } } } private void importAsteriskSipUsers(File asteriskSipUsersFile) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(asteriskSipUsersFile); Element root = document.getRootElement(); Element asterisksipusers = root.element("asterisksipusers"); for (@SuppressWarnings("unchecked") Iterator<Element> iter = asterisksipusers.elementIterator("asterisksipuser"); iter.hasNext();) { Element asterisksipuserElem = iter.next(); String id = asterisksipuserElem.elementText("id"); try { AsteriskSipUsers asterisksipuser = new AsteriskSipUsers(); //the primary key must be null for new objects if its an auto-increment asterisksipuser .setAccountcode(unformatString(asterisksipuserElem.element("accountcode").getText())); asterisksipuser.setDisallow(unformatString(asterisksipuserElem.element("disallow").getText())); asterisksipuser.setAllow(unformatString(asterisksipuserElem.element("allow").getText())); asterisksipuser .setAllowoverlap(unformatString(asterisksipuserElem.element("allowoverlap").getText())); asterisksipuser .setAllowsubscribe(unformatString(asterisksipuserElem.element("allowsubscribe").getText())); asterisksipuser .setAllowtransfer(unformatString(asterisksipuserElem.element("allowtransfer").getText())); asterisksipuser.setAmaflags(unformatString(asterisksipuserElem.element("amaflags").getText())); asterisksipuser .setAutoframing(unformatString(asterisksipuserElem.element("autoframing").getText())); asterisksipuser.setAuth(unformatString(asterisksipuserElem.element("auth").getText())); asterisksipuser.setBuggymwi(unformatString(asterisksipuserElem.element("buggymwi").getText())); asterisksipuser.setCallgroup(unformatString(asterisksipuserElem.element("callgroup").getText())); asterisksipuser.setCallerid(unformatString(asterisksipuserElem.element("callerid").getText())); asterisksipuser.setCid_number(unformatString(asterisksipuserElem.element("cid_number").getText())); asterisksipuser.setFullname(unformatString(asterisksipuserElem.element("fullname").getText())); asterisksipuser .setCallingpres(unformatString(asterisksipuserElem.element("callingpres").getText())); asterisksipuser .setCanreinvite(unformatString(asterisksipuserElem.element("canreinvite").getText())); asterisksipuser.setContext(unformatString(asterisksipuserElem.element("context").getText())); asterisksipuser.setDefaultip(unformatString(asterisksipuserElem.element("defaultip").getText())); asterisksipuser.setDtmfmode(unformatString(asterisksipuserElem.element("dtmfmode").getText())); asterisksipuser.setFromuser(unformatString(asterisksipuserElem.element("fromuser").getText())); asterisksipuser.setFromdomain(unformatString(asterisksipuserElem.element("fromdomain").getText())); asterisksipuser .setFullcontact(unformatString(asterisksipuserElem.element("fullcontact").getText())); asterisksipuser.setG726nonstandard( unformatString(asterisksipuserElem.element("g726nonstandard").getText())); asterisksipuser.setHost(unformatString(asterisksipuserElem.element("host").getText())); asterisksipuser.setInsecure(unformatString(asterisksipuserElem.element("insecure").getText())); asterisksipuser.setIpaddr(unformatString(asterisksipuserElem.element("ipaddr").getText())); asterisksipuser.setLanguage(unformatString(asterisksipuserElem.element("language").getText())); asterisksipuser.setLastms(unformatString(asterisksipuserElem.element("lastms").getText())); asterisksipuser.setMailbox(unformatString(asterisksipuserElem.element("mailbox").getText())); asterisksipuser.setMaxcallbitrate( importIntegerType(unformatString(asterisksipuserElem.element("maxcallbitrate").getText()))); asterisksipuser.setMohsuggest(unformatString(asterisksipuserElem.element("mohsuggest").getText())); asterisksipuser.setMd5secret(unformatString(asterisksipuserElem.element("md5secret").getText())); asterisksipuser .setMusiconhold(unformatString(asterisksipuserElem.element("musiconhold").getText())); asterisksipuser.setName(unformatString(asterisksipuserElem.element("name").getText())); asterisksipuser.setNat(unformatString(asterisksipuserElem.element("nat").getText())); asterisksipuser .setOutboundproxy(unformatString(asterisksipuserElem.element("outboundproxy").getText())); asterisksipuser.setDeny(unformatString(asterisksipuserElem.element("deny").getText())); asterisksipuser.setPermit(unformatString(asterisksipuserElem.element("permit").getText())); asterisksipuser .setPickupgroup(unformatString(asterisksipuserElem.element("pickupgroup").getText())); asterisksipuser.setPort(unformatString(asterisksipuserElem.element("port").getText())); asterisksipuser .setProgressinband(unformatString(asterisksipuserElem.element("progressinband").getText())); asterisksipuser .setPromiscredir(unformatString(asterisksipuserElem.element("promiscredir").getText())); asterisksipuser.setQualify(unformatString(asterisksipuserElem.element("qualify").getText())); asterisksipuser.setRegexten(unformatString(asterisksipuserElem.element("regexten").getText())); asterisksipuser.setRegseconds( importIntegerType(unformatString(asterisksipuserElem.element("regseconds").getText()))); asterisksipuser.setRfc2833compensate( unformatString(asterisksipuserElem.element("rfc2833compensate").getText())); asterisksipuser.setRtptimeout(unformatString(asterisksipuserElem.element("rtptimeout").getText())); asterisksipuser .setRtpholdtimeout(unformatString(asterisksipuserElem.element("rtpholdtimeout").getText())); asterisksipuser.setSecret(unformatString(asterisksipuserElem.element("secret").getText())); asterisksipuser.setSendrpid(unformatString(asterisksipuserElem.element("sendrpid").getText())); asterisksipuser.setSetvar(unformatString(asterisksipuserElem.element("setvar").getText())); asterisksipuser.setSubscribecontext( unformatString(asterisksipuserElem.element("subscribecontext").getText())); asterisksipuser .setSubscribemwi(unformatString(asterisksipuserElem.element("subscribemwi").getText())); asterisksipuser .setT38pt_udptl(unformatString(asterisksipuserElem.element("t38pt_udptl").getText())); asterisksipuser.setTrustrpid(unformatString(asterisksipuserElem.element("trustrpid").getText())); asterisksipuser.setType(unformatString(asterisksipuserElem.element("type").getText())); asterisksipuser .setUseclientcode(unformatString(asterisksipuserElem.element("useclientcode").getText())); asterisksipuser.setUsername(unformatString(asterisksipuserElem.element("username").getText())); asterisksipuser .setUsereqphone(unformatString(asterisksipuserElem.element("usereqphone").getText())); asterisksipuser .setVideosupport(unformatString(asterisksipuserElem.element("videosupport").getText())); asterisksipuser.setVmexten(unformatString(asterisksipuserElem.element("vmexten").getText())); asteriskDAOImpl.saveAsteriskSipUsers(asterisksipuser); } catch (Exception e) { log.debug("failed to add/update asterisksipuser id: " + id, e); } } } private void importConfigs(File configsFile) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(configsFile); Element root = document.getRootElement(); Element configs = root.element("configs"); for (@SuppressWarnings("unchecked") Iterator<Element> iter = configs.elementIterator("config"); iter.hasNext();) { Element cfgElem = iter.next(); String key = cfgElem.elementText("key"); try { Configuration cfg = cfgManagement.getConfKey(3L, key); if (cfg == null) { cfg = new Configuration(); cfg.setConf_key(key); } cfg.setConf_value(cfgElem.elementText("value")); cfg.setUpdatetime(new Date()); cfg.setDeleted(cfgElem.elementText("deleted")); cfg.setComment(cfgElem.elementText("comment")); cfgManagement.updateConfig(cfg); } catch (Exception e) { log.debug("failed to add/update configuration: " + key, e); } } } @SuppressWarnings("unchecked") private List<RoomPoll> getRoomPolls(File roomPollListFile) throws Exception { List<RoomPoll> roomPollList = new LinkedList<RoomPoll>(); SAXReader reader = new SAXReader(); Document document = reader.read(roomPollListFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("roompolls")) { for (Iterator<Element> innerIter = itemObject.elementIterator("roompoll"); innerIter.hasNext();) { Element roompollObject = innerIter.next(); String pollname = unformatString(roompollObject.element("pollname").getText()); String pollquestion = unformatString(roompollObject.element("pollquestion").getText()); Boolean archived = importBooleanType( unformatString(roompollObject.element("archived").getText())); Date created = CalendarPatterns .parseImportDate(unformatString(roompollObject.element("created").getText())); Long createdbyuserid = importLongType( unformatString(roompollObject.element("createdbyuserid").getText())); Long polltypeid = importLongType( unformatString(roompollObject.element("polltypeid").getText())); Long roomid = importLongType(unformatString(roompollObject.element("roomid").getText())); RoomPoll roomPoll = new RoomPoll(); roomPoll.setPollName(pollname); roomPoll.setPollQuestion(pollquestion); if (archived != null) { roomPoll.setArchived(archived.booleanValue()); } else { roomPoll.setArchived(true); } roomPoll.setCreated(created); roomPoll.setCreatedBy(usersDao.getUser(getNewId(createdbyuserid, Maps.USERS))); roomPoll.setPollType(pollManagement.getPollType(polltypeid)); roomPoll.setRoom(roommanagement.getRoomById(getNewId(roomid, Maps.ROOMS))); roomPoll.setRoomPollAnswerList(new LinkedList<RoomPollAnswers>()); Element roompollanswers = roompollObject.element("roompollanswers"); for (Iterator<Element> innerIterAnswers = roompollanswers .elementIterator("roompollanswer"); innerIterAnswers.hasNext();) { Element innerIterAnswerObj = innerIterAnswers.next(); Integer pointlist = importIntegerType( unformatString(innerIterAnswerObj.element("pointlist").getText())); Boolean answer = importBooleanType( unformatString(innerIterAnswerObj.element("answer").getText())); Date votedate = CalendarPatterns .parseImportDate(unformatString(innerIterAnswerObj.element("votedate").getText())); Long voteduserid = importLongType( unformatString(innerIterAnswerObj.element("voteduserid").getText())); RoomPollAnswers roomPollAnswers = new RoomPollAnswers(); roomPollAnswers.setPointList(pointlist); roomPollAnswers.setAnswer(answer); roomPollAnswers.setVoteDate(votedate); roomPollAnswers.setVotedUser(usersDao.getUser(getNewId(voteduserid, Maps.USERS))); roomPoll.getRoomPollAnswerList().add(roomPollAnswers); } roomPollList.add(roomPoll); } } } return roomPollList; } 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 copyFile(File sourceLocation, File targetLocation) throws IOException { 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 boolean deleteDirectory(File path) throws IOException { 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(); } } } return (path.delete()); } private void importUsers(File userFile) throws Exception { this.getUsersByXML(userFile); } @SuppressWarnings("unchecked") private void getUsersByXML(File userFile) { try { SAXReader reader = new SAXReader(); Document document = reader.read(userFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("users")) { for (Iterator<Element> innerIter = itemObject.elementIterator("user"); innerIter.hasNext();) { Element itemUsers = innerIter.next(); Users us = new Users(); Long userId = Long.valueOf(unformatString(itemUsers.element("user_id").getText())); us.setAge(CalendarPatterns .parseImportDate(unformatString(itemUsers.element("age").getText()))); us.setAvailible( importIntegerType(unformatString(itemUsers.element("availible").getText()))); us.setDeleted(unformatString(itemUsers.element("deleted").getText())); us.setFirstname(unformatString(itemUsers.element("firstname").getText())); us.setLastname(unformatString(itemUsers.element("lastname").getText())); us.setLogin(unformatString(itemUsers.element("login").getText())); us.setPassword(unformatString(itemUsers.element("pass").getText())); us.setDeleted(itemUsers.element("deleted").getText()); if (itemUsers.element("activatehash") != null) { us.setActivatehash(unformatString(itemUsers.element("activatehash").getText())); } else { us.setActivatehash(""); } if (itemUsers.element("externalUserType") != null) { us.setExternalUserType(unformatString(itemUsers.element("externalUserType").getText())); } else { us.setExternalUserType(""); } if (itemUsers.element("externalUserId") != null) { us.setExternalUserId(unformatString(itemUsers.element("externalUserId").getText())); } else { us.setExternalUserId(null); } if (itemUsers.element("resethash") != null) { us.setResethash(unformatString(itemUsers.element("resethash").getText())); } else { us.setResethash(null); } if (itemUsers.element("userOffers") != null) { us.setUserOffers(unformatString(itemUsers.element("userOffers").getText())); } else { us.setUserOffers(""); } if (itemUsers.element("userSearchs") != null) { us.setUserSearchs(unformatString(itemUsers.element("userSearchs").getText())); } else { us.setUserSearchs(""); } if (itemUsers.element("forceTimeZoneCheck") != null) { us.setForceTimeZoneCheck(importBooleanType( unformatString(itemUsers.element("forceTimeZoneCheck").getText()))); } else { us.setForceTimeZoneCheck(null); } if (itemUsers.element("lasttrans") != null) { us.setLasttrans( importLongType(unformatString(itemUsers.element("lasttrans").getText()))); } else { us.setLasttrans(null); } if (itemUsers.element("showContactData") != null) { us.setShowContactData(importBooleanType( unformatString(itemUsers.element("showContactData").getText()))); } else { us.setShowContactData(null); } if (itemUsers.element("showContactDataToContacts") != null) { us.setShowContactDataToContacts(importBooleanType( unformatString(itemUsers.element("showContactDataToContacts").getText()))); } else { us.setShowContactDataToContacts(null); } us.setPictureuri(unformatString(itemUsers.element("pictureuri").getText())); if (unformatString(itemUsers.element("language_id").getText()).length() > 0) us.setLanguage_id( Long.valueOf(unformatString(itemUsers.element("language_id").getText()))); us.setStatus(importIntegerType(unformatString(itemUsers.element("status").getText()))); us.setRegdate(CalendarPatterns .parseImportDate(unformatString(itemUsers.element("regdate").getText()))); us.setTitle_id(importIntegerType(unformatString(itemUsers.element("title_id").getText()))); us.setLevel_id(importLongType(unformatString(itemUsers.element("level_id").getText()))); // UserSIP Data if (itemUsers.element("sip_username") != null && itemUsers.element("sip_userpass") != null && itemUsers.element("sip_authid") != null) { UserSipData userSipData = new UserSipData(); userSipData.setUsername(unformatString(itemUsers.element("sip_username").getText())); userSipData.setUsername(unformatString(itemUsers.element("sip_userpass").getText())); userSipData.setUsername(unformatString(itemUsers.element("sip_authid").getText())); us.setUserSipData(userSipData); } String additionalname = unformatString(itemUsers.element("additionalname").getText()); String comment = unformatString(itemUsers.element("comment").getText()); // 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 String fax = unformatString(itemUsers.element("fax").getText()); Long state_id = importLongType(unformatString(itemUsers.element("state_id").getText())); String street = unformatString(itemUsers.element("street").getText()); String town = unformatString(itemUsers.element("town").getText()); String zip = unformatString(itemUsers.element("zip").getText()); if (itemUsers.element("omTimeZone") != null) { OmTimeZone omTimeZone = omTimeZoneDaoImpl .getOmTimeZone(unformatString(itemUsers.element("omTimeZone").getText())); us.setOmTimeZone(omTimeZone); us.setForceTimeZoneCheck(false); } else { String jNameTimeZone = cfgManagement.getConfValue("default.timezone", String.class, "Europe/Berlin"); OmTimeZone omTimeZone = omTimeZoneDaoImpl.getOmTimeZone(jNameTimeZone); us.setOmTimeZone(omTimeZone); us.setForceTimeZoneCheck(true); } String phone = ""; if (itemUsers.element("phone") != null) { phone = unformatString(itemUsers.element("phone").getText()); } String email = ""; if (itemUsers.element("mail") != null) { email = unformatString(itemUsers.element("mail").getText()); } States st = statemanagement.getStateById(state_id); if (st == null) { st = statemanagement.getStateById(1L); } us.setAdresses(street, zip, town, st, additionalname, comment, fax, phone, email); HashSet<Organisation_Users> orgUsers = new HashSet<Organisation_Users>(); for (Iterator<Element> organisationsIterator = itemUsers .elementIterator("organisations"); organisationsIterator.hasNext();) { Element organisations = organisationsIterator.next(); for (Iterator<Element> organisationIterator = organisations .elementIterator("user_organisation"); organisationIterator.hasNext();) { Element organisationObject = organisationIterator.next(); Long organisation_id = getNewId( importLongType(unformatString( organisationObject.element("organisation_id").getText())), Maps.ORGANISATIONS); Boolean isModerator = importBooleanType( unformatString(organisationObject.element("isModerator").getText())); String deleted = unformatString(organisationObject.element("deleted").getText()); Organisation_Users orgUser = new Organisation_Users(); orgUser.setOrganisation( organisationmanagement.getOrganisationByIdBackup(organisation_id)); orgUser.setIsModerator(isModerator); orgUser.setStarttime(new Date()); orgUser.setDeleted(deleted); orgUsers.add(orgUser); } } log.debug("Import User ID " + userId); us.setStarttime(new Date()); Long actualNewUserId = userManagement.addUserBackup(us); usersMap.put(userId, actualNewUserId); for (Iterator<Organisation_Users> orgUserIterator = orgUsers.iterator(); orgUserIterator .hasNext();) { Organisation_Users organisationUsers = orgUserIterator.next(); organisationmanagement.addOrganisationUserObj(actualNewUserId, organisationUsers); } } } } } catch (Exception err) { log.error("[getUsersByXML]", err); } } private void importFlvRecordings(File flvRecordingsListFile) throws Exception { List<FlvRecording> flvRecordings = this.getFlvRecordings(flvRecordingsListFile); for (FlvRecording flvRecording : flvRecordings) { Long flvRecordingId = flvRecordingDao.addFlvRecordingObj(flvRecording); for (FlvRecordingMetaData flvRecordingMetaData : flvRecording.getFlvRecordingMetaData()) { FlvRecording flvRecordingSaved = flvRecordingDao.getFlvRecordingById(flvRecordingId); flvRecordingMetaData.setFlvRecording(flvRecordingSaved); flvRecordingMetaDataDao.addFlvRecordingMetaDataObj(flvRecordingMetaData); } } } @SuppressWarnings("unchecked") private List<FlvRecording> getFlvRecordings(File flvRecordingsListFile) { try { List<FlvRecording> flvList = new LinkedList<FlvRecording>(); SAXReader reader = new SAXReader(); Document document = reader.read(flvRecordingsListFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("flvrecordings")) { for (Iterator<Element> innerIter = itemObject.elementIterator("flvrecording"); innerIter .hasNext();) { Element flvObject = innerIter.next(); String alternateDownload = unformatString(flvObject.element("alternateDownload").getText()); String comment = unformatString(flvObject.element("comment").getText()); String deleted = unformatString(flvObject.element("deleted").getText()); String fileHash = unformatString(flvObject.element("fileHash").getText()); String fileName = unformatString(flvObject.element("fileName").getText()); String previewImage = unformatString(flvObject.element("previewImage").getText()); String recorderStreamId = unformatString(flvObject.element("recorderStreamId").getText()); Long fileSize = importLongType(unformatString(flvObject.element("fileSize").getText())); Integer flvHeight = importIntegerType( unformatString(flvObject.element("flvHeight").getText())); Integer flvWidth = importIntegerType( unformatString(flvObject.element("flvWidth").getText())); Integer height = importIntegerType(unformatString(flvObject.element("height").getText())); Integer width = importIntegerType(unformatString(flvObject.element("width").getText())); Long insertedBy = getNewId( importLongType(unformatString(flvObject.element("insertedBy").getText())), Maps.USERS); Long organization_id = getNewId( importLongType(unformatString(flvObject.element("organization_id").getText())), Maps.ORGANISATIONS); Long ownerId = getNewId( importLongType(unformatString(flvObject.element("ownerId").getText())), Maps.USERS); Long parentFileExplorerItemId = getNewId( importLongType( unformatString(flvObject.element("parentFileExplorerItemId").getText())), Maps.FILEEXPLORERITEMS); Integer progressPostProcessing = importIntegerType( unformatString(flvObject.element("progressPostProcessing").getText())); Long room_id = getNewId( importLongType(unformatString(flvObject.element("room_id").getText())), Maps.ROOMS); Date inserted = CalendarPatterns .parseImportDate(unformatString(flvObject.element("inserted").getText())); Boolean isFolder = importBooleanType( unformatString(flvObject.element("isFolder").getText())); Boolean isImage = importBooleanType(unformatString(flvObject.element("isImage").getText())); Boolean isInterview = importBooleanType( unformatString(flvObject.element("isInterview").getText())); Boolean isPresentation = importBooleanType( unformatString(flvObject.element("isPresentation").getText())); Boolean isRecording = importBooleanType( unformatString(flvObject.element("isRecording").getText())); Date recordEnd = CalendarPatterns .parseImportDate(unformatString(flvObject.element("recordEnd").getText())); Date recordStart = CalendarPatterns .parseImportDate(unformatString(flvObject.element("recordStart").getText())); FlvRecording flvRecording = new FlvRecording(); flvRecording.setAlternateDownload(alternateDownload); flvRecording.setComment(comment); flvRecording.setFileHash(fileHash); flvRecording.setFileName(fileName); flvRecording.setPreviewImage(previewImage); flvRecording.setRecorderStreamId(recorderStreamId); flvRecording.setFileSize(fileSize); flvRecording.setFlvHeight(flvHeight); flvRecording.setFlvWidth(flvWidth); flvRecording.setHeight(height); flvRecording.setWidth(width); flvRecording.setInsertedBy(insertedBy); flvRecording.setOrganization_id(organization_id); flvRecording.setOwnerId(ownerId); flvRecording.setParentFileExplorerItemId(parentFileExplorerItemId); flvRecording.setProgressPostProcessing(progressPostProcessing); flvRecording.setRoom_id(room_id); flvRecording.setInserted(inserted); flvRecording.setIsFolder(isFolder); flvRecording.setIsImage(isImage); flvRecording.setIsInterview(isInterview); flvRecording.setIsPresentation(isPresentation); flvRecording.setIsRecording(isRecording); flvRecording.setRecordEnd(recordEnd); flvRecording.setRecordStart(recordStart); flvRecording.setDeleted(deleted); flvRecording.setFlvRecordingMetaData(new LinkedList<FlvRecordingMetaData>()); Element flvrecordingmetadatas = flvObject.element("flvrecordingmetadatas"); for (Iterator<Element> innerIterMetas = flvrecordingmetadatas .elementIterator("flvrecordingmetadata"); innerIterMetas.hasNext();) { Element flvrecordingmetadataObj = innerIterMetas.next(); String freeTextUserName = unformatString( flvrecordingmetadataObj.element("freeTextUserName").getText()); String fullWavAudioData = unformatString( flvrecordingmetadataObj.element("fullWavAudioData").getText()); String streamName = unformatString( flvrecordingmetadataObj.element("streamName").getText()); String wavAudioData = unformatString( flvrecordingmetadataObj.element("wavAudioData").getText()); Integer initialGapSeconds = importIntegerType( unformatString(flvrecordingmetadataObj.element("initialGapSeconds").getText())); Long insertedBy1 = importLongType( unformatString(flvrecordingmetadataObj.element("insertedBy").getText())); Integer interiewPodId = importIntegerType( unformatString(flvrecordingmetadataObj.element("interiewPodId").getText())); Boolean audioIsValid = importBooleanType( unformatString(flvrecordingmetadataObj.element("audioIsValid").getText())); Date inserted1 = CalendarPatterns.parseImportDate( unformatString(flvrecordingmetadataObj.element("inserted").getText())); Boolean isAudioOnly = importBooleanType( unformatString(flvrecordingmetadataObj.element("isAudioOnly").getText())); Boolean isScreenData = importBooleanType( unformatString(flvrecordingmetadataObj.element("isScreenData").getText())); Boolean isVideoOnly = importBooleanType( unformatString(flvrecordingmetadataObj.element("isVideoOnly").getText())); Date recordEnd1 = CalendarPatterns.parseImportDate( unformatString(flvrecordingmetadataObj.element("recordEnd").getText())); Date recordStart1 = CalendarPatterns.parseImportDate( unformatString(flvrecordingmetadataObj.element("recordStart").getText())); Date updated = CalendarPatterns.parseImportDate( unformatString(flvrecordingmetadataObj.element("updated").getText())); FlvRecordingMetaData flvrecordingmetadata = new FlvRecordingMetaData(); flvrecordingmetadata.setFreeTextUserName(freeTextUserName); flvrecordingmetadata.setFullWavAudioData(fullWavAudioData); flvrecordingmetadata.setStreamName(streamName); flvrecordingmetadata.setWavAudioData(wavAudioData); flvrecordingmetadata.setInitialGapSeconds(initialGapSeconds); flvrecordingmetadata.setInsertedBy(insertedBy1); flvrecordingmetadata.setInteriewPodId(interiewPodId); flvrecordingmetadata.setAudioIsValid(audioIsValid); flvrecordingmetadata.setInserted(inserted1); flvrecordingmetadata.setIsAudioOnly(isAudioOnly); flvrecordingmetadata.setIsScreenData(isScreenData); flvrecordingmetadata.setIsVideoOnly(isVideoOnly); flvrecordingmetadata.setRecordEnd(recordEnd1); flvrecordingmetadata.setRecordStart(recordStart1); flvrecordingmetadata.setUpdated(updated); flvrecordingmetadata.setDeleted("false"); flvRecording.getFlvRecordingMetaData().add(flvrecordingmetadata); } flvList.add(flvRecording); } } } return flvList; } catch (Exception err) { log.error("[getFlvRecordings]", err); } return null; } private void importPrivateMessageFolders(File privateMessageFoldersFile) throws Exception { List<PrivateMessageFolder> privateMessageFolders = this .getPrivateMessageFoldersByXML(privateMessageFoldersFile); for (PrivateMessageFolder privateMessageFolder : privateMessageFolders) { Long folderId = privateMessageFolder.getPrivateMessageFolderId(); PrivateMessageFolder storedFolder = privateMessageFolderDao.getPrivateMessageFolderById(folderId); if (storedFolder == null) { privateMessageFolder.setPrivateMessageFolderId(0); Long newFolderId = privateMessageFolderDao.addPrivateMessageFolderObj(privateMessageFolder); messageFoldersMap.put(folderId, newFolderId); } } } @SuppressWarnings("unchecked") private List<PrivateMessageFolder> getPrivateMessageFoldersByXML(File privateMessageFoldersFile) { try { List<PrivateMessageFolder> pmfList = new LinkedList<PrivateMessageFolder>(); SAXReader reader = new SAXReader(); Document document = reader.read(privateMessageFoldersFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("privatemessagefolders")) { for (Iterator<Element> innerIter = itemObject.elementIterator("privatemessagefolder"); innerIter .hasNext();) { Element pmfObject = innerIter.next(); String folderName = unformatString(pmfObject.element("folderName").getText()); Long userId = getNewId( importLongType(unformatString(pmfObject.element("userId").getText())), Maps.USERS); Long privateMessageFolderId = importLongType( unformatString(pmfObject.element("privateMessageFolderId").getText())); PrivateMessageFolder privateMessageFolder = new PrivateMessageFolder(); privateMessageFolder.setFolderName(folderName); privateMessageFolder.setUserId(userId); privateMessageFolder.setPrivateMessageFolderId(privateMessageFolderId); pmfList.add(privateMessageFolder); } } } return pmfList; } catch (Exception err) { log.error("[getPrivateMessageFoldersByXML]", err); } return null; } private void importPrivateMessages(File privateMessagesFile) throws Exception { List<PrivateMessages> pmList = this.getPrivateMessagesByXML(privateMessagesFile); for (PrivateMessages pm : pmList) { privateMessagesDao.addPrivateMessageObj(pm); } } @SuppressWarnings("unchecked") private List<PrivateMessages> getPrivateMessagesByXML(File privateMessagesFile) { try { List<PrivateMessages> pmList = new LinkedList<PrivateMessages>(); SAXReader reader = new SAXReader(); Document document = reader.read(privateMessagesFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("privatemessages")) { for (Iterator<Element> innerIter = itemObject.elementIterator("privatemessage"); innerIter .hasNext();) { Element pmObject = innerIter.next(); String message = unformatString(pmObject.element("message").getText()); String subject = unformatString(pmObject.element("subject").getText()); Long privateMessageFolderId = getNewId( importLongType( unformatString(pmObject.element("privateMessageFolderId").getText())), Maps.MESSAGEFOLDERS); Long userContactId = getNewId( importLongType(unformatString(pmObject.element("userContactId").getText())), Maps.USERCONTACTS); Long parentMessage = importLongType( unformatString(pmObject.element("parentMessage").getText())); Boolean bookedRoom = importBooleanType( unformatString(pmObject.element("bookedRoom").getText())); Users from = userManagement.getUserById(getNewId( importLongType(unformatString(pmObject.element("from").getText())), Maps.USERS)); Users to = userManagement.getUserById(getNewId( importLongType(unformatString(pmObject.element("to").getText())), Maps.USERS)); Date inserted = CalendarPatterns .parseImportDate(unformatString(pmObject.element("inserted").getText())); Boolean isContactRequest = importBooleanType( unformatString(pmObject.element("isContactRequest").getText())); Boolean isRead = importBooleanType(unformatString(pmObject.element("isRead").getText())); Boolean isTrash = importBooleanType(unformatString(pmObject.element("isTrash").getText())); Users owner = userManagement.getUserById(getNewId( importLongType(unformatString(pmObject.element("owner").getText())), Maps.USERS)); Rooms room = roommanagement.getRoomById(getNewId( importLongType(unformatString(pmObject.element("room").getText())), Maps.ROOMS)); PrivateMessages pm = new PrivateMessages(); pm.setMessage(message); pm.setSubject(subject); pm.setPrivateMessageFolderId(privateMessageFolderId); pm.setUserContactId(userContactId); pm.setParentMessage(parentMessage); pm.setBookedRoom(bookedRoom); pm.setFrom(from); pm.setTo(to); pm.setInserted(inserted); pm.setIsContactRequest(isContactRequest); pm.setIsRead(isRead); pm.setIsTrash(isTrash); pm.setOwner(owner); pm.setRoom(room); pmList.add(pm); } } } return pmList; } catch (Exception err) { log.error("[getPrivateMessagesByXML]", err); } return null; } private void importUserContacts(File userContactsFile) throws Exception { List<UserContacts> ucList = this.getUserContactsByXML(userContactsFile); for (UserContacts uc : ucList) { Long userContactId = uc.getUserContactId(); UserContacts storedUC = userContactsDao.getUserContacts(userContactId); if (storedUC == null) { uc.setUserContactId(0); Long newId = userContactsDao.addUserContactObj(uc); this.userContactsMap.put(userContactId, newId); } } } @SuppressWarnings("unchecked") private List<UserContacts> getUserContactsByXML(File userContactsFile) { try { List<UserContacts> ucList = new LinkedList<UserContacts>(); SAXReader reader = new SAXReader(); Document document = reader.read(userContactsFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("usercontacts")) { for (Iterator<Element> innerIter = itemObject.elementIterator("usercontact"); innerIter .hasNext();) { Element usercontact = innerIter.next(); String hash = unformatString(usercontact.element("hash").getText()); Users contact = userManagement.getUserById( getNewId(importLongType(unformatString(usercontact.element("contact").getText())), Maps.USERS)); Users owner = userManagement.getUserById( getNewId(importLongType(unformatString(usercontact.element("owner").getText())), Maps.USERS)); Boolean pending = importBooleanType( unformatString(usercontact.element("pending").getText())); Boolean shareCalendar = importBooleanType( unformatString(usercontact.element("shareCalendar").getText())); Long userContactId = importLongType( unformatString(usercontact.element("userContactId").getText())); UserContacts userContacts = new UserContacts(); userContacts.setHash(hash); userContacts.setContact(contact); userContacts.setOwner(owner); userContacts.setPending(pending); userContacts.setShareCalendar(shareCalendar); userContacts.setUserContactId(userContactId); ucList.add(userContacts); } } } return ucList; } catch (Exception err) { log.error("[getUserContactsByXML]", err); } return null; } private void importOrganizsations(File orgFile) { try { SAXReader reader = new SAXReader(); Document document = reader.read(orgFile); Element root = document.getRootElement(); for (@SuppressWarnings("unchecked") Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("organisations")) { for (@SuppressWarnings("unchecked") Iterator<Element> innerIter = itemObject.elementIterator("organisation"); innerIter .hasNext();) { Element orgObject = innerIter.next(); Long organisation_id = importLongType( unformatString(orgObject.element("organisation_id").getText())); String name = unformatString(orgObject.element("name").getText()); String deleted = unformatString(orgObject.element("deleted").getText()); Organisation organisation = new Organisation(); organisation.setName(name); organisation.setDeleted(deleted); Long newOrgID = organisationmanagement.addOrganisationObj(organisation); organisationsMap.put(organisation_id, newOrgID); } } } } catch (Exception err) { log.error("[getOrganisationsByXML]", err); } } private String unformatString(String str) { str = str.replaceAll(Pattern.quote("<![CDATA["), ""); str = str.replaceAll(Pattern.quote("]]>"), ""); return str; } private void importMeetingmembers(File meetingmembersListFile) throws Exception { List<MeetingMember> meetingmembersList = this.getMeetingmembersListByXML(meetingmembersListFile); for (MeetingMember ma : meetingmembersList) { // We need to reset this as openJPA reject to store them otherwise ma.setMeetingMemberId(null); meetingMemberDao.addMeetingMemberByObject(ma); } } @SuppressWarnings("unchecked") private List<MeetingMember> getMeetingmembersListByXML(File meetingmembersListFile) { try { List<MeetingMember> meetingmembersList = new LinkedList<MeetingMember>(); SAXReader reader = new SAXReader(); Document document = reader.read(meetingmembersListFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("meetingmembers")) { for (Iterator<Element> innerIter = itemObject.elementIterator("meetingmember"); innerIter .hasNext();) { Element appointmentsObject = innerIter.next(); Long meetingMemberId = importLongType( unformatString(appointmentsObject.element("meetingMemberId").getText())); Long userid = getNewId( importLongType(unformatString(appointmentsObject.element("userid").getText())), Maps.USERS); Long appointment = getNewId( importLongType(unformatString(appointmentsObject.element("appointment").getText())), Maps.APPOINTMENTS); String firstname = unformatString(appointmentsObject.element("firstname").getText()); String lastname = unformatString(appointmentsObject.element("lastname").getText()); String memberStatus = unformatString(appointmentsObject.element("memberStatus").getText()); String appointmentStatus = unformatString( appointmentsObject.element("appointmentStatus").getText()); String email = unformatString(appointmentsObject.element("email").getText()); Boolean deleted = importBooleanType( unformatString(appointmentsObject.element("deleted").getText())); Boolean invitor = importBooleanType( unformatString(appointmentsObject.element("invitor").getText())); MeetingMember meetingMember = new MeetingMember(); meetingMember.setMeetingMemberId(meetingMemberId); meetingMember.setUserid(usersDao.getUser(userid)); meetingMember.setAppointment(appointmentDao.getAppointmentByIdBackup(appointment)); meetingMember.setFirstname(firstname); meetingMember.setLastname(lastname); meetingMember.setMemberStatus(memberStatus); meetingMember.setAppointmentStatus(appointmentStatus); meetingMember.setEmail(email); meetingMember.setDeleted(deleted); meetingMember.setInvitor(invitor); meetingmembersList.add(meetingMember); } } } return meetingmembersList; } catch (Exception err) { log.error("[meetingmembersList]", err); } return null; } private void importLdapConfig(File ldapConfigListFile) throws Exception { List<LdapConfig> ldapConfigList = this.getLdapConfigListByXML(ldapConfigListFile); for (LdapConfig ldapConfig : ldapConfigList) { ldapConfigDao.addLdapConfigByObject(ldapConfig); } } @SuppressWarnings("unchecked") private List<LdapConfig> getLdapConfigListByXML(File ldapConfigListFile) { try { List<LdapConfig> ldapConfigsList = new LinkedList<LdapConfig>(); SAXReader reader = new SAXReader(); Document document = reader.read(ldapConfigListFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("ldapconfigs")) { for (Iterator<Element> innerIter = itemObject.elementIterator("ldapconfig"); innerIter .hasNext();) { Element ldapconfigObject = innerIter.next(); String name = unformatString(ldapconfigObject.element("name").getText()); String configFileName = unformatString( ldapconfigObject.element("configFileName").getText()); Boolean addDomainToUserName = importBooleanType( unformatString(ldapconfigObject.element("addDomainToUserName").getText())); String domain = unformatString(ldapconfigObject.element("domain").getText()); Boolean isActive = importBooleanType( unformatString(ldapconfigObject.element("isActive").getText())); LdapConfig ldapConfig = new LdapConfig(); ldapConfig.setName(name); ldapConfig.setConfigFileName(configFileName); ldapConfig.setAddDomainToUserName(addDomainToUserName); ldapConfig.setDomain(domain); ldapConfig.setIsActive(isActive); ldapConfigsList.add(ldapConfig); } } } return ldapConfigsList; } catch (Exception err) { log.error("[getLdapConfigListByXML]", err); } return null; } private void importAppointements(File appointementListFile) throws Exception { List<Appointment> appointmentList = this.getAppointmentListByXML(appointementListFile); for (Appointment appointment : appointmentList) { Long appId = appointment.getAppointmentId(); // We need to reset this as openJPA reject to store them otherwise appointment.setAppointmentId(null); Long newAppId = appointmentDao.addAppointmentObj(appointment); appointmentsMap.put(appId, newAppId); } } @SuppressWarnings("unchecked") private List<Appointment> getAppointmentListByXML(File appointementListFile) { try { List<Appointment> appointmentList = new LinkedList<Appointment>(); SAXReader reader = new SAXReader(); Document document = reader.read(appointementListFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("appointments")) { for (Iterator<Element> innerIter = itemObject.elementIterator("appointment"); innerIter .hasNext();) { Element appointmentsObject = innerIter.next(); Long appointmentId = importLongType( unformatString(appointmentsObject.element("appointmentId").getText())); String appointmentName = unformatString( appointmentsObject.element("appointmentName").getText()); String appointmentLocation = unformatString( appointmentsObject.element("appointmentLocation").getText()); String appointmentDescription = unformatString( appointmentsObject.element("appointmentDescription").getText()); Long categoryId = importLongType( unformatString(appointmentsObject.element("categoryId").getText())); Date appointmentStarttime = CalendarPatterns.parseImportDate( unformatString(appointmentsObject.element("appointmentStarttime").getText())); Date appointmentEndtime = CalendarPatterns.parseImportDate( unformatString(appointmentsObject.element("appointmentEndtime").getText())); String deleted = unformatString(appointmentsObject.element("deleted").getText()); Long typId = importLongType(unformatString(appointmentsObject.element("typId").getText())); Boolean isDaily = importBooleanType( unformatString(appointmentsObject.element("isDaily").getText())); Boolean isWeekly = importBooleanType( unformatString(appointmentsObject.element("isWeekly").getText())); Boolean isMonthly = importBooleanType( unformatString(appointmentsObject.element("isMonthly").getText())); Boolean isYearly = importBooleanType( unformatString(appointmentsObject.element("isYearly").getText())); Long room_id = getNewId( importLongType(unformatString(appointmentsObject.element("room_id").getText())), Maps.ROOMS); String icalId = unformatString(appointmentsObject.element("icalId").getText()); Long language_id = importLongType( unformatString(appointmentsObject.element("language_id").getText())); Boolean isPasswordProtected = importBooleanType( unformatString(appointmentsObject.element("isPasswordProtected").getText())); String password = unformatString(appointmentsObject.element("password").getText()); Long users_id = getNewId( importLongType(unformatString(appointmentsObject.element("users_id").getText())), Maps.USERS); Appointment app = new Appointment(); app.setAppointmentId(appointmentId); app.setAppointmentLocation(appointmentLocation); app.setAppointmentName(appointmentName); app.setAppointmentDescription(appointmentDescription); app.setAppointmentCategory( appointmentCategoryDaoImpl.getAppointmentCategoryById(categoryId)); app.setAppointmentStarttime(appointmentStarttime); app.setAppointmentEndtime(appointmentEndtime); app.setDeleted(deleted); app.setRemind(appointmentReminderTypDaoImpl.getAppointmentReminderTypById(typId)); app.setIsDaily(isDaily); app.setIsWeekly(isWeekly); app.setIsMonthly(isMonthly); app.setIsYearly(isYearly); app.setRoom(roommanagement.getRoomById(room_id)); app.setIcalId(icalId); app.setLanguage_id(language_id); app.setIsPasswordProtected(isPasswordProtected); app.setPassword(password); app.setUserId(userManagement.getUserById(users_id)); appointmentList.add(app); } } } return appointmentList; } catch (Exception err) { log.error("[getRoomListByXML]", err); } return null; } private void importOrgRooms(File orgRoomListFile) throws Exception { List<Rooms_Organisation> roomOrgList = this.getOrgRoomListByXML(orgRoomListFile); for (Rooms_Organisation rooms_Organisation : roomOrgList) { // We need to reset this as openJPA reject to store them otherwise rooms_Organisation.setRooms_organisation_id(null); roommanagement.addRoomOrganisation(rooms_Organisation); } } @SuppressWarnings("unchecked") private List<Rooms_Organisation> getOrgRoomListByXML(File orgRoomListFile) { try { List<Rooms_Organisation> orgRoomList = new LinkedList<Rooms_Organisation>(); SAXReader reader = new SAXReader(); Document document = reader.read(orgRoomListFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("room_organisations")) { for (Iterator<Element> innerIter = itemObject.elementIterator("room_organisation"); innerIter .hasNext();) { Element orgRoomObject = innerIter.next(); Long rooms_organisation_id = importLongType( unformatString(orgRoomObject.element("rooms_organisation_id").getText())); Long organisation_id = getNewId( importLongType(unformatString(orgRoomObject.element("organisation_id").getText())), Maps.ORGANISATIONS); Long rooms_id = getNewId( importLongType(unformatString(orgRoomObject.element("rooms_id").getText())), Maps.ROOMS); String deleted = unformatString(orgRoomObject.element("deleted").getText()); Rooms_Organisation rooms_Organisation = new Rooms_Organisation(); rooms_Organisation.setRooms_organisation_id(rooms_organisation_id); rooms_Organisation .setOrganisation(organisationmanagement.getOrganisationById(organisation_id)); rooms_Organisation.setRoom(roommanagement.getRoomById(rooms_id)); rooms_Organisation.setDeleted(deleted); orgRoomList.add(rooms_Organisation); } } } return orgRoomList; } catch (Exception err) { log.error("[getRoomListByXML]", err); } return null; } @SuppressWarnings("unchecked") private void importRooms(File roomFile) throws Exception { try { SAXReader reader = new SAXReader(); Document document = reader.read(roomFile); Element root = document.getRootElement(); Element rooms = root.element("rooms"); for (Iterator<Element> innerIter = rooms.elementIterator("room"); innerIter.hasNext();) { Element roomObject = innerIter.next(); Long rooms_id = importLongType(unformatString(roomObject.element("rooms_id").getText())); String name = unformatString(roomObject.element("name").getText()); String deleted = unformatString(roomObject.element("deleted").getText()); String comment = unformatString(roomObject.element("comment").getText()); Long numberOfPartizipants = importLongType( unformatString((roomObject.element("numberOfPartizipants").getText()))); Boolean appointment = importBooleanType( unformatString(roomObject.element("appointment").getText())); Long externalRoomId = importLongType( unformatString(roomObject.element("externalRoomId").getText())); String externalRoomType = unformatString(roomObject.element("externalRoomType").getText()); Long roomtypes_id = importLongType(unformatString(roomObject.element("roomtypeId").getText())); Boolean isDemoRoom = false; if (roomObject.element("isDemoRoom") != null) { isDemoRoom = importBooleanType(unformatString(roomObject.element("isDemoRoom").getText())); } Integer demoTime = null; if (roomObject.element("demoTime") != null) { demoTime = importIntegerType(unformatString(roomObject.element("demoTime").getText())); } Boolean isModeratedRoom = false; if (roomObject.element("isModeratedRoom") != null) { isModeratedRoom = importBooleanType( unformatString(roomObject.element("isModeratedRoom").getText())); } Boolean allowUserQuestions = true; if (roomObject.element("allowUserQuestions") != null) { allowUserQuestions = importBooleanType( unformatString(roomObject.element("allowUserQuestions").getText())); } Boolean isAudioOnly = false; if (roomObject.element("isAudioOnly") != null) { isAudioOnly = importBooleanType(unformatString(roomObject.element("isAudioOnly").getText())); } String sipNumber = ""; if (roomObject.element("sipNumber") != null) { sipNumber = unformatString(roomObject.element("sipNumber").getText()); } String conferencePin = ""; if (roomObject.element("conferencePin") != null) { conferencePin = unformatString(roomObject.element("conferencePin").getText()); } Boolean showMicrophoneStatus = false; if (roomObject.element("showMicrophoneStatus") != null) { showMicrophoneStatus = importBooleanType( unformatString(roomObject.element("showMicrophoneStatus").getText())); } Long ownerId = null; if (roomObject.element("ownerid") != null) { ownerId = getNewId(importLongType(unformatString(roomObject.element("ownerid").getText())), Maps.USERS); } Boolean ispublic = false; if (roomObject.element("ispublic") != null) { ispublic = importBooleanType(unformatString(roomObject.element("ispublic").getText())); } Boolean waitForRecording = false; if (roomObject.element("waitForRecording") != null) { waitForRecording = importBooleanType( unformatString(roomObject.element("waitForRecording").getText())); } Boolean hideTopBar = false; if (roomObject.element("hideTopBar") != null) { hideTopBar = importBooleanType(unformatString(roomObject.element("hideTopBar").getText())); } Boolean isClosed = false; if (roomObject.element("isClosed") != null) { isClosed = importBooleanType(unformatString(roomObject.element("isClosed").getText())); } Boolean allowRecording = false; if (roomObject.element("allowRecording") != null) { allowRecording = importBooleanType( unformatString(roomObject.element("allowRecording").getText())); } String redirectURL = ""; if (roomObject.element("redirectURL") != null) { redirectURL = unformatString(roomObject.element("redirectURL").getText()); } Boolean hideActionsMenu = false; if (roomObject.element("hideActionsMenu") != null) { hideTopBar = importBooleanType(unformatString(roomObject.element("hideActionsMenu").getText())); } Boolean hideActivitiesAndActions = false; if (roomObject.element("hideActivitiesAndActions") != null) { hideTopBar = importBooleanType( unformatString(roomObject.element("hideActivitiesAndActions").getText())); } Boolean hideChat = false; if (roomObject.element("hideChat") != null) { hideTopBar = importBooleanType(unformatString(roomObject.element("hideChat").getText())); } Boolean hideFilesExplorer = false; if (roomObject.element("hideFilesExplorer") != null) { hideTopBar = importBooleanType( unformatString(roomObject.element("hideFilesExplorer").getText())); } Boolean hideScreenSharing = false; if (roomObject.element("hideScreenSharing") != null) { hideTopBar = importBooleanType( unformatString(roomObject.element("hideScreenSharing").getText())); } Boolean hideWhiteboard = false; if (roomObject.element("hideWhiteboard") != null) { hideTopBar = importBooleanType(unformatString(roomObject.element("hideWhiteboard").getText())); } Rooms room = new Rooms(); room.setRooms_id(rooms_id); room.setOwnerId(ownerId); room.setName(name); room.setDeleted(deleted); room.setComment(comment); room.setNumberOfPartizipants(numberOfPartizipants); room.setAppointment(appointment); room.setExternalRoomId(externalRoomId); room.setExternalRoomType(externalRoomType); room.setRoomtype(roommanagement.getRoomTypesById(roomtypes_id)); room.setIsDemoRoom(isDemoRoom); room.setDemoTime(demoTime); room.setIsModeratedRoom(isModeratedRoom); room.setAllowUserQuestions(allowUserQuestions); room.setIsAudioOnly(isAudioOnly); room.setSipNumber(sipNumber); room.setConferencePin(conferencePin); room.setIspublic(ispublic); room.setIsClosed(isClosed); room.setRedirectURL(redirectURL); room.setWaitForRecording(waitForRecording); room.setHideTopBar(hideTopBar); room.setAllowRecording(allowRecording); room.setShowMicrophoneStatus(showMicrophoneStatus); room.setHideActionsMenu(hideActionsMenu); room.setHideActivitiesAndActions(hideActivitiesAndActions); room.setHideChat(hideChat); room.setHideFilesExplorer(hideFilesExplorer); room.setHideScreenSharing(hideScreenSharing); room.setHideWhiteboard(hideWhiteboard); Long roomId = room.getRooms_id(); // We need to reset this as openJPA reject to store them // otherwise room.setRooms_id(null); Long newRoomId = roommanagement.addRoom(room); roomsMap.put(roomId, newRoomId); for (Iterator<Element> iterMods = roomObject.elementIterator("room_moderators"); iterMods .hasNext();) { Element room_moderators = iterMods.next(); for (Iterator<Element> iterMod = room_moderators.elementIterator("room_moderator"); iterMod .hasNext();) { Element room_moderator = iterMod.next(); RoomModerators roomModerators = new RoomModerators(); Long user_id = getNewId( importLongType(unformatString(room_moderator.element("user_id").getText())), Maps.USERS); Boolean is_supermoderator = importBooleanType( unformatString(room_moderator.element("is_supermoderator").getText())); roomModerators.setDeleted("false"); roomModerators.setRoomId(getNewId(rooms_id, Maps.ROOMS)); roomModerators.setUser(userManagement.getUserById(user_id)); roomModerators.setIsSuperModerator(is_supermoderator); roomModeratorsDao.addRoomModeratorByObj(roomModerators); } } } } catch (Exception err) { log.error("[getRoomListByXML]", err); } } private void importFileExplorerItems(File fileExplorerItemsListFile) throws Exception { List<FileExplorerItem> fileExplorerItems = this.getFileExplorerItems(fileExplorerItemsListFile); for (FileExplorerItem fileExplorerItem : fileExplorerItems) { // We need to reset this as openJPA reject to store them otherwise long itemId = fileExplorerItem.getFileExplorerItemId(); fileExplorerItem.setFileExplorerItemId(0); long newItemId = fileExplorerItemDao.addFileExplorerItem(fileExplorerItem); fileExplorerItemsMap.put(itemId, newItemId); } } @SuppressWarnings("unchecked") private List<FileExplorerItem> getFileExplorerItems(File fileExplorerItemsListFile) { try { List<FileExplorerItem> fileExplorerItemsList = new LinkedList<FileExplorerItem>(); SAXReader reader = new SAXReader(); Document document = reader.read(fileExplorerItemsListFile); Element root = document.getRootElement(); for (Iterator<Element> i = root.elementIterator(); i.hasNext();) { Element itemObject = i.next(); if (itemObject.getName().equals("fileExplorerItems")) { for (Iterator<Element> innerIter = itemObject.elementIterator("fileExplorerItem"); innerIter .hasNext();) { Element fileExplorerItemObj = innerIter.next(); Long fileExplorerItemId = importLongType( unformatString(fileExplorerItemObj.element("fileExplorerItemId").getText())); String fileName = unformatString(fileExplorerItemObj.element("fileName").getText()); String fileHash = unformatString(fileExplorerItemObj.element("fileHash").getText()); Long parentFileExplorerItemId = importLongType( unformatString(fileExplorerItemObj.element("parentFileExplorerItemId").getText())); Long room_id = getNewId( importLongType(unformatString(fileExplorerItemObj.element("room_id").getText())), Maps.ROOMS); Long ownerId = getNewId( importLongType(unformatString(fileExplorerItemObj.element("ownerId").getText())), Maps.USERS); Boolean isFolder = importBooleanType( unformatString(fileExplorerItemObj.element("isFolder").getText())); Boolean isImage = importBooleanType( unformatString(fileExplorerItemObj.element("isImage").getText())); Boolean isPresentation = importBooleanType( unformatString(fileExplorerItemObj.element("isPresentation").getText())); Boolean isVideo = importBooleanType( unformatString(fileExplorerItemObj.element("isVideo").getText())); Long insertedBy = getNewId( importLongType(unformatString(fileExplorerItemObj.element("insertedBy").getText())), Maps.USERS); Date inserted = CalendarPatterns .parseImportDate(unformatString(fileExplorerItemObj.element("inserted").getText())); Date updated = CalendarPatterns .parseImportDate(unformatString(fileExplorerItemObj.element("updated").getText())); String deleted = unformatString(fileExplorerItemObj.element("deleted").getText()); Long fileSize = importLongType( unformatString(fileExplorerItemObj.element("fileSize").getText())); Integer flvWidth = importIntegerType( unformatString(fileExplorerItemObj.element("flvWidth").getText())); Integer flvHeight = importIntegerType( unformatString(fileExplorerItemObj.element("flvHeight").getText())); String previewImage = unformatString(fileExplorerItemObj.element("previewImage").getText()); String wmlFilePath = unformatString(fileExplorerItemObj.element("wmlFilePath").getText()); Boolean isStoredWmlFile = importBooleanType( unformatString(fileExplorerItemObj.element("isStoredWmlFile").getText())); Boolean isChart = importBooleanType( unformatString(fileExplorerItemObj.element("isChart").getText())); FileExplorerItem fileExplorerItem = new FileExplorerItem(); fileExplorerItem.setFileExplorerItemId(fileExplorerItemId); fileExplorerItem.setFileName(fileName); fileExplorerItem.setFileHash(fileHash); fileExplorerItem.setParentFileExplorerItemId(parentFileExplorerItemId); fileExplorerItem.setRoom_id(room_id); fileExplorerItem.setOwnerId(ownerId); fileExplorerItem.setIsFolder(isFolder); fileExplorerItem.setIsImage(isImage); fileExplorerItem.setIsPresentation(isPresentation); fileExplorerItem.setIsVideo(isVideo); fileExplorerItem.setInsertedBy(insertedBy); fileExplorerItem.setInserted(inserted); fileExplorerItem.setUpdated(updated); fileExplorerItem.setDeleted(deleted); fileExplorerItem.setFileSize(fileSize); fileExplorerItem.setFlvWidth(flvWidth); fileExplorerItem.setFlvHeight(flvHeight); fileExplorerItem.setPreviewImage(previewImage); fileExplorerItem.setWmlFilePath(wmlFilePath); fileExplorerItem.setIsStoredWmlFile(isStoredWmlFile); fileExplorerItem.setIsChart(isChart); fileExplorerItemsList.add(fileExplorerItem); } } } return fileExplorerItemsList; } catch (Exception err) { log.error("[getFileExplorerItems]", err); } return null; } private void importFolders(String current_dir, File importBaseDir) throws IOException { // Now check the room files and import them File roomFilesFolder = new File(importBaseDir, "roomFiles"); File library_dir = new File(current_dir, OpenmeetingsVariables.UPLOAD_DIR); log.debug("roomFilesFolder PATH " + roomFilesFolder.getAbsolutePath()); if (roomFilesFolder.exists()) { File[] files = roomFilesFolder.listFiles(); for (File file : files) { if (file.isDirectory()) { File parentPathFile = new File(library_dir, file.getName()); if (!parentPathFile.exists()) { parentPathFile.mkdir(); } File[] roomOrProfileFiles = file.listFiles(); for (File roomOrProfileFileOrFolder : roomOrProfileFiles) { if (roomOrProfileFileOrFolder.isDirectory()) { String fileOrFolderName = roomOrProfileFileOrFolder.getName(); int beginIndex = fileOrFolderName.indexOf(ScopeApplicationAdapter.profilesPrefix); // Profile folder should be renamed if new user id // is differ from current id. if (beginIndex > -1) { beginIndex = beginIndex + ScopeApplicationAdapter.profilesPrefix.length(); Long profileId = importLongType(fileOrFolderName.substring(beginIndex)); Long newProfileID = getNewId(profileId, Maps.USERS); if (profileId != newProfileID) { fileOrFolderName = fileOrFolderName.replaceFirst( ScopeApplicationAdapter.profilesPrefix + profileId, ScopeApplicationAdapter.profilesPrefix + newProfileID); } } File roomDocumentFolder = new File(parentPathFile, fileOrFolderName); if (!roomDocumentFolder.exists()) { roomDocumentFolder.mkdir(); File[] roomDocumentFiles = roomOrProfileFileOrFolder.listFiles(); for (File roomDocumentFile : roomDocumentFiles) { if (roomDocumentFile.isDirectory()) { log.error( "Folder detected in Documents space! Folder " + roomDocumentFolder); } else { copyFile(roomDocumentFile, new File(roomDocumentFolder, roomDocumentFile.getName())); } } } else { log.debug("Document already exists :: ", roomDocumentFolder); } } else { File roomFileOrProfileFile = new File(parentPathFile, roomOrProfileFileOrFolder.getName()); if (!roomFileOrProfileFile.exists()) { this.copyFile(roomOrProfileFileOrFolder, roomFileOrProfileFile); } else { log.debug("File does already exist :: ", roomFileOrProfileFile); } } } } } } // Now check the recordings and import them File sourceDirRec = new File(importBaseDir, "recordingFiles"); log.debug("sourceDirRec PATH " + sourceDirRec.getAbsolutePath()); if (sourceDirRec.exists()) { File targetDirRec = new File(current_dir, OpenmeetingsVariables.STREAMS_DIR + File.separatorChar + "hibernate" + File.separatorChar); copyDirectory(sourceDirRec, targetDirRec); } } private Integer importIntegerType(String value) { if (value.equals("null") || value.equals("")) { return null; } return Integer.valueOf(value).intValue(); } private Long importLongType(String value) { if (value.equals("null") || value.equals("")) { return null; } return Long.valueOf(value).longValue(); } private Boolean importBooleanType(String value) { if (value.equals("null") || value.equals("")) { return null; } return Boolean.valueOf(value).booleanValue(); } private Long getNewId(Long oldId, Maps map) { Long newId = oldId; switch (map) { case USERS: if (usersMap.get(oldId) != null) newId = usersMap.get(oldId); break; case ORGANISATIONS: if (organisationsMap.get(oldId) != null) newId = organisationsMap.get(oldId); break; case APPOINTMENTS: if (appointmentsMap.get(oldId) != null) newId = appointmentsMap.get(oldId); break; case ROOMS: if (roomsMap.get(oldId) != null) newId = roomsMap.get(oldId); break; case MESSAGEFOLDERS: if (messageFoldersMap.get(oldId) != null) newId = messageFoldersMap.get(oldId); break; case USERCONTACTS: if (userContactsMap.get(oldId) != null) newId = userContactsMap.get(oldId); break; case FILEEXPLORERITEMS: if (fileExplorerItemsMap.get(oldId) != null) newId = fileExplorerItemsMap.get(oldId); break; default: break; } return newId; } }