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() {

Reply via email to