List of usage examples for org.apache.commons.transaction.util FileHelper removeRec
public static void removeRec(File toRemove)
From source file:org.apache.openmeetings.backup.BackupImport.java
public void performImport(InputStream is) throws Exception { usersMap.clear();/*from w ww.ja v a 2 s.com*/ groupMap.clear(); appointmentsMap.clear(); roomsMap.clear(); messageFoldersMap.clear(); userContactsMap.clear(); userEmailMap.clear(); messageFoldersMap.put(INBOX_FOLDER_ID, INBOX_FOLDER_ID); messageFoldersMap.put(SENT_FOLDER_ID, SENT_FOLDER_ID); messageFoldersMap.put(TRASH_FOLDER_ID, TRASH_FOLDER_ID); File f = unzip(is); /* * ##################### Import Configs */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions Serializer serializer = new Persister(strategy, matcher); matcher.bind(Long.class, LongTransform.class); registry.bind(Date.class, DateConverter.class); registry.bind(User.class, new UserConverter(userDao, usersMap)); List<Configuration> list = readList(serializer, f, "configs.xml", "configs", Configuration.class, true); for (Configuration c : list) { if (c.getKey() == null || c.isDeleted()) { continue; } Configuration cfg = configurationDao.forceGet(c.getKey()); if (cfg != null && !cfg.isDeleted()) { log.warn("Non deleted configuration with same key is found! old value: {}, new value: {}", cfg.getValue(), c.getValue()); } c.setId(cfg == null ? null : cfg.getId()); if (c.getUser() != null && c.getUser().getId() == null) { c.setUser(null); } if (CONFIG_CRYPT_KEY.equals(c.getKey())) { try { Class.forName(c.getValue()); } catch (ClassNotFoundException e) { c.setValue(SHA256Implementation.class.getCanonicalName()); } } configurationDao.update(c, null); } } log.info("Configs import complete, starting group import"); /* * ##################### Import Groups */ Serializer simpleSerializer = new Persister(); { List<Group> list = readList(simpleSerializer, f, "organizations.xml", "organisations", Group.class); for (Group o : list) { Long oldId = o.getId(); o.setId(null); o = groupDao.update(o, null); groupMap.put(oldId, o.getId()); } } log.info("Groups import complete, starting LDAP config import"); /* * ##################### Import LDAP Configs */ Long defaultLdapId = configurationDao.getConfValue(CONFIG_DEFAULT_LDAP_ID, Long.class, null); { List<LdapConfig> list = readList(simpleSerializer, f, "ldapconfigs.xml", "ldapconfigs", LdapConfig.class, true); for (LdapConfig c : list) { if (!"local DB [internal]".equals(c.getName())) { c.setId(null); c = ldapConfigDao.update(c, null); if (defaultLdapId == null) { defaultLdapId = c.getId(); } } } } log.info("Ldap config import complete, starting OAuth2 server import"); /* * ##################### OAuth2 servers */ { List<OAuthServer> list = readList(simpleSerializer, f, "oauth2servers.xml", "oauth2servers", OAuthServer.class, true); for (OAuthServer s : list) { s.setId(null); auth2Dao.update(s, null); } } log.info("OAuth2 servers import complete, starting user import"); /* * ##################### Import Users */ { String jNameTimeZone = configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin"); List<User> list = readUserList(f, "users.xml", "users"); int minLoginLength = getMinLoginLength(configurationDao); for (User u : list) { if (u.getLogin() == null) { continue; } if (u.getType() == User.Type.contact && u.getLogin().length() < minLoginLength) { u.setLogin(UUID.randomUUID().toString()); } //FIXME: OPENMEETINGS-750 //Convert old Backups with OmTimeZone to new schema String tz = u.getTimeZoneId(); if (tz == null) { u.setTimeZoneId(jNameTimeZone); u.setForceTimeZoneCheck(true); } else { u.setForceTimeZoneCheck(false); } Long userId = u.getId(); u.setId(null); if (u.getSipUser() != null && u.getSipUser().getId() != 0) { u.getSipUser().setId(0); } if (LDAP_EXT_TYPE.equals(u.getExternalType()) && User.Type.external != u.getType()) { log.warn("Found LDAP user in 'old' format, external_type == 'LDAP':: " + u); u.setType(User.Type.ldap); u.setExternalType(null); if (u.getDomainId() == null) { u.setDomainId(defaultLdapId); //domainId was not supported in old versions of OM } } if (!Strings.isEmpty(u.getExternalType())) { u.setType(User.Type.external); } userDao.update(u, Long.valueOf(-1)); usersMap.put(userId, u.getId()); } } log.info("Users import complete, starting room import"); /* * ##################### Import Rooms */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions Serializer serializer = new Persister(strategy, matcher); matcher.bind(Long.class, LongTransform.class); matcher.bind(Integer.class, IntegerTransform.class); registry.bind(User.class, new UserConverter(userDao, usersMap)); registry.bind(Room.Type.class, RoomTypeConverter.class); List<Room> list = readList(serializer, f, "rooms.xml", "rooms", Room.class); for (Room r : list) { Long roomId = r.getId(); // We need to reset ids as openJPA reject to store them otherwise r.setId(null); if (r.getModerators() != null) { for (Iterator<RoomModerator> i = r.getModerators().iterator(); i.hasNext();) { RoomModerator rm = i.next(); if (rm.getUser().getId() == null) { i.remove(); } } } r = roomDao.update(r, null); roomsMap.put(roomId, r.getId()); } } log.info("Room import complete, starting room groups import"); /* * ##################### Import Room Groups */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(Group.class, new GroupConverter(groupDao, groupMap)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); List<RoomGroup> list = readList(serializer, f, "rooms_organisation.xml", "room_organisations", RoomGroup.class); for (RoomGroup ro : list) { if (!ro.isDeleted() && ro.getRoom() != null && ro.getRoom().getId() != null && ro.getGroup() != null && ro.getGroup().getId() != null) { // We need to reset this as openJPA reject to store them otherwise ro.setId(null); roomGroupDao.update(ro, null); } } } log.info("Room groups import complete, starting chat messages import"); /* * ##################### Import Chat messages */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(userDao, usersMap)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); registry.bind(Date.class, DateConverter.class); List<ChatMessage> list = readList(serializer, f, "chat_messages.xml", "chat_messages", ChatMessage.class, true); for (ChatMessage m : list) { m.setId(null); if (m.getFromUser() == null || m.getFromUser().getId() == null) { continue; } chatDao.update(m); } } log.info("Chat messages import complete, starting appointement import"); /* * ##################### Import Appointements */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(userDao, usersMap)); registry.bind(Appointment.Reminder.class, AppointmentReminderTypeConverter.class); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); registry.bind(Date.class, DateConverter.class); List<Appointment> list = readList(serializer, f, "appointements.xml", "appointments", Appointment.class); for (Appointment a : list) { Long appId = a.getId(); // We need to reset this as openJPA reject to store them otherwise a.setId(null); if (a.getOwner() != null && a.getOwner().getId() == null) { a.setOwner(null); } if (a.getRoom() == null || a.getRoom().getId() == null) { log.warn("Appointment without room was found, skipping: {}", a); continue; } if (a.getStart() == null || a.getEnd() == null) { log.warn("Appointment without start/end time was found, skipping: {}", a); continue; } a = appointmentDao.update(a, null, false); appointmentsMap.put(appId, a.getId()); } } log.info("Appointement import complete, starting meeting members import"); /* * ##################### Import MeetingMembers * * Reminder Invitations will be NOT send! */ { List<MeetingMember> list = readMeetingMemberList(f, "meetingmembers.xml", "meetingmembers"); for (MeetingMember ma : list) { ma.setId(null); meetingMemberDao.update(ma); } } log.info("Meeting members import complete, starting cluster server import"); /* * ##################### Cluster servers */ { List<Server> list = readList(simpleSerializer, f, "servers.xml", "servers", Server.class, true); for (Server s : list) { s.setId(null); serverDao.update(s, null); } } log.info("Cluster servers import complete, starting recordings import"); /* * ##################### Import Recordings */ { List<Recording> list = readRecordingList(f, "flvRecordings.xml", "flvrecordings"); for (Recording fr : list) { fr.setId(null); if (fr.getRoomId() != null) { fr.setRoomId(roomsMap.get(fr.getRoomId())); } if (fr.getOwnerId() != null) { fr.setOwnerId(usersMap.get(fr.getOwnerId())); } if (fr.getMetaData() != null) { for (RecordingMetaData meta : fr.getMetaData()) { meta.setId(null); meta.setRecording(fr); } } recordingDao.update(fr); } } log.info("Recording import complete, starting private message folder import"); /* * ##################### Import Private Message Folders */ { List<PrivateMessageFolder> list = readList(simpleSerializer, f, "privateMessageFolder.xml", "privatemessagefolders", PrivateMessageFolder.class, true); for (PrivateMessageFolder p : list) { Long folderId = p.getId(); PrivateMessageFolder storedFolder = privateMessageFolderDao.get(folderId); if (storedFolder == null) { p.setId(null); Long newFolderId = privateMessageFolderDao.addPrivateMessageFolderObj(p); messageFoldersMap.put(folderId, newFolderId); } } } log.info("Private message folder import complete, starting user contacts import"); /* * ##################### Import User Contacts */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(userDao, usersMap)); List<UserContact> list = readList(serializer, f, "userContacts.xml", "usercontacts", UserContact.class, true); for (UserContact uc : list) { Long ucId = uc.getId(); UserContact storedUC = userContactDao.get(ucId); if (storedUC == null && uc.getContact() != null && uc.getContact().getId() != null) { uc.setId(null); if (uc.getOwner() != null && uc.getOwner().getId() == null) { uc.setOwner(null); } uc = userContactDao.update(uc); userContactsMap.put(ucId, uc.getId()); } } } log.info("Usercontact import complete, starting private messages item import"); /* * ##################### Import Private Messages */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(userDao, usersMap)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); registry.bind(Date.class, DateConverter.class); List<PrivateMessage> list = readList(serializer, f, "privateMessages.xml", "privatemessages", PrivateMessage.class, true); boolean oldBackup = true; for (PrivateMessage p : list) { if (p.getFolderId() == null || p.getFolderId().longValue() < 0) { oldBackup = false; break; } } for (PrivateMessage p : list) { p.setId(null); p.setFolderId(getNewId(p.getFolderId(), Maps.MESSAGEFOLDERS)); p.setUserContactId(getNewId(p.getUserContactId(), Maps.USERCONTACTS)); if (p.getRoom() != null && p.getRoom().getId() == null) { p.setRoom(null); } if (p.getTo() != null && p.getTo().getId() == null) { p.setTo(null); } if (p.getFrom() != null && p.getFrom().getId() == null) { p.setFrom(null); } if (p.getOwner() != null && p.getOwner().getId() == null) { p.setOwner(null); } if (oldBackup && p.getOwner() != null && p.getOwner().getId() != null && p.getFrom() != null && p.getFrom().getId() != null && p.getOwner().getId() == p.getFrom().getId()) { p.setFolderId(SENT_FOLDER_ID); } privateMessageDao.update(p, null); } } log.info("Private message import complete, starting file explorer item import"); /* * ##################### Import File-Explorer Items */ { List<FileExplorerItem> list = readFileExplorerItemList(f, "fileExplorerItems.xml", "fileExplorerItems"); for (FileExplorerItem file : list) { // We need to reset this as openJPA reject to store them otherwise file.setId(null); Long roomId = file.getRoomId(); file.setRoomId(roomsMap.containsKey(roomId) ? roomsMap.get(roomId) : null); if (file.getOwnerId() != null) { file.setOwnerId(usersMap.get(file.getOwnerId())); } if (file.getParentId() != null && file.getParentId().longValue() <= 0L) { file.setParentId(null); } fileExplorerItemDao.update(file); } } log.info("File explorer item import complete, starting room poll import"); /* * ##################### Import Room Polls */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions Serializer serializer = new Persister(strategy, matcher); matcher.bind(Integer.class, IntegerTransform.class); registry.bind(User.class, new UserConverter(userDao, usersMap)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); registry.bind(RoomPoll.Type.class, PollTypeConverter.class); registry.bind(Date.class, DateConverter.class); List<RoomPoll> list = readList(serializer, f, "roompolls.xml", "roompolls", RoomPoll.class, true); for (RoomPoll rp : list) { rp.setId(null); if (rp.getRoom() == null || rp.getRoom().getId() == null) { //room was deleted continue; } if (rp.getCreator() == null || rp.getCreator().getId() == null) { rp.setCreator(null); } for (RoomPollAnswer rpa : rp.getAnswers()) { if (rpa.getVotedUser() == null || rpa.getVotedUser().getId() == null) { rpa.setVotedUser(null); } } pollDao.update(rp); } } log.info("Poll import complete, starting copy of files and folders"); /* * ##################### Import real files and folders */ importFolders(f); log.info("File explorer item import complete, clearing temp files"); FileHelper.removeRec(f); }
From source file:org.apache.openmeetings.cli.Admin.java
private void process(String[] args) { String ctxName = System.getProperty("context", "openmeetings"); OpenmeetingsVariables.wicketApplicationName = ctxName; File home = new File(System.getenv("RED5_HOME")); OmFileHelper.setOmHome(new File(new File(home, "webapps"), ctxName)); CommandLineParser parser = new DefaultParser(); try {/*from w ww . ja v a2s.c om*/ cmdl = parser.parse(opts, args); } catch (ParseException e) { System.out.println(e.getMessage()); usage(); System.exit(1); } verbose = cmdl.hasOption('v'); Command cmd = Command.usage; if (cmdl.hasOption('i')) { cmd = Command.install; } else if (cmdl.hasOption('b')) { cmd = Command.backup; } else if (cmdl.hasOption('r')) { cmd = Command.restore; } else if (cmdl.hasOption('f')) { cmd = Command.files; } else if (cmdl.hasOption('l')) { cmd = Command.ldap; } String file = cmdl.getOptionValue("file", ""); switch (cmd) { case install: try { if (cmdl.hasOption("file") && (cmdl.hasOption("user") || cmdl.hasOption("email") || cmdl.hasOption("group"))) { System.out.println("Please specify even 'file' option or 'admin user'."); System.exit(1); } boolean force = cmdl.hasOption("force"); if (cmdl.hasOption("skip-default-rooms")) { cfg.createDefaultRooms = "0"; } if (cmdl.hasOption("disable-frontend-register")) { cfg.allowFrontendRegister = "0"; } if (cmdl.hasOption("system-email-address")) { cfg.mailReferer = cmdl.getOptionValue("system-email-address"); } if (cmdl.hasOption("smtp-server")) { cfg.smtpServer = cmdl.getOptionValue("smtp-server"); } if (cmdl.hasOption("smtp-port")) { cfg.smtpPort = Integer.valueOf(cmdl.getOptionValue("smtp-port")); } if (cmdl.hasOption("email-auth-user")) { cfg.mailAuthName = cmdl.getOptionValue("email-auth-user"); } if (cmdl.hasOption("email-auth-pass")) { cfg.mailAuthPass = cmdl.getOptionValue("email-auth-pass"); } if (cmdl.hasOption("email-use-tls")) { cfg.mailUseTls = "1"; } if (cmdl.hasOption("default-language")) { cfg.defaultLangId = cmdl.getOptionValue("default-language"); } ConnectionProperties connectionProperties = new ConnectionProperties(); File conf = OmFileHelper.getPersistence(); if (!conf.exists() || cmdl.hasOption("db-type") || cmdl.hasOption("db-host") || cmdl.hasOption("db-port") || cmdl.hasOption("db-name") || cmdl.hasOption("db-user") || cmdl.hasOption("db-pass")) { String dbType = cmdl.getOptionValue("db-type", "derby"); connectionProperties = ConnectionPropertiesPatcher.patch(dbType, cmdl.getOptionValue("db-host", "localhost"), cmdl.getOptionValue("db-port", null), cmdl.getOptionValue("db-name", null), cmdl.getOptionValue("db-user", null), cmdl.getOptionValue("db-pass", null)); } else { //get properties from existent persistence.xml connectionProperties = ConnectionPropertiesPatcher.getConnectionProperties(conf); } if (cmdl.hasOption("file")) { File backup = checkRestoreFile(file); dropDB(connectionProperties); ImportInitvalues importInit = getApplicationContext().getBean(ImportInitvalues.class); importInit.loadSystem(cfg, force); restoreOm(backup); } else { checkAdminDetails(); dropDB(connectionProperties); ImportInitvalues importInit = getApplicationContext().getBean(ImportInitvalues.class); importInit.loadAll(cfg, force); } InstallationDocumentHandler.createDocument(3); } catch (Exception e) { handleError("Install failed", e); } break; case backup: try { File f; if (!cmdl.hasOption("file")) { file = "backup_" + CalendarPatterns.getTimeForStreamId(new Date()) + ".zip"; f = new File(home, file); System.out.println("File name was not specified, '" + file + "' will be used"); } else { f = new File(file); } boolean includeFiles = !cmdl.hasOption("exclude-files"); File backup_dir = new File(OmFileHelper.getUploadTempDir(), "" + System.currentTimeMillis()); backup_dir.mkdirs(); BackupExport export = getApplicationContext().getBean(BackupExport.class); export.performExport(f, backup_dir, includeFiles, new ProgressHolder()); FileHelper.removeRec(backup_dir); backup_dir.delete(); } catch (Exception e) { handleError("Backup failed", e); } break; case restore: try { restoreOm(checkRestoreFile(file)); } catch (Exception e) { handleError("Restore failed", e); } break; case files: try { boolean cleanup = cmdl.hasOption("cleanup"); if (cleanup) { System.out.println("WARNING: all intermadiate files will be clean up!"); } StringBuilder report = new StringBuilder(); CleanupUnit temp = CleanupHelper.getTempUnit(); if (cleanup) { temp.cleanup(); } report.append("Temporary files allocates: ").append(temp.getHumanTotal()).append("\n"); { //UPLOAD long sectionSize = OmFileHelper.getSize(OmFileHelper.getUploadDir()); report.append("Upload totally allocates: ").append(OmFileHelper.getHumanSize(sectionSize)) .append("\n"); //Profiles WebApplicationContext ctx = getApplicationContext(); UserDao udao = ctx.getBean(UserDao.class); CleanupEntityUnit profile = CleanupHelper.getProfileUnit(udao); long restSize = sectionSize - profile.getSizeTotal(); report.append("\t\tprofiles: ").append(profile.getHumanTotal()).append("\n"); report.append("\t\t\tinvalid: ").append(profile.getHumanInvalid()).append("\n"); report.append("\t\t\tdeleted: ").append(profile.getHumanDeleted()).append("\n"); report.append("\t\t\tmissing count: ").append(profile.getMissing()).append("\n"); if (cleanup) { profile.cleanup(); } CleanupUnit imp = CleanupHelper.getImportUnit(); restSize -= imp.getSizeTotal(); report.append("\t\timport: ").append(OmFileHelper.getHumanSize(imp.getSizeTotal())) .append("\n"); if (cleanup) { imp.cleanup(); } CleanupUnit back = CleanupHelper.getBackupUnit(); restSize -= back.getSizeTotal(); report.append("\t\tbackup: ").append(OmFileHelper.getHumanSize(back.getSizeTotal())) .append("\n"); if (cleanup) { back.cleanup(); } //Files FileExplorerItemDao fileDao = ctx.getBean(FileExplorerItemDao.class); CleanupEntityUnit files = CleanupHelper.getFileUnit(fileDao); restSize -= files.getSizeTotal(); report.append("\t\tfiles: ").append(files.getHumanTotal()).append("\n"); report.append("\t\t\tinvalid: ").append(files.getHumanInvalid()).append("\n"); report.append("\t\t\tdeleted: ").append(files.getHumanDeleted()).append("\n"); report.append("\t\t\tmissing count: ").append(files.getMissing()).append("\n"); report.append("\t\trest: ").append(OmFileHelper.getHumanSize(restSize)).append("\n"); if (cleanup) { files.cleanup(); } } { //STREAMS RecordingDao recordDao = getApplicationContext().getBean(RecordingDao.class); CleanupEntityUnit rec = CleanupHelper.getRecUnit(recordDao); File hibernateDir = OmFileHelper.getStreamsHibernateDir(); report.append("Recordings allocates: ").append(rec.getHumanTotal()).append("\n"); long size = OmFileHelper.getSize(hibernateDir); long restSize = rec.getSizeTotal() - size; report.append("\t\tfinal: ").append(OmFileHelper.getHumanSize(size)).append("\n"); report.append("\t\t\tinvalid: ").append(rec.getHumanInvalid()).append("\n"); report.append("\t\t\tdeleted: ").append(rec.getHumanDeleted()).append("\n"); report.append("\t\t\tmissing count: ").append(rec.getMissing()).append("\n"); report.append("\t\trest: ").append(OmFileHelper.getHumanSize(restSize)).append("\n"); if (cleanup) { rec.cleanup(); } } System.out.println(report); } catch (Exception e) { handleError("Files failed", e); } break; case ldap: if (!cmdl.hasOption("d")) { System.out.println("Please specify LDAP domain Id."); System.exit(1); } Long domainId = Long.valueOf(cmdl.getOptionValue('d')); try { getApplicationContext().getBean(LdapLoginManagement.class).importUsers(domainId, cmdl.hasOption("print-only")); } catch (Exception e) { handleError("LDAP import failed", e); } break; case usage: default: usage(); break; } System.out.println("... Done"); System.exit(0); }
From source file:org.apache.openmeetings.cli.CleanupEntityUnit.java
@Override public void cleanup() throws IOException { for (File i : invalid) { FileHelper.removeRec(i); }/*from w w w . ja v a 2 s . com*/ for (File i : deleted) { FileHelper.removeRec(i); } }
From source file:org.apache.openmeetings.cli.CleanupHelper.java
public static CleanupEntityUnit getRecUnit(final RecordingDao recordDao) { File parent = OmFileHelper.getStreamsDir(); List<File> invalid = new ArrayList<>(); List<File> deleted = new ArrayList<>(); int missing = 0; for (File f : list(hibernateDir, new FilenameFilter() { @Override//www.j a v a 2 s. c o m public boolean accept(File dir, String name) { return name.startsWith(recordingFileName) && name.endsWith(FLV_EXTENSION); } })) { if (!f.isFile()) { log.warn("Recording found is not a file: " + f); continue; } Long id = Long.valueOf(f.getName().substring(recordingFileName.length(), f.getName().length() - FLV_EXTENSION.length())); Recording item = recordDao.get(id); if (item == null) { add(invalid, id); } else if (item.isDeleted()) { add(deleted, id); } } for (Recording item : recordDao.get()) { if (!item.isDeleted() && item.getHash() != null && list(item.getId()).length == 0) { missing++; } } return new CleanupEntityUnit(parent, invalid, deleted, missing) { private static final long serialVersionUID = 1L; @Override public void cleanup() throws IOException { String hiberPath = hibernateDir.getCanonicalPath(); for (File f : list(getParent(), null)) { if (!f.getCanonicalPath().equals(hiberPath)) { FileHelper.removeRec(f); } } super.cleanup(); } }; }
From source file:org.apache.openmeetings.cli.CleanupUnit.java
public void cleanup() throws IOException { for (File f : getParent().listFiles()) { FileHelper.removeRec(f); } }
From source file:org.apache.openmeetings.converter.GenerateImage.java
public ConverterProcessResultList convertImageUserProfile(File file, Long users_id, boolean skipConvertion) throws Exception { ConverterProcessResultList returnMap = new ConverterProcessResultList(); // User Profile Update for (File f : getUploadProfilesUserDir(users_id).listFiles(new FileFilter() { public boolean accept(File pathname) { return pathname.getName().endsWith(JPG_EXTENTION); }//from w w w . j a v a 2 s .c om })) { FileHelper.removeRec(f); } File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(users_id), profileFileName, JPG_EXTENTION); if (!skipConvertion) { returnMap.addItem("processJPG", convertSingleJpg(file.getCanonicalPath(), destinationFile)); } else { FileHelper.copy(file, destinationFile); } returnMap.addItem("processThumb1", generateThumbs.generateThumb(chatImagePrefix, destinationFile, 40)); returnMap.addItem("processThumb2", generateThumbs.generateThumb(profileImagePrefix, destinationFile, 126)); returnMap.addItem("processThumb3", generateThumbs.generateThumb(bigImagePrefix, destinationFile, 240)); if (!skipConvertion) { // Delete old one file.delete(); } String pictureuri = destinationFile.getName(); User us = usersDao.get(users_id); us.setUpdatetime(new java.util.Date()); us.setPictureuri(pictureuri); usersDao.update(us, users_id); //FIXME: After uploading a new picture all other clients should refresh //scopeApplicationAdapter.updateUserSessionObject(users_id, pictureuri); return returnMap; }
From source file:org.apache.openmeetings.core.converter.GenerateImage.java
public ConverterProcessResultList convertImageUserProfile(File file, Long userId, boolean skipConvertion) throws Exception { ConverterProcessResultList returnMap = new ConverterProcessResultList(); // User Profile Update File[] files = getUploadProfilesUserDir(userId).listFiles(new FileFilter() { @Override/*from w w w. ja v a2s. com*/ public boolean accept(File pathname) { return pathname.getName().endsWith(JPG_EXTENSION); } }); if (files != null) { for (File f : files) { FileHelper.removeRec(f); } } File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(userId), profileFileName, JPG_EXTENSION); if (!skipConvertion) { returnMap.addItem("processJPG", convertSingleJpg(file.getCanonicalPath(), destinationFile)); } else { FileHelper.copy(file, destinationFile); } returnMap.addItem("processThumb1", generateThumbs.generateThumb(chatImagePrefix, destinationFile, 40)); returnMap.addItem("processThumb2", generateThumbs.generateThumb(profileImagePrefix, destinationFile, 126)); returnMap.addItem("processThumb3", generateThumbs.generateThumb(bigImagePrefix, destinationFile, 240)); if (!skipConvertion) { // Delete old one file.delete(); } String pictureuri = destinationFile.getName(); User us = userDao.get(userId); us.setUpdated(new java.util.Date()); us.setPictureuri(pictureuri); userDao.update(us, userId); //FIXME: After uploading a new picture all other clients should refresh //scopeApplicationAdapter.updateUserSessionObject(userId, pictureuri); return returnMap; }
From source file:org.apache.openmeetings.data.flvrecord.converter.FlvInterviewConverter.java
public void stripAudioFromFLVs(FlvRecording flvRecording, boolean reconversion) { List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>(); List<String> listOfFullWaveFiles = new LinkedList<String>(); File streamFolder = getStreamFolder(flvRecording); List<FlvRecordingMetaData> metaDataList = flvRecordingMetaDataDaoImpl .getFlvRecordingMetaDataAudioFlvsByRecording(flvRecording.getFlvRecordingId()); stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder, metaDataList); try {/*w ww. j a v a 2 s.c om*/ // Merge Wave to Full Length File streamFolderGeneral = getStreamFolder(); String hashFileFullName = "INTERVIEW_" + flvRecording.getFlvRecordingId() + "_FINAL_WAVE.wav"; String outputFullWav = streamFolder.getAbsolutePath() + File.separatorChar + hashFileFullName; deleteFileIfExists(outputFullWav); if (listOfFullWaveFiles.size() == 1) { outputFullWav = listOfFullWaveFiles.get(0); } else if (listOfFullWaveFiles.size() > 0) { String[] argv_full_sox; if (reconversion) { argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav, metaDataList); } else { argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav); } log.debug("START mergeAudioToWaves ################# "); log.debug(argv_full_sox.toString()); String iString = ""; for (int i = 0; i < argv_full_sox.length; i++) { iString += argv_full_sox[i] + " "; } log.debug(iString); log.debug("END mergeAudioToWaves ################# "); returnLog.add(ProcessHelper.executeScript("mergeWave", argv_full_sox)); } else { // create default Audio to merge it. // strip to content length File outputWav = new File(streamFolderGeneral, "one_second.wav"); // Calculate delta at beginning Long deltaTimeMilliSeconds = flvRecording.getRecordEnd().getTime() - flvRecording.getRecordStart().getTime(); Float deltaPadding = (Float.parseFloat(deltaTimeMilliSeconds.toString()) / 1000) - 1; String[] argv_full_sox = new String[] { this.getPathToSoX(), outputWav.getCanonicalPath(), outputFullWav, "pad", "0", deltaPadding.toString() }; log.debug("START generateSampleAudio ################# "); String tString = ""; for (int i = 0; i < argv_full_sox.length; i++) { tString += argv_full_sox[i] + " "; } log.debug(tString); log.debug("END generateSampleAudio ################# "); returnLog.add(ProcessHelper.executeScript("mergeWave", argv_full_sox)); } // Merge Audio with Video / Calculate resulting FLV // Start extracting image sequence int frameRate = 25; for (FlvRecordingMetaData flvRecordingMetaData : metaDataList) { // FLV to 24 FPS Sequence AVI String inputFlv = new File(streamFolder, flvRecordingMetaData.getStreamName() + ".flv") .getCanonicalPath(); File inputFlvFile = new File(inputFlv); if (inputFlvFile.exists()) { // TO Image Sequence // Image Folder File imageSequenceFolder = new File(streamFolder, "" + flvRecordingMetaData.getFlvRecordingMetaDataId()); imageSequenceFolder.mkdir(); String outputImages = new File(imageSequenceFolder, "image%d.png").getCanonicalPath(); String[] argv_imageSeq = new String[] { this.getPathToFFMPEG(), "-i", inputFlv, "-r", "" + frameRate, "-s", "320x240", outputImages }; log.debug("START generateImageSequence ################# "); String iString = ""; for (int i = 0; i < argv_imageSeq.length; i++) { iString += argv_imageSeq[i] + " "; } log.debug(iString); log.debug("END generateImageSequence ################# "); returnLog.add(ProcessHelper.executeScript("generateImageSequence", argv_imageSeq)); } } // Default Image for empty interview video pods File defaultInterviewImageFile = new File(streamFolderGeneral, "default_interview_image.png"); if (!defaultInterviewImageFile.exists()) { throw new Exception("defaultInterviewImageFile does not exist!"); } String defaultInterviewImage = defaultInterviewImageFile.getCanonicalPath(); // Create Folder for the output Image Sequence String outputImageMergedData = streamFolder.getAbsolutePath() + File.separatorChar + "INTERVIEW_" + flvRecording.getFlvRecordingId() + File.separatorChar; // Merged Image Folder File outputImageMergedDateFolder = new File(outputImageMergedData); outputImageMergedDateFolder.mkdir(); // Generate the Single Image by sequencing boolean jobRunning = true; long currentTimeInMilliSeconds = 0; long completeLengthInSeconds = flvRecording.getRecordEnd().getTime() - flvRecording.getRecordStart().getTime(); log.debug("completeLengthInSeconds :: " + completeLengthInSeconds); int sequenceCounter = 0; while (jobRunning) { // Process one Second of Movie String[] interviewPod1Images = new String[frameRate]; String[] interviewPod2Images = new String[frameRate]; int[] outputFrameNumbers = new int[frameRate]; for (FlvRecordingMetaData flvRecordingMetaData : metaDataList) { long deltaStartRecording = flvRecordingMetaData.getRecordStart().getTime() - flvRecording.getRecordStart().getTime(); if (flvRecording.getRecordStart().getTime() + currentTimeInMilliSeconds >= flvRecordingMetaData .getRecordStart().getTime() && flvRecording.getRecordStart().getTime() + currentTimeInMilliSeconds <= flvRecordingMetaData.getRecordEnd().getTime()) { // Calculate which images should be in here // Calculate the relative starting point long thisImageSequenceStartingPoint = currentTimeInMilliSeconds - deltaStartRecording; // Calculate the first and following frameRate FPS // Number int secondToStart = Long.valueOf(thisImageSequenceStartingPoint / 1000).intValue(); int firstFrame = secondToStart * frameRate; for (int i = 0; i < frameRate; i++) { int currentImageNumber = firstFrame + i; currentImageNumber -= (frameRate / 2); // Remove the first half seconds and fill // it up with black screens // Remove the first period of Images, this is where // the user has started // to share his Video but does not have agreed in // the Flash Security Warning Dialogue Integer initialGapSeconds = flvRecordingMetaData.getInitialGapSeconds(); if (initialGapSeconds != null) { int initialMissingImages = Double .valueOf(Math.floor((initialGapSeconds / 1000) * frameRate)).intValue(); currentImageNumber -= initialMissingImages; } String imageName = "image" + currentImageNumber + ".png"; File outputMetaImageFullDataFile = new File(streamFolder, "" + flvRecordingMetaData.getFlvRecordingMetaDataId() + File.separatorChar + imageName); String outputMetaImageFullData = !outputMetaImageFullDataFile.exists() ? defaultInterviewImage : outputMetaImageFullDataFile.getCanonicalPath(); if (flvRecordingMetaData.getInteriewPodId() == 1) { interviewPod1Images[i] = outputMetaImageFullData; } else if (flvRecordingMetaData.getInteriewPodId() == 2) { interviewPod2Images[i] = outputMetaImageFullData; } } } } // Update Sequence Count for (int i = 0; i < frameRate; i++) { outputFrameNumbers[i] = sequenceCounter; sequenceCounter++; } // Now we should have found the needed Images to calculate, in // case not we add an empty black screen for (int i = 0; i < frameRate; i++) { String addZeros = ""; String outputImageName = outputImageMergedData + "image" + addZeros + outputFrameNumbers[i] + ".png"; if (interviewPod1Images[i] == null) { interviewPod1Images[i] = defaultInterviewImage; } if (interviewPod2Images[i] == null) { interviewPod2Images[i] = defaultInterviewImage; } if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) { String[] argv_imageMagick = new String[] { this.getPathToImageMagick(), "+append", interviewPod1Images[i], interviewPod2Images[i], outputImageName }; returnLog.add(ProcessHelper.executeScript("generateImageSequence", argv_imageMagick)); } else { returnLog.add(processImageWindows(interviewPod1Images[i], interviewPod2Images[i], outputImageName)); } } currentTimeInMilliSeconds += 1000; double cLength = 100 * ((double) currentTimeInMilliSeconds) / completeLengthInSeconds; int progress = Double.valueOf(cLength).intValue(); log.debug("completeLengthInSeconds|currentTimeInMilliSeconds " + completeLengthInSeconds + "|" + currentTimeInMilliSeconds + "|" + progress + "|" + cLength); flvRecordingDaoImpl.updateFlvRecordingProgress(flvRecording.getFlvRecordingId(), progress); if (currentTimeInMilliSeconds >= completeLengthInSeconds) { jobRunning = false; } } // Generate Movie by sequence of Images String imagescomplete = outputImageMergedData + "image%d.png"; String[] argv_generatedMoview = null; String inputScreenFullFlv = streamFolder.getAbsolutePath() + File.separatorChar + "COMPLETE_INTERVIEW_" + flvRecording.getFlvRecordingId() + ".flv"; deleteFileIfExists(inputScreenFullFlv); argv_generatedMoview = new String[] { this.getPathToFFMPEG(), "-i", imagescomplete, "-r", "" + frameRate, "-vcodec", "flv", "-qmax", "1", "-qmin", "1", inputScreenFullFlv }; log.debug("START generateFullBySequenceFLV ################# "); String tString2 = ""; for (int i = 0; i < argv_generatedMoview.length; i++) { tString2 += argv_generatedMoview[i] + " "; } log.debug(tString2); log.debug("END generateFullBySequenceFLV ################# "); returnLog.add(ProcessHelper.executeScript("generateFullBySequenceFLV", argv_generatedMoview)); String hashFileFullNameFlv = "flvRecording_" + flvRecording.getFlvRecordingId() + ".flv"; String outputFullFlv = new File(streamFolderGeneral, hashFileFullNameFlv).getCanonicalPath(); deleteFileIfExists(outputFullFlv); // ffmpeg -vcodec flv -qscale 9.5 -r 25 -ar 22050 -ab 32k -s 320x240 // -i // 65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17_FINAL_WAVE.wav // -i 65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17.flv // final1.flv int flvWidth = 640; int flvHeight = 240; flvRecording.setFlvWidth(flvWidth); flvRecording.setFlvHeight(flvHeight); String[] argv_fullFLV = new String[] { this.getPathToFFMPEG(), // "-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", // "-ab", "32k", // "-s", flvWidth + "x" + flvHeight, // "-vcodec", "flv", // "-r", "" + frameRate, "-qmax", "1", "-qmin", "1", outputFullFlv }; log.debug("START generateFullFLV ################# "); String tString = ""; for (int i = 0; i < argv_fullFLV.length; i++) { tString += argv_fullFLV[i] + " "; // log.debug(" i " + i + " argv-i " + argv_fullFLV[i]); } log.debug(tString); log.debug("END generateFullFLV ################# "); returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV)); flvRecording.setFileHash(hashFileFullNameFlv); // Extract first Image for preview purpose // ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s // 320x240 movie.jpg String hashFileFullNameJPEG = "flvRecording_" + flvRecording.getFlvRecordingId() + ".jpg"; String outPutJpeg = new File(streamFolderGeneral, hashFileFullNameJPEG).getCanonicalPath(); deleteFileIfExists(outPutJpeg); flvRecording.setPreviewImage(hashFileFullNameJPEG); String[] argv_previewFLV = new String[] { // this.getPathToFFMPEG(), // "-i", outputFullFlv, // "-vcodec", "mjpeg", // "-vframes", "100", "-an", // "-f", "rawvideo", // "-s", flvWidth + "x" + flvHeight, // outPutJpeg }; log.debug("START previewFullFLV ################# "); log.debug(argv_previewFLV.toString()); String kString = ""; for (int i = 0; i < argv_previewFLV.length; i++) { kString += argv_previewFLV[i] + " "; } log.debug(kString); log.debug("END previewFullFLV ################# "); returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_previewFLV)); String alternateDownloadName = "flvRecording_" + flvRecording.getFlvRecordingId() + ".avi"; String alternateDownloadFullName = new File(streamFolderGeneral, alternateDownloadName) .getCanonicalPath(); deleteFileIfExists(alternateDownloadFullName); String[] argv_alternateDownload = new String[] { this.getPathToFFMPEG(), "-i", outputFullFlv, alternateDownloadFullName }; log.debug("START alternateDownLoad ################# "); log.debug(argv_previewFLV.toString()); String sString = ""; for (int i = 0; i < argv_alternateDownload.length; i++) { sString += argv_alternateDownload[i] + " "; } log.debug(sString); log.debug("END alternateDownLoad ################# "); returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload)); flvRecording.setAlternateDownload(alternateDownloadName); flvRecordingDaoImpl.updateFlvRecording(flvRecording); flvRecordingLogDaoImpl.deleteFLVRecordingLogByRecordingId(flvRecording.getFlvRecordingId()); for (ConverterProcessResult returnMap : returnLog) { flvRecordingLogDaoImpl.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap); } // Delete Wave Files for (String fileName : listOfFullWaveFiles) { File audio = new File(fileName); if (audio.exists()) { audio.delete(); } } // Delete all Image temp dirs for (FlvRecordingMetaData flvRecordingMetaData : metaDataList) { FileHelper.removeRec(new File(streamFolder, "" + flvRecordingMetaData.getFlvRecordingMetaDataId())); } FileHelper.removeRec(new File(outputImageMergedData)); } catch (Exception err) { log.error("[stripAudioFromFLVs]", err); } }
From source file:org.apache.openmeetings.servlet.outputhandler.BackupExport.java
public void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, ServletContext servletCtx) throws ServletException, IOException { String sid = httpServletRequest.getParameter("sid"); if (sid == null) { sid = "default"; }/* w ww . j a v a 2s . c om*/ log.debug("sid: " + sid); Long users_id = sessiondataDao.checkSession(sid); Long user_level = userManager.getUserLevelByID(users_id); log.debug("users_id: " + users_id); log.debug("user_level: " + user_level); if (authLevelUtil.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 */ File working_dir = OmFileHelper.getUploadBackupDir(); 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); try { performExport(backupFile, backup_dir, includeFiles); httpServletResponse.reset(); httpServletResponse.resetBuffer(); httpServletResponse.setContentType("APPLICATION/OCTET-STREAM"); httpServletResponse.setHeader("Content-Disposition", "attachment; filename=\"" + requestedFile + "\""); httpServletResponse.setHeader("Content-Length", "" + backupFile.length()); OutputStream out = httpServletResponse.getOutputStream(); OmFileHelper.copyFile(backupFile, out); out.flush(); out.close(); } catch (Exception er) { log.error("Error exporting: ", er); } if (backupFile.exists()) { // log.debug("DELETE :1: "+backupFile.getCanonicalPath()); backupFile.delete(); } FileHelper.removeRec(backup_dir); } } else { log.debug("ERROR LangExport: not authorized FileDownload " + (new Date())); } }
From source file:org.apache.openmeetings.servlet.outputhandler.BackupImportController.java
public void performImport(InputStream is) throws Exception { File working_dir = OmFileHelper.getUploadImportDir(); if (!working_dir.exists()) { working_dir.mkdir();/*from w ww. java 2 s. c o m*/ } File f = OmFileHelper.getNewDir(working_dir, "import_" + CalendarPatterns.getTimeForStreamId(new Date())); log.debug("##### WRITE FILE TO: " + f); ZipInputStream zipinputstream = new ZipInputStream(is); ZipEntry zipentry = zipinputstream.getNextEntry(); while (zipentry != null) { String fName = zipentry.getName(); if (File.pathSeparatorChar != '\\' && fName.indexOf('\\') > -1) { fName = fName.replace('\\', '/'); } // for each entry to be extracted File fentry = new File(f, fName); File dir = fentry.isDirectory() ? fentry : fentry.getParentFile(); dir.mkdirs(); if (fentry.isDirectory()) { zipentry = zipinputstream.getNextEntry(); continue; } FileHelper.copy(zipinputstream, fentry); zipinputstream.closeEntry(); zipentry = zipinputstream.getNextEntry(); } zipinputstream.close(); /* * ##################### Import Organizations */ Serializer simpleSerializer = new Persister(); { List<Organisation> list = readList(simpleSerializer, f, "organizations.xml", "organisations", Organisation.class); for (Organisation o : list) { long oldId = o.getOrganisation_id(); o.setOrganisation_id(null); Long newId = organisationManager.addOrganisationObj(o); organisationsMap.put(oldId, newId); } } log.info("Organizations import complete, starting user import"); /* * ##################### Import Users */ { List<User> list = readUserList(f, "users.xml", "users"); for (User u : list) { OmTimeZone tz = u.getOmTimeZone(); if (tz == null || tz.getJname() == null) { String jNameTimeZone = configurationDao.getConfValue("default.timezone", String.class, "Europe/Berlin"); OmTimeZone omTimeZone = omTimeZoneDaoImpl.getOmTimeZone(jNameTimeZone); u.setOmTimeZone(omTimeZone); u.setForceTimeZoneCheck(true); } else { u.setForceTimeZoneCheck(false); } u.setStarttime(new Date()); long userId = u.getUser_id(); u.setUser_id(null); if (u.getSipUser() != null && u.getSipUser().getId() != 0) { u.getSipUser().setId(0); } usersDao.update(u, -1L); usersMap.put(userId, u.getUser_id()); } } log.info("Users import complete, starting room import"); /* * ##################### Import Rooms */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions Serializer serializer = new Persister(strategy, matcher); matcher.bind(Long.class, LongTransform.class); matcher.bind(Integer.class, IntegerTransform.class); registry.bind(User.class, new UserConverter(usersDao, usersMap)); registry.bind(RoomType.class, new RoomTypeConverter(roomManager)); List<Room> list = readList(serializer, f, "rooms.xml", "rooms", Room.class); for (Room r : list) { Long roomId = r.getRooms_id(); // We need to reset ids as openJPA reject to store them otherwise r.setRooms_id(null); if (r.getModerators() != null) { for (Iterator<RoomModerator> i = r.getModerators().iterator(); i.hasNext();) { RoomModerator rm = i.next(); if (rm.getUser().getUser_id() == null) { i.remove(); } } } r = roomDao.update(r, null); roomsMap.put(roomId, r.getRooms_id()); } } log.info("Room import complete, starting room organizations import"); /* * ##################### Import Room Organisations */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(Organisation.class, new OrganisationConverter(orgDao, organisationsMap)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); List<RoomOrganisation> list = readList(serializer, f, "rooms_organisation.xml", "room_organisations", RoomOrganisation.class); for (RoomOrganisation ro : list) { if (!ro.getDeleted()) { // We need to reset this as openJPA reject to store them otherwise ro.setRooms_organisation_id(null); roomManager.addRoomOrganisation(ro); } } } log.info("Room organizations import complete, starting appointement import"); /* * ##################### Import Appointements */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(AppointmentCategory.class, new AppointmentCategoryConverter(appointmentCategoryDaoImpl)); registry.bind(User.class, new UserConverter(usersDao, usersMap)); registry.bind(AppointmentReminderTyps.class, new AppointmentReminderTypeConverter(appointmentReminderTypDaoImpl)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); registry.bind(Date.class, DateConverter.class); List<Appointment> list = readList(serializer, f, "appointements.xml", "appointments", Appointment.class); for (Appointment a : list) { Long appId = a.getAppointmentId(); // We need to reset this as openJPA reject to store them otherwise a.setAppointmentId(null); if (a.getUserId() != null && a.getUserId().getUser_id() == null) { a.setUserId(null); } Long newAppId = appointmentDao.addAppointmentObj(a); appointmentsMap.put(appId, newAppId); } } log.info("Appointement import complete, starting meeting members import"); /* * ##################### Import MeetingMembers * * Reminder Invitations will be NOT send! */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(usersDao, usersMap)); registry.bind(Appointment.class, new AppointmentConverter(appointmentDao, appointmentsMap)); List<MeetingMember> list = readList(serializer, f, "meetingmembers.xml", "meetingmembers", MeetingMember.class); for (MeetingMember ma : list) { if (ma.getUserid() != null && ma.getUserid().getUser_id() == null) { ma.setUserid(null); } if (!ma.getDeleted()) { // We need to reset this as openJPA reject to store them otherwise ma.setMeetingMemberId(null); meetingMemberDao.addMeetingMemberByObject(ma); } } } log.info("Meeting members import complete, starting ldap config import"); /* * ##################### Import LDAP Configs */ { List<LdapConfig> list = readList(simpleSerializer, f, "ldapconfigs.xml", "ldapconfigs", LdapConfig.class, true); for (LdapConfig c : list) { ldapConfigDao.addLdapConfigByObject(c); } } log.info("Ldap config import complete, starting recordings import"); /* * ##################### Import Recordings */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions Serializer serializer = new Persister(strategy, matcher); matcher.bind(Long.class, LongTransform.class); matcher.bind(Integer.class, IntegerTransform.class); registry.bind(Date.class, DateConverter.class); List<FlvRecording> list = readList(serializer, f, "flvRecordings.xml", "flvrecordings", FlvRecording.class, true); for (FlvRecording fr : list) { fr.setFlvRecordingId(0); if (fr.getRoom_id() != null) { fr.setRoom_id(roomsMap.get(fr.getRoom_id())); } if (fr.getOwnerId() != null) { fr.setOwnerId(usersMap.get(fr.getOwnerId())); } if (fr.getFlvRecordingMetaData() != null) { for (FlvRecordingMetaData meta : fr.getFlvRecordingMetaData()) { meta.setFlvRecordingMetaDataId(0); meta.setFlvRecording(fr); } } flvRecordingDao.addFlvRecordingObj(fr); } } log.info("FLVrecording import complete, starting private message folder import"); /* * ##################### Import Private Message Folders */ { List<PrivateMessageFolder> list = readList(simpleSerializer, f, "privateMessageFolder.xml", "privatemessagefolders", PrivateMessageFolder.class, true); for (PrivateMessageFolder p : list) { Long folderId = p.getPrivateMessageFolderId(); PrivateMessageFolder storedFolder = privateMessageFolderDao.getPrivateMessageFolderById(folderId); if (storedFolder == null) { p.setPrivateMessageFolderId(0); Long newFolderId = privateMessageFolderDao.addPrivateMessageFolderObj(p); messageFoldersMap.put(folderId, newFolderId); } } } log.info("Private message folder import complete, starting user contacts import"); /* * ##################### Import User Contacts */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(usersDao, usersMap)); List<UserContact> list = readList(serializer, f, "userContacts.xml", "usercontacts", UserContact.class, true); for (UserContact uc : list) { Long ucId = uc.getUserContactId(); UserContact storedUC = userContactsDao.getUserContacts(ucId); if (storedUC == null && uc.getContact() != null && uc.getContact().getUser_id() != null) { uc.setUserContactId(0); Long newId = userContactsDao.addUserContactObj(uc); userContactsMap.put(ucId, newId); } } } log.info("Usercontact import complete, starting private messages item import"); /* * ##################### Import Private Messages */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(usersDao, usersMap)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); registry.bind(Date.class, DateConverter.class); List<PrivateMessage> list = readList(serializer, f, "privateMessages.xml", "privatemessages", PrivateMessage.class, true); for (PrivateMessage p : list) { p.setPrivateMessageId(0); p.setPrivateMessageFolderId(getNewId(p.getPrivateMessageFolderId(), Maps.MESSAGEFOLDERS)); p.setUserContactId(getNewId(p.getUserContactId(), Maps.USERCONTACTS)); if (p.getRoom() != null && p.getRoom().getRooms_id() == null) { p.setRoom(null); } if (p.getTo() != null && p.getTo().getUser_id() == null) { p.setTo(null); } if (p.getFrom() != null && p.getFrom().getUser_id() == null) { p.setFrom(null); } if (p.getOwner() != null && p.getOwner().getUser_id() == null) { p.setOwner(null); } privateMessagesDao.addPrivateMessageObj(p); } } log.info("Private message import complete, starting file explorer item import"); /* * ##################### Import File-Explorer Items */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions Serializer serializer = new Persister(strategy, matcher); matcher.bind(Long.class, LongTransform.class); matcher.bind(Integer.class, IntegerTransform.class); registry.bind(Date.class, DateConverter.class); List<FileExplorerItem> list = readList(serializer, f, "fileExplorerItems.xml", "fileExplorerItems", FileExplorerItem.class, true); for (FileExplorerItem file : list) { // We need to reset this as openJPA reject to store them otherwise file.setFileExplorerItemId(0); Long roomId = file.getRoom_id(); file.setRoom_id(roomsMap.containsKey(roomId) ? roomsMap.get(roomId) : null); fileExplorerItemDao.addFileExplorerItem(file); } } log.info("File explorer item import complete, starting file poll import"); /* * ##################### Import Room Polls */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); Serializer serializer = new Persister(strategy); registry.bind(User.class, new UserConverter(usersDao, usersMap)); registry.bind(Room.class, new RoomConverter(roomDao, roomsMap)); registry.bind(PollType.class, new PollTypeConverter(pollManager)); registry.bind(Date.class, DateConverter.class); List<RoomPoll> list = readList(serializer, f, "roompolls.xml", "roompolls", RoomPoll.class, true); for (RoomPoll rp : list) { pollManager.savePollBackup(rp); } } log.info("Poll import complete, starting configs import"); /* * ##################### Import Configs */ { Registry registry = new Registry(); Strategy strategy = new RegistryStrategy(registry); RegistryMatcher matcher = new RegistryMatcher(); //TODO need to be removed in the later versions Serializer serializer = new Persister(strategy, matcher); matcher.bind(Long.class, LongTransform.class); registry.bind(Date.class, DateConverter.class); registry.bind(User.class, new UserConverter(usersDao, usersMap)); List<Configuration> list = readList(serializer, f, "configs.xml", "configs", Configuration.class, true); for (Configuration c : list) { Configuration cfg = configurationDao.get(c.getConf_key()); c.setConfiguration_id(cfg == null ? null : cfg.getConfiguration_id()); if (c.getUser() != null && c.getUser().getUser_id() == null) { c.setUser(null); } if ("crypt_ClassName".equals(c.getConf_key())) { try { Class.forName(c.getConf_value()); } catch (ClassNotFoundException e) { c.setConf_value(MD5Implementation.class.getCanonicalName()); } } configurationDao.update(c, -1L); } } log.info("Configs import complete, starting copy of files and folders"); /* * ##################### Import real files and folders */ importFolders(f); log.info("File explorer item import complete, clearing temp files"); FileHelper.removeRec(f); }