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/09/13 17:16:25 UTC
[3/3] openmeetings git commit: [OPENMEETINGS-1671] DB related part of
work seems to be done
[OPENMEETINGS-1671] DB related part of work seems to be done
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/7b5cd392
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/7b5cd392
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/7b5cd392
Branch: refs/heads/OPENMEETINGS-1671-room-files
Commit: 7b5cd392ae57443d898cb00bb134e6acfbd6bdc5
Parents: da7a4ff
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu Sep 14 00:16:12 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu Sep 14 00:16:12 2017 +0700
----------------------------------------------------------------------
.../core/converter/DocumentConverter.java | 4 +-
.../core/converter/FlvExplorerConverter.java | 10 +-
.../core/converter/ImageConverter.java | 4 +-
.../core/data/file/FileProcessor.java | 11 +-
.../LoadLibraryPresentationToObject.java | 12 +-
.../core/remote/ConferenceLibrary.java | 12 +-
.../core/remote/RecordingService.java | 2 +-
.../core/remote/ScopeApplicationAdapter.java | 12 +-
.../db/dao/file/FileExplorerItemDao.java | 337 -----------------
.../openmeetings/db/dao/file/FileItemDao.java | 338 ++++++++++++++++++
.../db/dao/file/FileItemLogDao.java | 10 +-
.../db/dto/file/FileExplorerItemDTO.java | 205 -----------
.../db/dto/file/FileExplorerObject.java | 22 +-
.../openmeetings/db/dto/file/FileItemDTO.java | 205 +++++++++++
.../db/dto/file/PresentationObject.java | 24 +-
.../db/entity/file/BaseFileItem.java | 357 +++++++++++++++++++
.../db/entity/file/FileExplorerItem.java | 108 ------
.../openmeetings/db/entity/file/FileItem.java | 343 +++---------------
.../db/entity/file/FileItemLog.java | 2 +-
.../db/entity/record/Recording.java | 35 +-
.../openmeetings/db/entity/room/Room.java | 2 +-
.../openmeetings/db/entity/room/RoomFile.java | 42 ++-
.../conference/whiteboard/dynamicFileName.lzx | 2 +-
.../openmeetings/backup/BackupExport.java | 8 +-
.../openmeetings/backup/BackupImport.java | 38 +-
.../java/org/apache/openmeetings/cli/Admin.java | 4 +-
.../apache/openmeetings/cli/CleanupHelper.java | 10 +-
.../openmeetings/web/admin/AdminPanel.html | 12 -
.../openmeetings/web/admin/AdminPanel.java | 12 +
.../openmeetings/web/admin/rooms/RoomForm.java | 1 +
.../web/admin/rooms/RoomsPanel.html | 9 +
.../web/common/tree/ConvertingErrorsDialog.java | 12 +-
.../web/common/tree/DownloadMenuItem.java | 10 +-
.../web/common/tree/FileItemPanel.java | 8 +-
.../web/common/tree/FileItemTree.java | 30 +-
.../web/common/tree/FileTreePanel.java | 54 +--
.../web/common/tree/FolderPanel.java | 32 +-
.../web/common/tree/OmTreeProvider.java | 48 +--
.../web/room/RoomFileResourceReference.java | 8 +-
.../apache/openmeetings/web/room/RoomPanel.java | 16 +-
.../web/room/RoomPdfResourceReference.java | 8 +-
.../web/room/RoomResourceReference.java | 22 +-
.../web/room/sidebar/RoomFilePanel.java | 8 +-
.../web/room/sidebar/UploadDialog.java | 10 +-
.../dashboard/admin/AdminCleanupInfoDialog.java | 4 +-
.../user/record/RecordingResourceReference.java | 2 +-
.../web/user/record/RecordingsPanel.java | 4 +-
.../openmeetings/web/user/record/VideoInfo.java | 6 +-
.../web/user/record/VideoPlayer.java | 4 +-
.../web/util/FileItemResourceReference.java | 4 +-
.../classes/META-INF/db2_persistence.xml | 34 +-
.../classes/META-INF/derby_persistence.xml | 34 +-
.../classes/META-INF/mssql_persistence.xml | 34 +-
.../classes/META-INF/mysql_persistence.xml | 34 +-
.../classes/META-INF/oracle_persistence.xml | 34 +-
.../classes/META-INF/postgresql_persistence.xml | 34 +-
.../WEB-INF/classes/applicationContext.xml | 2 +-
.../test/webservice/TestFileService.java | 14 +-
.../openmeetings/webservice/FileWebService.java | 58 +--
59 files changed, 1409 insertions(+), 1352 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
index 499d69b..e790b6d 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
@@ -26,7 +26,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import java.io.File;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
import org.apache.openmeetings.util.StoredFile;
import org.apache.openmeetings.util.process.ConverterProcessResult;
import org.apache.openmeetings.util.process.ConverterProcessResultList;
@@ -49,7 +49,7 @@ public class DocumentConverter {
@Autowired
private ImageConverter imageConverter;
- public ConverterProcessResultList convertPDF(FileExplorerItem f, StoredFile sf) throws Exception {
+ public ConverterProcessResultList convertPDF(FileItem f, StoredFile sf) throws Exception {
ConverterProcessResultList result = new ConverterProcessResultList();
boolean fullProcessing = !sf.isPdf();
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
index 60ae550..2079be9 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
@@ -29,9 +29,9 @@ import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
-import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.dao.file.FileItemDao;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
import org.apache.openmeetings.util.process.ConverterProcessResult;
import org.apache.openmeetings.util.process.ProcessHelper;
import org.red5.logging.Red5LoggerFactory;
@@ -43,9 +43,9 @@ public class FlvExplorerConverter extends BaseConverter {
// Spring loaded Beans
@Autowired
- private FileExplorerItemDao fileDao;
+ private FileItemDao fileDao;
- public List<ConverterProcessResult> convertToMP4(FileExplorerItem f, String ext) {
+ public List<ConverterProcessResult> convertToMP4(FileItem f, String ext) {
List<ConverterProcessResult> logs = new ArrayList<>();
try {
File mp4 = f.getFile(EXTENSION_MP4);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
index df62bb2..e9fe235 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
@@ -31,7 +31,7 @@ import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.util.StoredFile;
@@ -48,7 +48,7 @@ public class ImageConverter extends BaseConverter {
@Autowired
private UserDao userDao;
- public ConverterProcessResultList convertImage(FileItem f, StoredFile sf) throws IOException {
+ public ConverterProcessResultList convertImage(BaseFileItem f, StoredFile sf) throws IOException {
ConverterProcessResultList returnMap = new ConverterProcessResultList();
File jpg = f.getFile(EXTENSION_JPG);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/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 8c4b620..170dbbc 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
@@ -31,9 +31,9 @@ import java.util.UUID;
import org.apache.openmeetings.core.converter.DocumentConverter;
import org.apache.openmeetings.core.converter.FlvExplorerConverter;
import org.apache.openmeetings.core.converter.ImageConverter;
-import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.dao.file.FileItemDao;
+import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
+import org.apache.openmeetings.db.entity.file.FileItem;
import org.apache.openmeetings.util.StoredFile;
import org.apache.openmeetings.util.process.ConverterProcessResult;
import org.apache.openmeetings.util.process.ConverterProcessResultList;
@@ -48,14 +48,14 @@ public class FileProcessor {
@Autowired
private FlvExplorerConverter flvExplorerConverter;
@Autowired
- private FileExplorerItemDao fileDao;
+ private FileItemDao fileDao;
@Autowired
private ImageConverter imageConverter;
@Autowired
private DocumentConverter generatePDF;
//FIXME TODO this method need to be refactored to throw exceptions
- public ConverterProcessResultList processFile(FileExplorerItem f, InputStream is) throws Exception {
+ public ConverterProcessResultList processFile(FileItem f, InputStream is) throws Exception {
ConverterProcessResultList result = new ConverterProcessResultList();
// Generate a random string to prevent any problems with
// foreign characters and duplicates
@@ -136,6 +136,7 @@ public class FileProcessor {
result.setCompleteName(file.getName());
result.setFileItemId(f.getId());
} catch (Exception e) {
+ log.debug("Error while processing the file", e);
result.addItem("exception", new ConverterProcessResult("Unexpected exception: " + e.getMessage()));
throw e;
} finally {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java
index 581d333..89ec1c5 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LoadLibraryPresentationToObject.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.core.documents;
import java.util.Iterator;
import java.util.LinkedList;
-import org.apache.openmeetings.db.dto.file.FileExplorerItemDTO;
+import org.apache.openmeetings.db.dto.file.FileItemDTO;
import org.apache.openmeetings.db.dto.file.PresentationObject;
import org.apache.openmeetings.util.OpenmeetingsVariables;
import org.dom4j.Document;
@@ -81,11 +81,11 @@ public class LoadLibraryPresentationToObject {
}
}
- public FileExplorerItemDTO createListObjectLibraryByFileDocument(Element fileElement){
+ public FileItemDTO createListObjectLibraryByFileDocument(Element fileElement){
try {
log.info("createListObjectLibraryByFileDocument"+fileElement);
- FileExplorerItemDTO fileObject = new FileExplorerItemDTO();
+ FileItemDTO fileObject = new FileItemDTO();
fileObject.setName(fileElement.getText());
//FIXME TODO fileObject.setLastModified(fileElement.attribute("lastmod").getText());
//FIXME TODO fileObject.setSize(fileElement.attribute("size").getText());
@@ -96,15 +96,15 @@ public class LoadLibraryPresentationToObject {
return null;
}
- public LinkedList<FileExplorerItemDTO> createListObjectLibraryByFileDocumentThumbs(Element fileElement){
+ public LinkedList<FileItemDTO> createListObjectLibraryByFileDocumentThumbs(Element fileElement){
try {
- LinkedList<FileExplorerItemDTO> thumbMap = new LinkedList<>();
+ LinkedList<FileItemDTO> thumbMap = new LinkedList<>();
for (Iterator<Element> i = fileElement.elementIterator(); i.hasNext(); ) {
Element thumbElement = i.next();
log.info("createListObjectLibraryByFileDocumentThumbs"+thumbElement);
- FileExplorerItemDTO singleThumb = new FileExplorerItemDTO();
+ FileItemDTO singleThumb = new FileItemDTO();
singleThumb.setName(thumbElement.getName());
//FIXME TODO singleThumb.setFileNamePure(thumbElement.getText());
//FIXME TODO singleThumb.setLastModified(thumbElement.attribute("lastmod").getText());
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
index ca77ff9..da8c6c9 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
@@ -29,13 +29,13 @@ import org.apache.openmeetings.core.data.whiteboard.WhiteboardManager;
import org.apache.openmeetings.core.documents.LibraryChartLoader;
import org.apache.openmeetings.core.documents.LibraryDocumentConverter;
import org.apache.openmeetings.core.documents.LibraryWmlLoader;
-import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.file.FileItemDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dao.server.SessiondataDao;
import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
+import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
import org.apache.openmeetings.db.entity.room.StreamClient;
import org.apache.openmeetings.db.entity.server.Sessiondata;
import org.apache.openmeetings.db.util.AuthLevelUtil;
@@ -61,7 +61,7 @@ public class ConferenceLibrary implements IPendingServiceCallback {
@Autowired
private UserDao userDao;
@Autowired
- private FileExplorerItemDao fileDao;
+ private FileItemDao fileDao;
@Autowired
private WhiteboardManager whiteboardManager;
@Autowired
@@ -92,7 +92,7 @@ public class ConferenceLibrary implements IPendingServiceCallback {
log.debug("saveAsObject" + tObject.size());
- FileExplorerItem file = fileDao.add(fileName, null, null, roomId, sd.getUserId(), Type.WmlFile, "", "");
+ FileItem file = fileDao.add(fileName, null, null, roomId, sd.getUserId(), Type.WmlFile, "", "");
LibraryDocumentConverter.writeToLocalFolder(file.getHash(), tObject);
return file.getId();
@@ -111,7 +111,7 @@ public class ConferenceLibrary implements IPendingServiceCallback {
* @param wbId - id of whiteboard
* @param fi - FileItem of the Wml being loaded
*/
- public void sendToWhiteboard(String uid, Long wbId, FileItem fi) {
+ public void sendToWhiteboard(String uid, Long wbId, BaseFileItem fi) {
StreamClient client = sessionManager.get(uid);
if (client == null) {
log.warn("No client was found to send Wml:: {}", uid);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
index c6ebddc..a7d7985 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
@@ -36,7 +36,7 @@ import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
import org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao;
import org.apache.openmeetings.db.dao.server.ISessionManager;
import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.db.entity.record.RecordingMetaData;
import org.apache.openmeetings.db.entity.record.RecordingMetaData.Status;
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
index 47cc25e..8c28f6c 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
@@ -63,7 +63,7 @@ import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.room.BrowserStatus;
import org.apache.openmeetings.db.dto.room.RoomStatus;
import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
import org.apache.openmeetings.db.entity.log.ConferenceLog;
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.room.Room.RoomElement;
@@ -1125,7 +1125,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
}
}
- private static Point getSize(FileItem fi) {
+ private static Point getSize(BaseFileItem fi) {
Point result = new Point(0, 0);
if (fi.getWidth() != null && fi.getHeight() != null) {
result.x = fi.getWidth();
@@ -1134,7 +1134,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
return result;
}
- private static List<?> getWbObject(FileItem fi, String url) {
+ private static List<?> getWbObject(BaseFileItem fi, String url) {
Point size = getSize(fi);
String type = "n/a";
switch (fi.getType()) {
@@ -1178,7 +1178,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
);
}
- private static List<?> getMp4WbObject(FileItem fi, String url) {
+ private static List<?> getMp4WbObject(BaseFileItem fi, String url) {
Point size = getSize(fi);
return Arrays.asList(
"flv" // 0: 'flv'
@@ -1198,7 +1198,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
);
}
- private static void copyFileToRoom(Long roomId, FileItem f) {
+ private static void copyFileToRoom(Long roomId, BaseFileItem f) {
try {
if (roomId != null && f != null) {
File mp4 = f.getFile(EXTENSION_MP4);
@@ -1215,7 +1215,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
}
}
- public void sendToWhiteboard(String uid, Long wbId, FileItem fi, String url, boolean clean) {
+ public void sendToWhiteboard(String uid, Long wbId, BaseFileItem fi, String url, boolean clean) {
StreamClient client = sessionManager.get(uid);
List<?> wbObject = new ArrayList<>();
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
deleted file mode 100644
index de6c582..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") + you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.dao.file;
-
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
-
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * @author sebastianwagner
- *
- */
-@Transactional
-public class FileExplorerItemDao {
- private static final Logger log = Red5LoggerFactory.getLogger(FileExplorerItemDao.class, webAppRootKey);
- @PersistenceContext
- private EntityManager em;
-
- public FileExplorerItem add(String fileName, Long parentId, Long ownerId, Long roomId, Long insertedBy,
- Type type, String externalId, String externalType) {
- log.debug(".add(): adding file " + fileName + " roomID: " + roomId);
- try {
- FileExplorerItem fileItem = new FileExplorerItem();
- fileItem.setName(fileName);
- fileItem.setHash(UUID.randomUUID().toString());
- fileItem.setDeleted(false);
- fileItem.setParentId(parentId);
- fileItem.setOwnerId(ownerId);
- fileItem.setRoomId(roomId);
- fileItem.setInserted(new Date());
- fileItem.setInsertedBy(insertedBy);
- fileItem.setType(type);
- fileItem.setUpdated(new Date());
- fileItem.setExternalId(externalId);
- fileItem.setExternalType(externalType);
-
- fileItem = em.merge(fileItem);
-
- log.debug(".add(): file " + fileName + " added as " + fileItem.getId());
- return fileItem;
- } catch (Exception ex2) {
- log.error(".add(): ", ex2);
- }
- return null;
- }
-
- public List<FileExplorerItem> getFileExplorerItemsByRoomAndOwner(Long roomId, Long ownerId) {
- log.debug(".getFileExplorerItemsByRoomAndOwner() started");
- try {
- TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFilesByRoomAndOwner", FileExplorerItem.class);
- query.setParameter("roomId", roomId);
- query.setParameter("ownerId", ownerId);
-
- List<FileExplorerItem> fileExplorerList = query.getResultList();
-
- return fileExplorerList;
- } catch (Exception ex2) {
- log.error("[getFileExplorerItemsByRoomAndOwner]: ", ex2);
- }
- return null;
- }
-
- public List<FileExplorerItem> getByRoom(Long roomId) {
- log.debug("getFileExplorerItemsByRoom roomId :: " + roomId);
- return em.createNamedQuery("getFilesByRoom", FileExplorerItem.class).setParameter("roomId", roomId).getResultList();
- }
-
- public List<FileExplorerItem> getByOwner(Long ownerId) {
- log.debug("getByOwner() started");
- TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFilesByOwner", FileExplorerItem.class);
- query.setParameter("ownerId", ownerId);
-
- return query.getResultList();
- }
-
- public List<FileExplorerItem> getByGroup(Long groupId) {
- log.debug("getByGroup() started");
- return em.createNamedQuery("getFileByGroup", FileExplorerItem.class)
- .setParameter("groupId", groupId)
- .getResultList();
- }
-
- public List<FileExplorerItem> getByGroup(Long groupId, List<Type> filter) {
- if (filter == null) {
- return getByGroup(groupId);
- }
- log.debug("getByGroup() started");
- return em.createNamedQuery("getFileFilteredByGroup", FileExplorerItem.class)
- .setParameter("filter", filter)
- .setParameter("groupId", groupId)
- .getResultList();
- }
-
- public List<FileExplorerItem> getByParent(Long parentId) {
- log.debug("getByParent() started");
- return em.createNamedQuery("getFilesByParent", FileExplorerItem.class)
- .setParameter("parentId", parentId)
- .getResultList();
- }
-
- public List<FileExplorerItem> getByParent(Long parentId, List<Type> filter) {
- if (filter == null) {
- return getByParent(parentId);
- }
- log.debug("getByParent(filter) started");
- return em.createNamedQuery("getFilesFilteredByParent", FileExplorerItem.class)
- .setParameter("filter", filter)
- .setParameter("parentId", parentId)
- .getResultList();
- }
-
- public FileExplorerItem getByHash(String hash) {
- log.debug("getByHash() started");
- FileExplorerItem f = null;
- TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileByHash", FileExplorerItem.class);
- query.setParameter("hash", hash);
-
- try {
- f = query.getSingleResult();
- } catch (NoResultException ex) {
- //no-op
- }
- return f;
- }
-
- public FileExplorerItem get(Long id) {
- FileExplorerItem f = null;
- if (id != null && id > 0) {
- TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileById", FileExplorerItem.class)
- .setParameter("id", id);
-
- try {
- f = query.getSingleResult();
- } catch (NoResultException ex) {
- }
- } else {
- log.info("[get] " + "Info: No id given");
- }
- return f;
- }
-
- public FileExplorerItem get(String externalId, String externalType) {
- FileExplorerItem f = null;
- log.debug("get started");
-
- try {
- TypedQuery<FileExplorerItem> query = em.createNamedQuery("getFileExternal", FileExplorerItem.class)
- .setParameter("externalFileId", externalId).setParameter("externalType", externalType);
-
- try {
- f = query.getSingleResult();
- } catch (NoResultException ex) {
- }
-
- } catch (Exception ex2) {
- log.error("[get]: ", ex2);
- }
- return f;
- }
-
- public List<FileExplorerItem> get() {
- log.debug("get started");
-
- return em.createNamedQuery("getAllFiles", FileExplorerItem.class).getResultList();
- }
-
- public void delete(FileExplorerItem f) {
- f.setDeleted(true);
- f.setUpdated(new Date());
-
- update(f);
- }
-
- public void delete(String externalId, String externalType) {
- log.debug("delete started");
-
- delete(get(externalId, externalType));
- }
-
- /**
- * @param id
- * @param name
- */
- public FileExplorerItem rename(Long id, String name) {
- log.debug("rename started");
-
- FileExplorerItem f = get(id);
- if (f == null) {
- return null;
- }
- f.setName(name);
- return update(f);
- }
-
- public FileExplorerItem update(FileExplorerItem f) {
- if (f.getId() == null) {
- f.setInserted(new Date());
- em.persist(f);
- } else {
- f.setUpdated(new Date());
- f = em.merge(f);
- }
- return f;
- }
-
- private void updateChilds(FileExplorerItem f) {
- for (FileExplorerItem child : getByParent(f.getId())) {
- child.setOwnerId(f.getOwnerId());
- child.setRoomId(f.getRoomId());
- update(child);
- if (Type.Folder == f.getType()) {
- updateChilds(child);
- }
- }
- }
-
- /**
- * @param id
- * @param newParentFileExplorerItemId
- * @param isOwner
- */
- public FileExplorerItem move(long id, long parentId, long ownerId, long roomId) {
- log.debug(".move() started");
-
- FileExplorerItem f = get(id);
- if (f == null) {
- return null;
- }
-
- if (parentId < 0) {
- if (parentId == -1) {
- // move to personal Folder
- f.setOwnerId(ownerId);
- f.setRoomId(null);
- } else {
- // move to public room folder
- f.setOwnerId(null);
- f.setRoomId(roomId);
- }
- f.setParentId(null);
- } else {
- f.setParentId(parentId);
- f.setOwnerId(null);
- }
- if (Type.Folder == f.getType()) {
- updateChilds(f);
- }
- return update(f);
- }
-
- public long getOwnSize(Long userId) {
- return getSize(getByOwner(userId));
- }
-
- public long getRoomSize(Long roomId) {
- return getSize(getByRoom(roomId));
- }
-
- public long getSize(List<FileExplorerItem> list) {
- long size = 0;
- for (FileExplorerItem f : list) {
- size += getSize(f);
- }
- return size;
- }
-
- public long getSize(FileExplorerItem f) {
- long size = 0;
- try {
- if (f.exists()) {
- File base = OmFileHelper.getUploadFilesDir();
- if (Type.Image == f.getType()) {
- size += f.getFile().length();
- File thumbFile = new File(base, String.format("%s%s.%s", thumbImagePrefix, f.getHash(), EXTENSION_JPG));
- if (thumbFile.exists()) {
- size += thumbFile.length();
- }
- }
- if (Type.Presentation == f.getType()) {
- File tFolder = new File(base, f.getHash());
-
- if (tFolder.exists()) {
- size += OmFileHelper.getSize(tFolder);
- }
- }
- if (Type.Video == f.getType()) {
- size += f.getFile().length();
- File thumb = f.getFile(EXTENSION_JPG);
- if (thumb.exists()) {
- size += thumb.length();
- }
- }
- }
- if (Type.Folder == f.getType()) {
- for (FileExplorerItem child : getByParent(f.getId())) {
- size += getSize(child);
- }
- }
- } catch (Exception err) {
- log.error("[getSize] ", err);
- }
- return size;
- }
-}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
new file mode 100644
index 0000000..14c8ce9
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
@@ -0,0 +1,338 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.dao.file;
+
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.PersistenceContext;
+import javax.persistence.TypedQuery;
+
+import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @author sebastianwagner
+ *
+ */
+@Transactional
+public class FileItemDao {
+ private static final Logger log = Red5LoggerFactory.getLogger(FileItemDao.class, webAppRootKey);
+ @PersistenceContext
+ private EntityManager em;
+
+ public FileItem add(String fileName, Long parentId, Long ownerId, Long roomId, Long insertedBy,
+ Type type, String externalId, String externalType) {
+ log.debug(".add(): adding file " + fileName + " roomID: " + roomId);
+ try {
+ FileItem fileItem = new FileItem();
+ fileItem.setName(fileName);
+ fileItem.setHash(UUID.randomUUID().toString());
+ fileItem.setDeleted(false);
+ fileItem.setParentId(parentId);
+ fileItem.setOwnerId(ownerId);
+ fileItem.setRoomId(roomId);
+ fileItem.setInserted(new Date());
+ fileItem.setInsertedBy(insertedBy);
+ fileItem.setType(type);
+ fileItem.setUpdated(new Date());
+ fileItem.setExternalId(externalId);
+ fileItem.setExternalType(externalType);
+
+ fileItem = em.merge(fileItem);
+
+ log.debug(".add(): file " + fileName + " added as " + fileItem.getId());
+ return fileItem;
+ } catch (Exception ex2) {
+ log.error(".add(): ", ex2);
+ }
+ return null;
+ }
+
+ public List<FileItem> getByRoomAndOwner(Long roomId, Long ownerId) {
+ log.debug(".getByRoomAndOwner() started");
+ try {
+ TypedQuery<FileItem> query = em.createNamedQuery("getFilesByRoomAndOwner", FileItem.class);
+ query.setParameter("roomId", roomId);
+ query.setParameter("ownerId", ownerId);
+
+ List<FileItem> fileExplorerList = query.getResultList();
+
+ return fileExplorerList;
+ } catch (Exception ex2) {
+ log.error("[getByRoomAndOwner]: ", ex2);
+ }
+ return null;
+ }
+
+ public List<FileItem> getByRoom(Long roomId) {
+ log.debug("getByRoom roomId :: " + roomId);
+ return em.createNamedQuery("getFilesByRoom", FileItem.class).setParameter("roomId", roomId).getResultList();
+ }
+
+ public List<FileItem> getByOwner(Long ownerId) {
+ log.debug("getByOwner() started");
+ TypedQuery<FileItem> query = em.createNamedQuery("getFilesByOwner", FileItem.class);
+ query.setParameter("ownerId", ownerId);
+
+ return query.getResultList();
+ }
+
+ public List<FileItem> getByGroup(Long groupId) {
+ log.debug("getByGroup() started");
+ return em.createNamedQuery("getFileByGroup", FileItem.class)
+ .setParameter("groupId", groupId)
+ .getResultList();
+ }
+
+ public List<FileItem> getByGroup(Long groupId, List<Type> filter) {
+ if (filter == null) {
+ return getByGroup(groupId);
+ }
+ log.debug("getByGroup() started");
+ return em.createNamedQuery("getFileFilteredByGroup", FileItem.class)
+ .setParameter("filter", filter)
+ .setParameter("groupId", groupId)
+ .getResultList();
+ }
+
+ public List<FileItem> getByParent(Long parentId) {
+ log.debug("getByParent() started");
+ return em.createNamedQuery("getFilesByParent", FileItem.class)
+ .setParameter("parentId", parentId)
+ .getResultList();
+ }
+
+ public List<FileItem> getByParent(Long parentId, List<Type> filter) {
+ if (filter == null) {
+ return getByParent(parentId);
+ }
+ log.debug("getByParent(filter) started");
+ return em.createNamedQuery("getFilesFilteredByParent", FileItem.class)
+ .setParameter("filter", filter)
+ .setParameter("parentId", parentId)
+ .getResultList();
+ }
+
+ public FileItem getByHash(String hash) {
+ log.debug("getByHash() started");
+ FileItem f = null;
+ TypedQuery<FileItem> query = em.createNamedQuery("getFileByHash", FileItem.class);
+ query.setParameter("hash", hash);
+
+ try {
+ f = query.getSingleResult();
+ } catch (NoResultException ex) {
+ //no-op
+ }
+ return f;
+ }
+
+ public FileItem get(Long id) {
+ FileItem f = null;
+ if (id != null && id > 0) {
+ TypedQuery<FileItem> query = em.createNamedQuery("getFileById", FileItem.class)
+ .setParameter("id", id);
+
+ try {
+ f = query.getSingleResult();
+ } catch (NoResultException ex) {
+ }
+ } else {
+ log.info("[get] " + "Info: No id given");
+ }
+ return f;
+ }
+
+ public FileItem get(String externalId, String externalType) {
+ FileItem f = null;
+ log.debug("get started");
+
+ try {
+ TypedQuery<FileItem> query = em.createNamedQuery("getFileExternal", FileItem.class)
+ .setParameter("externalFileId", externalId).setParameter("externalType", externalType);
+
+ try {
+ f = query.getSingleResult();
+ } catch (NoResultException ex) {
+ }
+
+ } catch (Exception ex2) {
+ log.error("[get]: ", ex2);
+ }
+ return f;
+ }
+
+ public List<FileItem> get() {
+ log.debug("get started");
+
+ return em.createNamedQuery("getAllFiles", FileItem.class).getResultList();
+ }
+
+ public void delete(FileItem f) {
+ f.setDeleted(true);
+ f.setUpdated(new Date());
+
+ update(f);
+ }
+
+ public void delete(String externalId, String externalType) {
+ log.debug("delete started");
+
+ delete(get(externalId, externalType));
+ }
+
+ /**
+ * @param id
+ * @param name
+ */
+ public FileItem rename(Long id, String name) {
+ log.debug("rename started");
+
+ FileItem f = get(id);
+ if (f == null) {
+ return null;
+ }
+ f.setName(name);
+ return update(f);
+ }
+
+ public FileItem update(FileItem f) {
+ if (f.getId() == null) {
+ f.setInserted(new Date());
+ em.persist(f);
+ } else {
+ f.setUpdated(new Date());
+ f = em.merge(f);
+ }
+ return f;
+ }
+
+ private void updateChilds(FileItem f) {
+ for (FileItem child : getByParent(f.getId())) {
+ child.setOwnerId(f.getOwnerId());
+ child.setRoomId(f.getRoomId());
+ update(child);
+ if (Type.Folder == f.getType()) {
+ updateChilds(child);
+ }
+ }
+ }
+
+ /**
+ * @param id
+ * @param parentId
+ * @param isOwner
+ * @param roomId
+ */
+ public FileItem move(long id, long parentId, long ownerId, long roomId) {
+ log.debug(".move() started");
+
+ FileItem f = get(id);
+ if (f == null) {
+ return null;
+ }
+
+ if (parentId < 0) {
+ if (parentId == -1) {
+ // move to personal Folder
+ f.setOwnerId(ownerId);
+ f.setRoomId(null);
+ } else {
+ // move to public room folder
+ f.setOwnerId(null);
+ f.setRoomId(roomId);
+ }
+ f.setParentId(null);
+ } else {
+ f.setParentId(parentId);
+ f.setOwnerId(null);
+ }
+ if (Type.Folder == f.getType()) {
+ updateChilds(f);
+ }
+ return update(f);
+ }
+
+ public long getOwnSize(Long userId) {
+ return getSize(getByOwner(userId));
+ }
+
+ public long getRoomSize(Long roomId) {
+ return getSize(getByRoom(roomId));
+ }
+
+ public long getSize(List<FileItem> list) {
+ long size = 0;
+ for (FileItem f : list) {
+ size += getSize(f);
+ }
+ return size;
+ }
+
+ public long getSize(FileItem f) {
+ long size = 0;
+ try {
+ if (f.exists()) {
+ File base = OmFileHelper.getUploadFilesDir();
+ if (Type.Image == f.getType()) {
+ size += f.getFile().length();
+ File thumbFile = new File(base, String.format("%s%s.%s", thumbImagePrefix, f.getHash(), EXTENSION_JPG));
+ if (thumbFile.exists()) {
+ size += thumbFile.length();
+ }
+ }
+ if (Type.Presentation == f.getType()) {
+ File tFolder = new File(base, f.getHash());
+
+ if (tFolder.exists()) {
+ size += OmFileHelper.getSize(tFolder);
+ }
+ }
+ if (Type.Video == f.getType()) {
+ size += f.getFile().length();
+ File thumb = f.getFile(EXTENSION_JPG);
+ if (thumb.exists()) {
+ size += thumb.length();
+ }
+ }
+ }
+ if (Type.Folder == f.getType()) {
+ for (FileItem child : getByParent(f.getId())) {
+ size += getSize(child);
+ }
+ }
+ } catch (Exception err) {
+ log.error("[getSize] ", err);
+ }
+ return size;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
index eb2b225..652e2a3 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
@@ -26,7 +26,7 @@ import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
-import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
import org.apache.openmeetings.db.entity.file.FileItemLog;
import org.apache.openmeetings.util.process.ConverterProcessResult;
import org.red5.logging.Red5LoggerFactory;
@@ -39,22 +39,22 @@ public class FileItemLogDao {
@PersistenceContext
private EntityManager em;
- public long countErrors(FileItem f) {
+ public long countErrors(BaseFileItem f) {
return em.createNamedQuery("countErrorFileLogsByFile", Long.class).setParameter("fileId", f.getId())
.setParameter("type", f.getType()).getSingleResult();
}
- public List<FileItemLog> get(FileItem f) {
+ public List<FileItemLog> get(BaseFileItem f) {
return em.createNamedQuery("getFileLogsByFile", FileItemLog.class).setParameter("fileId", f.getId())
.setParameter("type", f.getType()).getResultList();
}
- public void delete(FileItem f) {
+ public void delete(BaseFileItem f) {
em.createNamedQuery("deleteErrorFileLogsByFile").setParameter("fileId", f.getId())
.setParameter("type", f.getType()).executeUpdate();
}
- public FileItemLog add(String name, FileItem f, ConverterProcessResult returnMap) {
+ public FileItemLog add(String name, BaseFileItem f, ConverterProcessResult returnMap) {
log.trace("Adding log: {}, {}, {}", name, f, returnMap);
FileItemLog log = new FileItemLog();
log.setInserted(new Date());
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java
deleted file mode 100644
index 49f7b23..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") + you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.dto.file;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
-
-/**
- * This Object will represent a File on the File-System
- *
- * @author sebastianwagner
- *
- */
-@XmlRootElement
-@XmlAccessorType(XmlAccessType.FIELD)
-public class FileExplorerItemDTO implements Serializable {
- private static final long serialVersionUID = 1L;
- private Long id;
- private String name;
- private String hash;
- private Long parentId;
- private Long roomId;
- private Long groupId;
- private Long ownerId;
- private Long size;
- private String externalId;
- private String externalType;
- private Type type;
- private Integer width;
- private Integer height;
-
- public FileExplorerItemDTO() {}
-
- public FileExplorerItemDTO(FileExplorerItem f) {
- id = f.getId();
- name = f.getName();
- hash = f.getHash();
- parentId = f.getParentId();
- roomId = f.getRoomId();
- groupId = f.getGroupId();
- ownerId = f.getOwnerId();
- size = f.getSize();
- externalId = f.getExternalId();
- externalType = f.getExternalType();
- type = f.getType();
- width = f.getWidth();
- height = f.getHeight();
- }
-
- public FileExplorerItem get() {
- FileExplorerItem f = new FileExplorerItem();
- f.setId(id);
- f.setName(name);
- f.setHash(hash);
- f.setParentId(parentId != null && parentId > 0 ? parentId : null);
- f.setRoomId(roomId != null && roomId > 0 ? roomId : null);
- f.setRoomId(groupId != null && groupId > 0 ? groupId : null);
- f.setOwnerId(ownerId != null && ownerId > 0 ? ownerId : null);
- f.setSize(size);
- f.setExternalId(externalId);
- f.setExternalType(externalType);
- f.setType(type);
- f.setWidth(width);
- f.setHeight(height);
- return f;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getHash() {
- return hash;
- }
-
- public void setHash(String hash) {
- this.hash = hash;
- }
-
- public Long getParentId() {
- return parentId;
- }
-
- public void setParentId(Long parentId) {
- this.parentId = parentId;
- }
-
- public Long getRoomId() {
- return roomId;
- }
-
- public void setRoomId(Long roomId) {
- this.roomId = roomId;
- }
-
- public Long getGroupId() {
- return groupId;
- }
-
- public void setGroupId(Long groupId) {
- this.groupId = groupId;
- }
-
- public Long getOwnerId() {
- return ownerId;
- }
-
- public void setOwnerId(Long ownerId) {
- this.ownerId = ownerId;
- }
-
- public Long getSize() {
- return size;
- }
-
- public void setSize(Long size) {
- this.size = size;
- }
-
- public String getExternalId() {
- return externalId;
- }
-
- public void setExternalId(String externalId) {
- this.externalId = externalId;
- }
-
- public String getExternalType() {
- return externalType;
- }
-
- public void setExternalType(String externalType) {
- this.externalType = externalType;
- }
-
- public Type getType() {
- return type;
- }
-
- public void setType(Type type) {
- this.type = type;
- }
-
- public Integer getWidth() {
- return width;
- }
-
- public void setWidth(Integer width) {
- this.width = width;
- }
-
- public Integer getHeight() {
- return height;
- }
-
- public void setHeight(Integer height) {
- this.height = height;
- }
-
- public static List<FileExplorerItemDTO> list(List<FileExplorerItem> l) {
- List<FileExplorerItemDTO> list = new ArrayList<>();
- if (l != null) {
- for (FileExplorerItem f : l) {
- list.add(new FileExplorerItemDTO(f));
- }
- }
- return list;
- }
-}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
index d461fd8..3501183 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerObject.java
@@ -25,7 +25,7 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
/**
* @author sebastianwagner
@@ -36,36 +36,36 @@ import org.apache.openmeetings.db.entity.file.FileExplorerItem;
public class FileExplorerObject implements Serializable {
private static final long serialVersionUID = 1L;
- private List<FileExplorerItemDTO> userHome;
- private List<FileExplorerItemDTO> roomHome;
+ private List<FileItemDTO> userHome;
+ private List<FileItemDTO> roomHome;
private Long userHomeSize;
private Long roomHomeSize;
public FileExplorerObject() {}
- public List<FileExplorerItemDTO> getUserHome() {
+ public List<FileItemDTO> getUserHome() {
return userHome;
}
- public void setUserHome(List<FileExplorerItemDTO> userHome) {
+ public void setUserHome(List<FileItemDTO> userHome) {
this.userHome = userHome;
}
- public void setUser(List<FileExplorerItem> list, long size) {
- this.userHome = FileExplorerItemDTO.list(list);
+ public void setUser(List<FileItem> list, long size) {
+ this.userHome = FileItemDTO.list(list);
this.userHomeSize = size;
}
- public List<FileExplorerItemDTO> getRoomHome() {
+ public List<FileItemDTO> getRoomHome() {
return roomHome;
}
- public void setRoomHome(List<FileExplorerItemDTO> roomHome) {
+ public void setRoomHome(List<FileItemDTO> roomHome) {
this.roomHome = roomHome;
}
- public void setRoom(List<FileExplorerItem> list, long size) {
- this.roomHome = FileExplorerItemDTO.list(list);
+ public void setRoom(List<FileItem> list, long size) {
+ this.roomHome = FileItemDTO.list(list);
this.roomHomeSize = size;
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java
new file mode 100644
index 0000000..563eafe
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileItemDTO.java
@@ -0,0 +1,205 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
+
+/**
+ * This Object will represent a File on the File-System
+ *
+ * @author sebastianwagner
+ *
+ */
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class FileItemDTO implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private Long id;
+ private String name;
+ private String hash;
+ private Long parentId;
+ private Long roomId;
+ private Long groupId;
+ private Long ownerId;
+ private Long size;
+ private String externalId;
+ private String externalType;
+ private Type type;
+ private Integer width;
+ private Integer height;
+
+ public FileItemDTO() {}
+
+ public FileItemDTO(FileItem f) {
+ id = f.getId();
+ name = f.getName();
+ hash = f.getHash();
+ parentId = f.getParentId();
+ roomId = f.getRoomId();
+ groupId = f.getGroupId();
+ ownerId = f.getOwnerId();
+ size = f.getSize();
+ externalId = f.getExternalId();
+ externalType = f.getExternalType();
+ type = f.getType();
+ width = f.getWidth();
+ height = f.getHeight();
+ }
+
+ public FileItem get() {
+ FileItem f = new FileItem();
+ f.setId(id);
+ f.setName(name);
+ f.setHash(hash);
+ f.setParentId(parentId != null && parentId > 0 ? parentId : null);
+ f.setRoomId(roomId != null && roomId > 0 ? roomId : null);
+ f.setRoomId(groupId != null && groupId > 0 ? groupId : null);
+ f.setOwnerId(ownerId != null && ownerId > 0 ? ownerId : null);
+ f.setSize(size);
+ f.setExternalId(externalId);
+ f.setExternalType(externalType);
+ f.setType(type);
+ f.setWidth(width);
+ f.setHeight(height);
+ return f;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getHash() {
+ return hash;
+ }
+
+ public void setHash(String hash) {
+ this.hash = hash;
+ }
+
+ public Long getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Long parentId) {
+ this.parentId = parentId;
+ }
+
+ public Long getRoomId() {
+ return roomId;
+ }
+
+ public void setRoomId(Long roomId) {
+ this.roomId = roomId;
+ }
+
+ public Long getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(Long groupId) {
+ this.groupId = groupId;
+ }
+
+ public Long getOwnerId() {
+ return ownerId;
+ }
+
+ public void setOwnerId(Long ownerId) {
+ this.ownerId = ownerId;
+ }
+
+ public Long getSize() {
+ return size;
+ }
+
+ public void setSize(Long size) {
+ this.size = size;
+ }
+
+ public String getExternalId() {
+ return externalId;
+ }
+
+ public void setExternalId(String externalId) {
+ this.externalId = externalId;
+ }
+
+ public String getExternalType() {
+ return externalType;
+ }
+
+ public void setExternalType(String externalType) {
+ this.externalType = externalType;
+ }
+
+ public Type getType() {
+ return type;
+ }
+
+ public void setType(Type type) {
+ this.type = type;
+ }
+
+ public Integer getWidth() {
+ return width;
+ }
+
+ public void setWidth(Integer width) {
+ this.width = width;
+ }
+
+ public Integer getHeight() {
+ return height;
+ }
+
+ public void setHeight(Integer height) {
+ this.height = height;
+ }
+
+ public static List<FileItemDTO> list(List<FileItem> l) {
+ List<FileItemDTO> list = new ArrayList<>();
+ if (l != null) {
+ for (FileItem f : l) {
+ list.add(new FileItemDTO(f));
+ }
+ }
+ return list;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java
index 88e7ebb..23285d5 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/PresentationObject.java
@@ -26,35 +26,35 @@ import java.util.LinkedList;
*/
public class PresentationObject {
- private FileExplorerItemDTO originalDocument;
- private FileExplorerItemDTO pdfDocument;
- private FileExplorerItemDTO swfDocument;
- LinkedList<FileExplorerItemDTO> thumbs;
+ private FileItemDTO originalDocument;
+ private FileItemDTO pdfDocument;
+ private FileItemDTO swfDocument;
+ LinkedList<FileItemDTO> thumbs;
public PresentationObject() {}
- public FileExplorerItemDTO getOriginalDocument() {
+ public FileItemDTO getOriginalDocument() {
return originalDocument;
}
- public void setOriginalDocument(FileExplorerItemDTO originalDocument) {
+ public void setOriginalDocument(FileItemDTO originalDocument) {
this.originalDocument = originalDocument;
}
- public FileExplorerItemDTO getPdfDocument() {
+ public FileItemDTO getPdfDocument() {
return pdfDocument;
}
- public void setPdfDocument(FileExplorerItemDTO pdfDocument) {
+ public void setPdfDocument(FileItemDTO pdfDocument) {
this.pdfDocument = pdfDocument;
}
- public FileExplorerItemDTO getSwfDocument() {
+ public FileItemDTO getSwfDocument() {
return swfDocument;
}
- public void setSwfDocument(FileExplorerItemDTO swfDocument) {
+ public void setSwfDocument(FileItemDTO swfDocument) {
this.swfDocument = swfDocument;
}
- public LinkedList<FileExplorerItemDTO> getThumbs() {
+ public LinkedList<FileItemDTO> getThumbs() {
return thumbs;
}
- public void setThumbs(LinkedList<FileExplorerItemDTO> thumbs) {
+ public void setThumbs(LinkedList<FileItemDTO> thumbs) {
this.thumbs = thumbs;
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/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
new file mode 100644
index 0000000..c439664
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
@@ -0,0 +1,357 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.entity.file;
+
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_SWF;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WML;
+import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadWmlDir;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.simpleframework.xml.Element;
+
+@Entity
+@Table(name = "file")
+@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
+public abstract class BaseFileItem implements IDataProviderEntity {
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "id")
+ private Long id;
+
+ @XmlType(namespace = "org.apache.openmeetings.file")
+ public enum Type {
+ // Folder need to be alphabetically first, for correct sorting
+ Folder, Image, PollChart, Presentation, Recording, Video, WmlFile
+ }
+
+ @Column(name = "name")
+ @Element(name = "fileName", data = true, required = false)
+ private String name;
+
+ @Column(name = "hash")
+ @Element(name = "fileHash", data = true, required = false)
+ private String hash;
+
+ @Column(name = "parent_item_id")
+ @Element(data = true, name = "parentFileExplorerItemId", required = false)
+ private Long parentId;
+
+ @Column(name = "room_id")
+ @Element(data = true, required = false, name = "room_id")
+ private Long roomId;
+
+ // OwnerID => only set if its directly root in Owner Directory, other Folders and Files
+ // maybe are also in a Home directory but just because their parent is
+ @Column(name = "owner_id")
+ @Element(data = true, required = false)
+ private Long ownerId;
+
+ @Column(name = "inserted_by")
+ @Element(data = true, required = false)
+ private Long insertedBy;
+
+ @Column(name = "inserted")
+ @Element(data = true, required = false)
+ private Date inserted;
+
+ @Column(name = "updated")
+ @Element(data = true, required = false)
+ private Date updated;
+
+ @Column(name = "deleted", nullable = false)
+ @Element(data = true)
+ private boolean deleted;
+
+ @Column(name = "flv_width")
+ @Element(data = true, required = false)
+ private Integer width;
+
+ @Column(name = "flv_height")
+ @Element(data = true, required = false)
+ private Integer height;
+
+ @Column(name = "type")
+ @Element(data = true, required = false)
+ @Enumerated(EnumType.STRING)
+ private Type type;
+
+ @Column(name = "group_id")
+ @Element(data = true, required = false)
+ private Long groupId;
+
+ // Not Mapped
+ @Transient
+ private List<FileItemLog> log;
+
+ @Transient
+ private boolean readOnly;
+
+ @Override
+ public Long getId() {
+ return id;
+ }
+
+ @Override
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getHash() {
+ return hash;
+ }
+
+ public void setHash(String hash) {
+ this.hash = hash;
+ }
+
+ public Long getParentId() {
+ return parentId;
+ }
+
+ public void setParentId(Long parentId) {
+ this.parentId = parentId;
+ }
+
+ public Long getRoomId() {
+ return roomId;
+ }
+
+ public void setRoomId(Long roomId) {
+ this.roomId = roomId;
+ }
+
+ public Long getOwnerId() {
+ return ownerId;
+ }
+
+ public void setOwnerId(Long ownerId) {
+ this.ownerId = ownerId;
+ }
+
+ public Long getInsertedBy() {
+ return insertedBy;
+ }
+
+ public void setInsertedBy(Long insertedBy) {
+ this.insertedBy = insertedBy;
+ }
+
+ public Date getInserted() {
+ return inserted;
+ }
+
+ public void setInserted(Date inserted) {
+ this.inserted = inserted;
+ }
+
+ public Date getUpdated() {
+ return updated;
+ }
+
+ public void setUpdated(Date updated) {
+ this.updated = updated;
+ }
+
+ public boolean isDeleted() {
+ return deleted;
+ }
+
+ public void setDeleted(boolean deleted) {
+ this.deleted = deleted;
+ }
+
+ public Integer getWidth() {
+ return width;
+ }
+
+ public void setWidth(Integer flvWidth) {
+ this.width = flvWidth;
+ }
+
+ public Integer getHeight() {
+ return height;
+ }
+
+ public void setHeight(Integer flvHeight) {
+ this.height = flvHeight;
+ }
+
+ public Type getType() {
+ return type;
+ }
+
+ public void setType(Type type) {
+ this.type = type;
+ }
+
+ public List<FileItemLog> getLog() {
+ return log;
+ }
+
+ public void setLog(List<FileItemLog> log) {
+ this.log = log;
+ }
+
+ public String getFileName(String ext) {
+ return ext == null ? name : String.format("%s.%s", name, ext);
+ }
+
+ public File getFile() {
+ return getFile(null);
+ }
+
+ public Long getGroupId() {
+ return groupId;
+ }
+
+ public void setGroupId(Long groupId) {
+ this.groupId = groupId;
+ }
+
+ public boolean isReadOnly() {
+ return readOnly;
+ }
+
+ public void setReadOnly(boolean readOnly) {
+ this.readOnly = readOnly;
+ }
+
+ public final File getFile(String ext) {
+ File f = null;
+ if (getHash() != null) {
+ File d = new File(getUploadFilesDir(), getHash());
+ switch (getType()) {
+ case WmlFile:
+ f = new File(getUploadWmlDir(), String.format("%s.%s", getHash(), ext == null ? EXTENSION_WML : ext));
+ break;
+ case Image:
+ f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_JPG : ext));
+ break;
+ case Recording:
+ f = new File(getStreamsHibernateDir(), String.format("%s.%s", getHash(), ext == null ? EXTENSION_MP4 : ext));
+ break;
+ case Video:
+ f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_MP4 : ext));
+ break;
+ case Presentation:
+ f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_SWF : ext));
+ break;
+ case PollChart:
+ case Folder:
+ default:
+ }
+ }
+ return f;
+ }
+
+ public final boolean exists() {
+ return exists(null);
+ }
+
+ public final boolean exists(String ext) {
+ if (getId() != null && !isDeleted()) {
+ File f = getFile(ext);
+ return f != null && f.exists() && f.isFile();
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ 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)
+ return true;
+ if (obj == null)
+ return false;
+ 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)
+ return false;
+ } else if (!roomId.equals(other.roomId))
+ return false;
+ if (type != other.type)
+ return false;
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
deleted file mode 100644
index 10dcf0d..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") + you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.entity.file;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
-
-@Entity
-@NamedQueries({
- @NamedQuery(name = "getAllFiles", query = "SELECT f FROM FileExplorerItem f ORDER BY f.id")
- , @NamedQuery(name = "getFileById", query = "SELECT f FROM FileExplorerItem f WHERE f.id = :id")
- , @NamedQuery(name = "getFileByHash", query = "SELECT f FROM FileExplorerItem f WHERE f.hash = :hash")
- , @NamedQuery(name = "getFilesByRoom", query = "SELECT f FROM FileExplorerItem f WHERE f.deleted = false AND f.roomId = :roomId " +
- "AND f.ownerId IS NULL AND f.parentId IS NULL ORDER BY f.type ASC, f.name ")
- , @NamedQuery(name = "getFilesByOwner", query = "SELECT f FROM FileExplorerItem f WHERE f.deleted = false AND f.ownerId = :ownerId "
- + "AND f.parentId IS NULL ORDER BY f.type ASC, f.name ")
- , @NamedQuery(name = "getFilesByParent", query = "SELECT f FROM FileExplorerItem f WHERE f.deleted = false "
- + "AND f.parentId = :parentId ORDER BY f.type ASC, f.name ")
- , @NamedQuery(name = "getFilesFilteredByParent", query = "SELECT f FROM FileExplorerItem f WHERE f.deleted = false "
- + "AND f.parentId = :parentId AND f.type IN :filter ORDER BY f.type ASC, f.name ")
- , @NamedQuery(name = "getFileExternal", query = "SELECT f FROM FileExplorerItem f WHERE f.externalId = :externalId AND f.externalType LIKE :externalType")
- , @NamedQuery(name = "getFileByGroup", query = "SELECT f FROM FileExplorerItem f WHERE f.deleted = false AND f.ownerId IS NULL "
- + "AND f.groupId = :groupId AND f.parentId IS NULL "
- + "ORDER BY f.type ASC, f.name")
- , @NamedQuery(name = "getFileFilteredByGroup", query = "SELECT f FROM FileExplorerItem f WHERE f.deleted = false AND f.ownerId IS NULL "
- + "AND f.groupId = :groupId AND f.parentId IS NULL AND f.type IN :filter "
- + "ORDER BY f.type ASC, f.name")
-})
-@Table(name = "fileexploreritem")
-@Root
-public class FileExplorerItem extends FileItem {
- private static final long serialVersionUID = 1L;
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "id")
- @Element(data = true, name = "fileExplorerItemId")
- private Long id;
-
- @Column(name = "filesize")
- @Element(data = true, required = false)
- private Long size;
-
- @Column(name = "external_id")
- private String externalId;
-
- @Column(name = "external_type")
- private String externalType;
-
- @Override
- public Long getId() {
- return id;
- }
-
- @Override
- public void setId(Long id) {
- this.id = id;
- }
-
- public Long getSize() {
- return size;
- }
-
- public void setSize(Long fileSize) {
- this.size = fileSize;
- }
-
- public String getExternalId() {
- return externalId;
- }
-
- public void setExternalId(String externalId) {
- this.externalId = externalId;
- }
-
- public String getExternalType() {
- return externalType;
- }
-
- public void setExternalType(String externalType) {
- this.externalType = externalType;
- }
-}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
index 04745e6..06e5d6e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
@@ -18,317 +18,82 @@
*/
package org.apache.openmeetings.db.entity.file;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_SWF;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WML;
-import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
-import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
-import static org.apache.openmeetings.util.OmFileHelper.getUploadWmlDir;
-
-import java.io.File;
-import java.util.Date;
-import java.util.List;
-
import javax.persistence.Column;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.Transient;
-import javax.xml.bind.annotation.XmlType;
+import javax.persistence.Entity;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
import org.simpleframework.xml.Element;
-
-@MappedSuperclass
-public abstract class FileItem implements IDataProviderEntity {
+import org.simpleframework.xml.Root;
+
+@Entity
+@NamedQueries({
+ @NamedQuery(name = "getAllFiles", query = "SELECT f FROM FileItem f ORDER BY f.id")
+ , @NamedQuery(name = "getFileById", query = "SELECT f FROM FileItem f WHERE f.id = :id")
+ , @NamedQuery(name = "getFileByHash", query = "SELECT f FROM FileItem f WHERE f.hash = :hash")
+ , @NamedQuery(name = "getFilesByRoom", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.roomId = :roomId " +
+ "AND f.ownerId IS NULL AND f.parentId IS NULL ORDER BY f.type ASC, f.name ")
+ , @NamedQuery(name = "getFilesByOwner", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId = :ownerId "
+ + "AND f.parentId IS NULL ORDER BY f.type ASC, f.name ")
+ , @NamedQuery(name = "getFilesByParent", query = "SELECT f FROM FileItem f WHERE f.deleted = false "
+ + "AND f.parentId = :parentId ORDER BY f.type ASC, f.name ")
+ , @NamedQuery(name = "getFilesFilteredByParent", query = "SELECT f FROM FileItem f WHERE f.deleted = false "
+ + "AND f.parentId = :parentId AND f.type IN :filter ORDER BY f.type ASC, f.name ")
+ , @NamedQuery(name = "getFileExternal", query = "SELECT f FROM FileItem f WHERE f.externalId = :externalId AND f.externalType LIKE :externalType")
+ , @NamedQuery(name = "getFileByGroup", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId IS NULL "
+ + "AND f.groupId = :groupId AND f.parentId IS NULL "
+ + "ORDER BY f.type ASC, f.name")
+ , @NamedQuery(name = "getFileFilteredByGroup", query = "SELECT f FROM FileItem f WHERE f.deleted = false AND f.ownerId IS NULL "
+ + "AND f.groupId = :groupId AND f.parentId IS NULL AND f.type IN :filter "
+ + "ORDER BY f.type ASC, f.name")
+})
+@Root
+public class FileItem extends BaseFileItem {
private static final long serialVersionUID = 1L;
- @XmlType(namespace = "org.apache.openmeetings.file")
- public enum Type {
- // Folder need to be alphabetically first, for correct sorting
- Folder, Image, PollChart, Presentation, Recording, Video, WmlFile
- }
-
- @Column(name = "name")
- @Element(name = "fileName", data = true, required = false)
- private String name;
-
- @Column(name = "hash")
- @Element(name = "fileHash", data = true, required = false)
- private String hash;
-
- @Column(name = "parent_item_id")
- @Element(data = true, name = "parentFileExplorerItemId", required = false)
- private Long parentId;
-
- @Column(name = "room_id")
- @Element(data = true, required = false, name = "room_id")
- private Long roomId;
-
- // OwnerID => only set if its directly root in Owner Directory, other Folders and Files
- // maybe are also in a Home directory but just because their parent is
- @Column(name = "owner_id")
- @Element(data = true, required = false)
- private Long ownerId;
-
- @Column(name = "inserted_by")
- @Element(data = true, required = false)
- private Long insertedBy;
-
- @Column(name = "inserted")
- @Element(data = true, required = false)
- private Date inserted;
-
- @Column(name = "updated")
- @Element(data = true, required = false)
- private Date updated;
-
- @Column(name = "deleted", nullable = false)
- @Element(data = true)
- private boolean deleted;
-
- @Column(name = "flv_width")
- @Element(data = true, required = false)
- private Integer width;
-
- @Column(name = "flv_height")
- @Element(data = true, required = false)
- private Integer height;
-
- @Column(name = "type")
+ @Column(name = "filesize")
@Element(data = true, required = false)
- @Enumerated(EnumType.STRING)
- private Type type;
-
- @Column(name = "group_id")
- @Element(data = true, required = false)
- private Long groupId;
-
- // Not Mapped
- @Transient
- private List<FileItemLog> log;
-
- @Transient
- private boolean readOnly;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getHash() {
- return hash;
- }
-
- public void setHash(String hash) {
- this.hash = hash;
- }
-
- public Long getParentId() {
- return parentId;
- }
-
- public void setParentId(Long parentId) {
- this.parentId = parentId;
- }
-
- public Long getRoomId() {
- return roomId;
- }
-
- public void setRoomId(Long roomId) {
- this.roomId = roomId;
- }
-
- public Long getOwnerId() {
- return ownerId;
- }
-
- public void setOwnerId(Long ownerId) {
- this.ownerId = ownerId;
- }
-
- public Long getInsertedBy() {
- return insertedBy;
- }
-
- public void setInsertedBy(Long insertedBy) {
- this.insertedBy = insertedBy;
- }
-
- public Date getInserted() {
- return inserted;
- }
-
- public void setInserted(Date inserted) {
- this.inserted = inserted;
- }
+ private Long size;
- public Date getUpdated() {
- return updated;
- }
-
- public void setUpdated(Date updated) {
- this.updated = updated;
- }
+ @Column(name = "external_id")
+ private String externalId;
- public boolean isDeleted() {
- return deleted;
- }
-
- public void setDeleted(boolean deleted) {
- this.deleted = deleted;
- }
+ @Column(name = "external_type")
+ private String externalType;
- public Integer getWidth() {
- return width;
- }
-
- public void setWidth(Integer flvWidth) {
- this.width = flvWidth;
- }
-
- public Integer getHeight() {
- return height;
- }
-
- public void setHeight(Integer flvHeight) {
- this.height = flvHeight;
- }
-
- public Type getType() {
- return type;
- }
-
- public void setType(Type type) {
- this.type = type;
- }
-
- public List<FileItemLog> getLog() {
- return log;
- }
-
- public void setLog(List<FileItemLog> log) {
- this.log = log;
- }
-
- public String getFileName(String ext) {
- return ext == null ? name : String.format("%s.%s", name, ext);
- }
-
- public File getFile() {
- return getFile(null);
- }
-
- public Long getGroupId() {
- return groupId;
- }
-
- public void setGroupId(Long groupId) {
- this.groupId = groupId;
+ @Override
+ @Element(data = true, name = "fileExplorerItemId")
+ public Long getId() {
+ return super.getId();
}
- public boolean isReadOnly() {
- return readOnly;
+ @Override
+ @Element(data = true, name = "fileExplorerItemId")
+ public void setId(Long id) {
+ super.setId(id);
}
- public void setReadOnly(boolean readOnly) {
- this.readOnly = readOnly;
+ public Long getSize() {
+ return size;
}
- public final File getFile(String ext) {
- File f = null;
- if (getHash() != null) {
- File d = new File(getUploadFilesDir(), getHash());
- switch (getType()) {
- case WmlFile:
- f = new File(getUploadWmlDir(), String.format("%s.%s", getHash(), ext == null ? EXTENSION_WML : ext));
- break;
- case Image:
- f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_JPG : ext));
- break;
- case Recording:
- f = new File(getStreamsHibernateDir(), String.format("%s.%s", getHash(), ext == null ? EXTENSION_MP4 : ext));
- break;
- case Video:
- f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_MP4 : ext));
- break;
- case Presentation:
- f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_SWF : ext));
- break;
- case PollChart:
- case Folder:
- default:
- }
- }
- return f;
+ public void setSize(Long fileSize) {
+ this.size = fileSize;
}
- public final boolean exists() {
- return exists(null);
+ public String getExternalId() {
+ return externalId;
}
- public final boolean exists(String ext) {
- if (getId() != null && !isDeleted()) {
- File f = getFile(ext);
- return f != null && f.exists() && f.isFile();
- }
- return false;
+ public void setExternalId(String externalId) {
+ this.externalId = externalId;
}
- @Override
- public int hashCode() {
- 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;
+ public String getExternalType() {
+ return externalType;
}
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- FileItem other = (FileItem) 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)
- return false;
- } else if (!roomId.equals(other.roomId))
- return false;
- if (type != other.type)
- return false;
- return true;
+ public void setExternalType(String externalType) {
+ this.externalType = externalType;
}
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
index 2e1a0aa..dc47fba 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItemLog.java
@@ -36,7 +36,7 @@ import javax.persistence.NamedQuery;
import javax.persistence.Table;
import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
+import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
@Entity
@NamedQueries({
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7b5cd392/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
index c1e13dc..e188afd 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
@@ -30,20 +30,16 @@ import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
-import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
-import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
@@ -97,11 +93,10 @@ import org.simpleframework.xml.Root;
+ " OR rec.roomId IN (SELECT rg.room.id FROM RoomGroup rg WHERE rg.group.id = :groupId)"
+ " ) order by rec.inserted ASC")
})
-@Table(name = "recording")
@Root(name = "flvrecording")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
-public class Recording extends FileItem {
+public class Recording extends BaseFileItem {
private static final long serialVersionUID = 1L;
@XmlType(namespace="org.apache.openmeetings.record")
@@ -113,12 +108,6 @@ public class Recording extends FileItem {
, ERROR
}
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "id")
- @Element(data = true, name = "flvRecordingId")
- private Long id;
-
@Column(name = "comment")
@Element(data = true, required = false)
private String comment;
@@ -139,9 +128,9 @@ public class Recording extends FileItem {
@Element(data = true, required = false)
private String recorderStreamId;
- @Column(name = "is_interview", nullable = false)
+ @Column(name = "is_interview")
@Element(data = true, required = false)
- private boolean interview;
+ private Boolean interview = false;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "recording_id")
@@ -153,18 +142,20 @@ public class Recording extends FileItem {
@Element(data = true, required = false)
private Status status = Status.NONE;
- @Column(name = "notified", nullable = false)
+ @Column(name = "notified")
@Element(data = true, required = false)
- private boolean notified = false;
+ private Boolean notified = false;
@Override
+ @Element(data = true, name = "flvRecordingId")
public Long getId() {
- return id;
+ return super.getId();
}
@Override
+ @Element(data = true, name = "flvRecordingId")
public void setId(Long id) {
- this.id = id;
+ super.setId(id);
}
public String getComment() {
@@ -216,7 +207,7 @@ public class Recording extends FileItem {
}
public boolean isInterview() {
- return interview;
+ return Boolean.TRUE.equals(interview);
}
public void setInterview(boolean interview) {
@@ -232,7 +223,7 @@ public class Recording extends FileItem {
}
public boolean isNotified() {
- return notified;
+ return Boolean.TRUE.equals(notified);
}
public void setNotified(boolean notified) {
@@ -241,6 +232,6 @@ public class Recording extends FileItem {
@Override
public String getFileName(String ext) {
- return String.format("%s%s.%s", recordingFileName, id, ext == null ? EXTENSION_MP4 : ext);
+ return String.format("%s%s.%s", recordingFileName, getId(), ext == null ? EXTENSION_MP4 : ext);
}
}