This is an automated email from the ASF dual-hosted git repository. solomax pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push: new b5bfab6 [OPENMEETINGS-2666] Backup import is improved b5bfab6 is described below commit b5bfab61c613963a7ca455d819df28fa8e997264 Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Wed Sep 15 21:58:25 2021 +0700 [OPENMEETINGS-2666] Backup import is improved --- .../apache/openmeetings/backup/BackupImport.java | 168 +++++++++++---------- 1 file changed, 89 insertions(+), 79 deletions(-) diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java index 8a66ea9..da0143d 100644 --- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java +++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java @@ -151,7 +151,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -230,7 +229,6 @@ import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.db.entity.user.UserContact; import org.apache.openmeetings.db.util.AuthLevelUtil; import org.apache.openmeetings.db.util.XmlHelper; -import org.apache.openmeetings.util.CalendarPatterns; import org.apache.openmeetings.util.OmFileHelper; import org.apache.openmeetings.util.StoredFile; import org.apache.openmeetings.util.crypt.SCryptImplementation; @@ -382,7 +380,7 @@ public class BackupImport { } private static File unzip(InputStream is) throws IOException { - File f = OmFileHelper.getNewDir(OmFileHelper.getUploadImportDir(), "import_" + CalendarPatterns.getTimeForStreamId(new Date())); + File f = OmFileHelper.getNewDir(OmFileHelper.getUploadImportDir(), randomUUID().toString()); log.debug("##### EXTRACTING BACKUP TO: {}", f); try (ZipInputStream zis = new ZipInputStream(is)) { @@ -406,86 +404,98 @@ public class BackupImport { } public void performImport(InputStream is, ProgressHolder progressHolder) throws Exception { - progressHolder.setProgress(0); - cleanup(); - messageFolderMap.put(INBOX_FOLDER_ID, INBOX_FOLDER_ID); - messageFolderMap.put(SENT_FOLDER_ID, SENT_FOLDER_ID); - messageFolderMap.put(TRASH_FOLDER_ID, TRASH_FOLDER_ID); - - File f = unzip(is); - - BackupVersion ver = getVersion(f); - progressHolder.setProgress(2); - importConfigs(f); - progressHolder.setProgress(7); - importGroups(f); - progressHolder.setProgress(12); - importLdap(f); - progressHolder.setProgress(17); - importOauth(f); - progressHolder.setProgress(22); - importUsers(f); - progressHolder.setProgress(27); - importRooms(f); - progressHolder.setProgress(32); - importRoomGroups(f); - progressHolder.setProgress(37); - importChat(f); - progressHolder.setProgress(42); - importCalendars(f); - progressHolder.setProgress(47); - importAppointments(f); - progressHolder.setProgress(52); - importMeetingMembers(f); - progressHolder.setProgress(57); - importRecordings(f); - progressHolder.setProgress(62); - importPrivateMsgFolders(f); - progressHolder.setProgress(67); - importContacts(f); - progressHolder.setProgress(72); - importPrivateMsgs(f); - progressHolder.setProgress(77); - List<FileItem> files = importFiles(f); - progressHolder.setProgress(82); - importPolls(f); - progressHolder.setProgress(87); - importRoomFiles(f); - progressHolder.setProgress(92); - importExtraMenus(f); - progressHolder.setProgress(95); - - log.info("Extra menus import complete, starting copy of files and folders"); - /* - * ##################### Import real files and folders - */ - importFolders(f); - progressHolder.setProgress(97); - - if (ver.compareTo(BackupVersion.get("4.0.0")) < 0) { - for (FileItem bfi : files) { - if (bfi.isDeleted()) { - continue; - } - if (BaseFileItem.Type.PRESENTATION == bfi.getType()) { - convertOldPresentation(bfi); - fileItemDao.updateBase(bfi); - } - if (BaseFileItem.Type.WML_FILE == bfi.getType()) { - try { - Whiteboard wb = WbConverter.convert(bfi); - wb.save(bfi.getFile().toPath()); - } catch (Exception e) { - log.error("Unexpected error while converting WB", e); + File f = null; + boolean success = false; + try { + progressHolder.setProgress(0); + cleanup(); + messageFolderMap.put(INBOX_FOLDER_ID, INBOX_FOLDER_ID); + messageFolderMap.put(SENT_FOLDER_ID, SENT_FOLDER_ID); + messageFolderMap.put(TRASH_FOLDER_ID, TRASH_FOLDER_ID); + + f = unzip(is); + + BackupVersion ver = getVersion(f); + progressHolder.setProgress(2); + importConfigs(f); + progressHolder.setProgress(7); + importGroups(f); + progressHolder.setProgress(12); + importLdap(f); + progressHolder.setProgress(17); + importOauth(f); + progressHolder.setProgress(22); + importUsers(f); + progressHolder.setProgress(27); + importRooms(f); + progressHolder.setProgress(32); + importRoomGroups(f); + progressHolder.setProgress(37); + importChat(f); + progressHolder.setProgress(42); + importCalendars(f); + progressHolder.setProgress(47); + importAppointments(f); + progressHolder.setProgress(52); + importMeetingMembers(f); + progressHolder.setProgress(57); + importRecordings(f); + progressHolder.setProgress(62); + importPrivateMsgFolders(f); + progressHolder.setProgress(67); + importContacts(f); + progressHolder.setProgress(72); + importPrivateMsgs(f); + progressHolder.setProgress(77); + List<FileItem> files = importFiles(f); + progressHolder.setProgress(82); + importPolls(f); + progressHolder.setProgress(87); + importRoomFiles(f); + progressHolder.setProgress(92); + importExtraMenus(f); + progressHolder.setProgress(95); + + log.info("Extra menus import complete, starting copy of files and folders"); + /* + * ##################### Import real files and folders + */ + importFolders(f); + progressHolder.setProgress(97); + + if (ver.compareTo(BackupVersion.get("4.0.0")) < 0) { + for (FileItem bfi : files) { + if (bfi.isDeleted()) { + continue; + } + if (BaseFileItem.Type.PRESENTATION == bfi.getType()) { + convertOldPresentation(bfi); + fileItemDao.updateBase(bfi); + } + if (BaseFileItem.Type.WML_FILE == bfi.getType()) { + try { + Whiteboard wb = WbConverter.convert(bfi); + wb.save(bfi.getFile().toPath()); + } catch (Exception e) { + log.error("Unexpected error while converting WB", e); + } } } } + log.info("File explorer item import complete"); + success = true; + } catch (Exception e) { + throw e; + } finally { + if (f != null) { + log.info("Clearing temp files ..."); + FileUtils.deleteDirectory(f); + } + cleanup(); + if (success) { + progressHolder.setProgress(100); + } } - log.info("File explorer item import complete, clearing temp files"); - - FileUtils.deleteDirectory(f); - cleanup(); - progressHolder.setProgress(100); } void cleanup() {