You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2021/09/15 14:58:34 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2666] Backup
import is improved
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 <so...@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() {