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 2017/10/13 05:34:56 UTC
openmeetings git commit: [OPENMEETINGS-1720] presentations are
converted during backup
Repository: openmeetings
Updated Branches:
refs/heads/master 955930b51 -> 4225fdb5b
[OPENMEETINGS-1720] presentations are converted during backup
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/4225fdb5
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/4225fdb5
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/4225fdb5
Branch: refs/heads/master
Commit: 4225fdb5b9cb908bc282acc9b72936e20cbef13e
Parents: 955930b
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Fri Oct 13 12:34:48 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Fri Oct 13 12:34:48 2017 +0700
----------------------------------------------------------------------
.../core/data/file/FileProcessor.java | 4 +-
.../db/entity/file/BaseFileItem.java | 79 ++++++++++++--------
.../openmeetings/backup/BackupImport.java | 28 ++++++-
.../openmeetings/backup/BackupVersion.java | 5 ++
.../web/common/tree/DownloadMenuItem.java | 36 +--------
5 files changed, 84 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4225fdb5/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
index 438f1ed..4714836 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
@@ -54,7 +54,7 @@ public class FileProcessor {
@Autowired
private ImageConverter imageConverter;
@Autowired
- private DocumentConverter generatePDF;
+ private DocumentConverter docConverter;
//TODO this method need to be refactored to throw exceptions
public ProcessResultList processFile(FileItem f, InputStream is) throws Exception {
@@ -111,7 +111,7 @@ public class FileProcessor {
if (isOffice || isPdf) {
copyFile(temp, file);
// convert to pdf, thumbs, swf and xml-description
- result = generatePDF.convertPDF(f, sf);
+ result = docConverter.convertPDF(f, sf);
} else if (isChart) {
//TODO should be implemented
log.debug("uploaded chart file");
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4225fdb5/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
index a1f9ab2..20b4a80 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
@@ -31,7 +31,10 @@ import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
import static org.apache.openmeetings.util.OmFileHelper.getUploadWmlDir;
import java.io.File;
+import java.io.FileFilter;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -49,6 +52,7 @@ import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlType;
import org.apache.openmeetings.db.entity.HistoricalEntity;
+import org.apache.openmeetings.util.OmFileHelper;
import org.simpleframework.xml.Element;
@Entity
@@ -295,6 +299,20 @@ public abstract class BaseFileItem extends HistoricalEntity {
return f;
}
+ public final File getOriginal() {
+ File f = getFile(null);
+ if (f != null) {
+ File p = f.getParentFile();
+ if (p != null && p.exists()) {
+ File[] ff = p.listFiles(new OriginalFilter());
+ if (ff != null && ff.length > 0) {
+ f = ff[0];
+ }
+ }
+ }
+ return f;
+ }
+
public final boolean exists() {
return exists(null);
}
@@ -312,50 +330,51 @@ public abstract class BaseFileItem extends HistoricalEntity {
final int prime = 31;
int result = 1;
result = prime * result + ((hash == null) ? 0 : hash.hashCode());
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((ownerId == null) ? 0 : ownerId.hashCode());
- result = prime * result + ((parentId == null) ? 0 : parentId.hashCode());
- result = prime * result + ((roomId == null) ? 0 : roomId.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
- if (this == obj)
+ if (this == obj) {
return true;
- if (obj == null)
+ }
+ if (obj == null) {
return false;
- if (getClass() != obj.getClass())
+ }
+ if (getClass() != obj.getClass()) {
return false;
+ }
BaseFileItem other = (BaseFileItem) obj;
if (hash == null) {
- if (other.hash != null)
- return false;
- } else if (!hash.equals(other.hash))
- return false;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- if (ownerId == null) {
- if (other.ownerId != null)
- return false;
- } else if (!ownerId.equals(other.ownerId))
- return false;
- if (parentId == null) {
- if (other.parentId != null)
- return false;
- } else if (!parentId.equals(other.parentId))
- return false;
- if (roomId == null) {
- if (other.roomId != null)
+ if (other.hash != null) {
return false;
- } else if (!roomId.equals(other.roomId))
+ }
+ } else if (!hash.equals(other.hash)) {
return false;
- if (type != other.type)
+ }
+ if (type != other.type) {
return false;
+ }
return true;
}
+
+ private class OriginalFilter implements FileFilter {
+ Set<String> exclusions = new HashSet<>();
+
+ OriginalFilter() {
+ exclusions.add(EXTENSION_JPG);
+ exclusions.add("swf");
+ if (Type.Presentation == getType()) {
+ exclusions.add(EXTENSION_PDF);
+ }
+ }
+
+ @Override
+ public boolean accept(File f) {
+ String n = f.getName();
+ String ext = OmFileHelper.getFileExt(n);
+ return n.startsWith(getHash()) && !exclusions.contains(ext);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4225fdb5/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
----------------------------------------------------------------------
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 99594f5..53b239e 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
@@ -34,6 +34,7 @@ import static org.apache.openmeetings.util.OmFileHelper.PROFILES_DIR;
import static org.apache.openmeetings.util.OmFileHelper.PROFILES_PREFIX;
import static org.apache.openmeetings.util.OmFileHelper.RECORDING_FILE_NAME;
import static org.apache.openmeetings.util.OmFileHelper.THUMB_IMG_PREFIX;
+import static org.apache.openmeetings.util.OmFileHelper.getFileExt;
import static org.apache.openmeetings.util.OmFileHelper.getFileName;
import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
import static org.apache.openmeetings.util.OmFileHelper.getUploadDir;
@@ -137,6 +138,7 @@ import org.apache.openmeetings.backup.converter.RoomConverter;
import org.apache.openmeetings.backup.converter.RoomTypeConverter;
import org.apache.openmeetings.backup.converter.SalutationConverter;
import org.apache.openmeetings.backup.converter.UserConverter;
+import org.apache.openmeetings.core.converter.DocumentConverter;
import org.apache.openmeetings.db.dao.basic.ChatDao;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
@@ -184,6 +186,7 @@ import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.db.util.TimezoneUtil;
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;
import org.apache.wicket.util.string.Strings;
import org.red5.logging.Red5LoggerFactory;
@@ -316,6 +319,8 @@ public class BackupImport {
private OAuth2Dao auth2Dao;
@Autowired
private GroupDao groupDao;
+ @Autowired
+ private DocumentConverter docConverter;
private final Map<Long, Long> userMap = new HashMap<>();
private final Map<Long, Long> groupMap = new HashMap<>();
@@ -398,7 +403,7 @@ public class BackupImport {
importPrivateMsgFolders(f, simpleSerializer);
importContacts(f);
importPrivateMsgs(f);
- importFiles(f);
+ importFiles(f, ver.compareTo(BackupVersion.get("4.0.0")) < 0);
importPolls(f);
importRoomFiles(f);
@@ -408,6 +413,13 @@ public class BackupImport {
*/
importFolders(f);
+ if (ver.compareTo(BackupVersion.get("4.0.0")) < 0) {
+ for (BaseFileItem bfi : fileItemDao.get()) {
+ if (BaseFileItem.Type.Presentation == bfi.getType()) {
+ convertOldPresentation(bfi);
+ }
+ }
+ }
log.info("File explorer item import complete, clearing temp files");
FileUtils.deleteDirectory(f);
@@ -835,7 +847,7 @@ public class BackupImport {
/*
* ##################### Import File-Explorer Items
*/
- private void importFiles(File f) throws Exception {
+ private void importFiles(File f, boolean old) throws Exception {
log.info("Private message import complete, starting file explorer item import");
List<FileItem> list = readFileItemList(f, "fileExplorerItems.xml", "fileExplorerItems");
for (FileItem file : list) {
@@ -1488,4 +1500,16 @@ public class BackupImport {
}
return countries.getProperty(String.format("country.%s", countryId));
}
+
+ private void convertOldPresentation(BaseFileItem bfi) {
+ File f = bfi.getOriginal();
+ if (f != null && f.exists()) {
+ try {
+ StoredFile sf = new StoredFile(bfi.getHash(), getFileExt(f.getName()), f);
+ docConverter.convertPDF((FileItem)bfi, sf);
+ } catch (Exception e) {
+ log.error("Unexpected exception while converting OLD format presentations", e);
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4225fdb5/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java
index 6b010cb..740ddeb 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupVersion.java
@@ -140,4 +140,9 @@ public class BackupVersion implements Serializable, Comparable<BackupVersion> {
}
return true;
}
+
+ @Override
+ public String toString() {
+ return String.format("%s.%s.%s", major, minor, micro);
+ }
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4225fdb5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
index f21d9fe..56e87ad 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
@@ -18,17 +18,10 @@
*/
package org.apache.openmeetings.web.common.tree;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
-
import java.io.File;
-import java.io.FileFilter;
-import java.util.HashSet;
-import java.util.Set;
import org.apache.openmeetings.db.entity.file.BaseFileItem;
import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
-import org.apache.openmeetings.util.OmFileHelper;
import org.apache.wicket.ajax.AjaxRequestTarget;
import com.googlecode.wicket.jquery.ui.JQueryIcon;
@@ -57,36 +50,11 @@ public class DownloadMenuItem extends MenuItem {
@Override
public void onClick(AjaxRequestTarget target) {
BaseFileItem fi = tree.getLastSelected();
- File f = fi.getFile(ext);
+ File f = ext == null && (Type.Image == fi.getType() || Type.Presentation == fi.getType())
+ ? fi.getOriginal() : fi.getFile(ext);
if (f != null && f.exists()) {
- if (ext == null && (Type.Image == fi.getType() || Type.Presentation == fi.getType())) {
- File[] ff = f.getParentFile().listFiles(new OriginalFilter(fi));
- if (ff != null && ff.length > 0) {
- f = ff[0];
- }
- }
tree.dwnldFile = f;
tree.downloader.initiate(target);
}
}
-
- private static class OriginalFilter implements FileFilter {
- final BaseFileItem fi;
- Set<String> exclusions = new HashSet<>();
-
- OriginalFilter(BaseFileItem fi) {
- this.fi = fi;
- exclusions.add(EXTENSION_JPG);
- if (Type.Presentation == fi.getType()) {
- exclusions.add(EXTENSION_PDF);
- }
- }
-
- @Override
- public boolean accept(File f) {
- String n = f.getName();
- String ext = OmFileHelper.getFileExt(n);
- return n.startsWith(fi.getHash()) && !exclusions.contains(ext);
- }
- }
}