Author: solomax
Date: Sat Aug 20 02:52:45 2016
New Revision: 1756981

URL: http://svn.apache.org/viewvc?rev=1756981&view=rev
Log:
[OPENMEETINGS-1138] tree/file releated fixed merged back to 3.1.x

Added:
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmButton.java
      - copied unchanged from r1756975, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmButton.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
      - copied unchanged from r1756975, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java
      - copied, changed from r1756980, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java
      - copied, changed from r1756980, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
      - copied, changed from r1756980, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
      - copied, changed from r1756980, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java
      - copied, changed from r1756980, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
      - copied, changed from r1756980, 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
      - copied unchanged from r1756975, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
      - copied unchanged from r1756975, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
      - copied unchanged from r1756975, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
      - copied unchanged from r1756975, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
      - copied unchanged from r1756975, 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
Removed:
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileUtils.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/RecordingTreeProvider.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js
Modified:
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
    
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
    
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
    
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuItem.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/RoomMenuItem.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/CallbackFunctionHelper.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/activities.css
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/room.css
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/css/theme.css
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/webapp/js/openmeetings_functions.js
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/library/TestFileParser.java
    
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
    
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
    
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
    
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme.css

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 Sat Aug 20 02:52:45 2016
@@ -19,13 +19,12 @@
 package org.apache.openmeetings.core.converter;
 
 import static 
org.apache.openmeetings.core.data.record.listener.async.BaseStreamWriter.TIME_TO_WAIT_FOR_FRAME;
+import static org.apache.openmeetings.util.OmFileHelper.FLV_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.FLV_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
@@ -340,7 +339,7 @@ public abstract class BaseConverter {
        
        public void convertToMp4(Recording r, List<ConverterProcessResult> 
returnLog) throws IOException {
                //TODO add faststart, move filepaths to helpers
-               if (!isRecordingExists(r.getHash())) {
+               if (!r.exists()) {
                        return;
                }
                File file = getRecording(r.getHash());

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
 Sat Aug 20 02:52:45 2016
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.core.data.file;
 
-import static org.apache.openmeetings.util.OmFileHelper.FLV_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.getUploadFilesDir;
 import static org.apache.openmeetings.util.OmFileHelper.getUploadTempFilesDir;
 import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
@@ -26,8 +25,8 @@ import static org.apache.openmeetings.ut
 
 import java.io.File;
 import java.io.InputStream;
-import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.commons.transaction.util.FileHelper;
 import org.apache.openmeetings.core.converter.FlvExplorerConverter;
@@ -38,7 +37,6 @@ import org.apache.openmeetings.db.dao.fi
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.util.StoredFile;
-import org.apache.openmeetings.util.crypt.MD5;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
 import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.red5.logging.Red5LoggerFactory;
@@ -60,20 +58,23 @@ public class FileProcessor {
        @Autowired
        private GeneratePDF generatePDF;
 
+       public static String getExt(FileExplorerItem f) {
+               int dotidx = f.getName().lastIndexOf('.');
+               return dotidx < 0 ? "" : f.getName().substring(dotidx + 
1).toLowerCase();
+       }
+       
        //FIXME TODO this method need to be refactored to throw exceptions
        public ConverterProcessResultList processFile(Long userId, 
FileExplorerItem f, InputStream is) throws Exception {
                ConverterProcessResultList returnError = new 
ConverterProcessResultList();
                
-               int dotidx = f.getName().lastIndexOf('.');
-
                // Generate a random string to prevent any problems with
                // foreign characters and duplicates
-               String newName = MD5.checksum("FILE_" + new Date().getTime());
+               String hash = UUID.randomUUID().toString();
 
-               String extDot = f.getName().substring(dotidx, 
f.getName().length()).toLowerCase();
-               String ext = extDot.substring(1);
+               String ext = getExt(f);
+               String extDot = String.format(".%s", ext);
                log.debug("file extension: " + ext);
-               StoredFile storedFile = new StoredFile(newName, ext); 
+               StoredFile storedFile = new StoredFile(hash, ext); 
 
                // Check variable to see if this file is a presentation
                // check if this is a a file that can be converted by
@@ -94,22 +95,18 @@ public class FileProcessor {
                        return returnError;
                }
 
-               File completeName = new File(isAsIs ? getUploadFilesDir() : 
getUploadTempFilesDir(), newName + extDot);
+               File completeName = new File(isAsIs ? getUploadFilesDir() : 
getUploadTempFilesDir(), hash + extDot);
                log.debug("writing file to: " + completeName);
                FileHelper.copy(is, completeName);
                is.close();
 
-               String hash = newName + extDot;
                if (isImage) {
-                       hash = newName + ".jpg";
                        f.setType(Type.Image);
                } else if (isVideo) {
-                       hash = newName + FLV_EXTENSION;
                        f.setType(Type.Video);
                } else if (isChart) {
                        f.setType(Type.PollChart);
                } else if (isPdf || canBeConverted) {
-                       hash = newName;
                        f.setType(Type.Presentation);
                }
                f.setHash(hash);
@@ -120,16 +117,16 @@ public class FileProcessor {
                log.debug("canBeConverted: " + canBeConverted);
                if (canBeConverted) {
                        // convert to pdf, thumbs, swf and xml-description
-                       returnError = generatePDF.convertPDF(newName, "files", 
true, completeName);
+                       returnError = generatePDF.convertPDF(hash, "files", 
true, completeName);
                } else if (isPdf) {
                        // convert to thumbs, swf and xml-description
-                       returnError = generatePDF.convertPDF(newName, "files", 
false, completeName);
+                       returnError = generatePDF.convertPDF(hash, "files", 
false, completeName);
                } else if (isChart) {
                        log.debug("uploaded chart file");
                } else if (isImage && !isAsIs) {
                        // convert it to JPG
                        log.debug("##### convert it to JPG: ");
-                       returnError = generateImage.convertImage(newName, 
extDot, "files");
+                       returnError = generateImage.convertImage(hash, extDot, 
"files");
                } else if (isAsIs) {
                        ConverterProcessResult processThumb = 
generateThumbs.generateThumb(thumbImagePrefix, completeName, 50);
                        returnError.addItem("processThumb", processThumb);

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryChartLoader.java
 Sat Aug 20 02:52:45 2016
@@ -35,31 +35,31 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.XppDriver;
 
 public class LibraryChartLoader {
-       private static final Logger log = 
Red5LoggerFactory.getLogger(LibraryWmlLoader.class, webAppRootKey);
+       private static final Logger log = 
Red5LoggerFactory.getLogger(LibraryChartLoader.class, webAppRootKey);
 
-    private static final String fileExt = ".xchart";
+       private static final String fileExt = ".xchart";
 
-    private static LibraryChartLoader instance;
+       private static LibraryChartLoader instance;
 
-    private LibraryChartLoader() {
-    }
+       private LibraryChartLoader() {
+       }
 
-    public static synchronized LibraryChartLoader getInstance() {
-        if (instance == null) {
-            instance = new LibraryChartLoader();
-        }
-        return instance;
-    }
+       public static synchronized LibraryChartLoader getInstance() {
+               if (instance == null) {
+                       instance = new LibraryChartLoader();
+               }
+               return instance;
+       }
 
-    @SuppressWarnings("rawtypes")
+       @SuppressWarnings("rawtypes")
        public ArrayList loadChart(File dir, String fileName) {
-        try {
-            File file = new File(dir, fileName + fileExt);
+               try {
+                       File file = new File(dir, fileName + fileExt);
 
-            log.error("filepathComplete: " + file);
+                       log.error("filepathComplete: " + file);
 
-            XStream xStream = new XStream(new XppDriver());
-            xStream.setMode(XStream.NO_REFERENCES);
+                       XStream xStream = new XStream(new XppDriver());
+                       xStream.setMode(XStream.NO_REFERENCES);
 
                        try (InputStream is = new FileInputStream(file);
                                        BufferedReader reader = new 
BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)))
@@ -67,11 +67,11 @@ public class LibraryChartLoader {
                                ArrayList lMapList = (ArrayList) 
xStream.fromXML(reader);
                                return lMapList;
                        }
-        } catch (Exception err) {
-            log.error("Unexpected error while loading chart", err);
-        }
+               } catch (Exception err) {
+                       log.error("Unexpected error while loading chart", err);
+               }
 
-        return null;
-    }
+               return null;
+       }
 
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/LibraryWmlLoader.java
 Sat Aug 20 02:52:45 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.documents;
 
+import static org.apache.openmeetings.util.OmFileHelper.WML_EXTENSION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.BufferedReader;
@@ -27,11 +28,9 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
+import java.util.List;
 
 import org.apache.openmeetings.util.OmFileHelper;
-import org.dom4j.Element;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
@@ -40,14 +39,12 @@ import com.thoughtworks.xstream.io.xml.X
 
 public class LibraryWmlLoader {
        private static final Logger log = 
Red5LoggerFactory.getLogger(LibraryWmlLoader.class, webAppRootKey);
-       private static final String fileExt = ".wml";
        
-       @SuppressWarnings({ "rawtypes" })
-       public ArrayList loadWmlFile(String fileName){
+       public static List<?> loadWmlFile(String fileName){
                try {
                        String name = fileName;
-                       if (!name.endsWith(fileExt)) {
-                               name += fileExt;
+                       if (!name.endsWith(WML_EXTENSION)) {
+                               name += WML_EXTENSION;
                        }
                        File file = new File(OmFileHelper.getUploadWmlDir(), 
name);
                        log.debug("filepathComplete: " + file);
@@ -58,7 +55,7 @@ public class LibraryWmlLoader {
                        try (InputStream is = new FileInputStream(file);
                                        BufferedReader reader = new 
BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)))
                        {
-                               ArrayList lMapList = (ArrayList) 
xStream.fromXML(reader);
+                               List<?> lMapList = (List<?>) 
xStream.fromXML(reader);
                                
                                return lMapList;
                        }
@@ -66,185 +63,6 @@ public class LibraryWmlLoader {
                        log.error("loadWmlFile",err);
                }
                
-               return null;
+               return new ArrayList<>();
        }
-       
-       /**
-        * @deprecated
-        * @param paintElement
-        * @param subMap
-        */
-       @SuppressWarnings({ "unused", "rawtypes" })
-       private static void createListObjectPaintByNode(Element paintElement, 
LinkedHashMap<Integer,Object> subMap){
-               try {
-                       
-                       LinkedHashMap<Integer,LinkedHashMap> pointMap = new 
LinkedHashMap<Integer,LinkedHashMap>();
-                       Element pointElements = paintElement.element("points");
-                       Integer k = 0;
-                       
-                       for ( Iterator i = pointElements.elementIterator( 
"point" ); i.hasNext(); ) {
-                               Element pointElement = (Element) i.next();
-                               LinkedHashMap<Integer,Object> singlePoint = new 
LinkedHashMap<Integer,Object>();
-                               singlePoint.put(0, pointElement.getName());
-                               singlePoint.put(1, 
Integer.valueOf(pointElement.attribute("val1").getText()));
-                               singlePoint.put(2, 
Integer.valueOf(pointElement.attribute("val2").getText()));
-                               singlePoint.put(3, 
Integer.valueOf(pointElement.attribute("val3").getText()));
-                               singlePoint.put(4, 
Integer.valueOf(pointElement.attribute("val4").getText()));
-                               pointMap.put(k, singlePoint);
-                               
log.debug("createListObjectPaintByNode"+singlePoint);
-                               k++;
-                       }
-                       subMap.put(1, pointMap);
-
-                       subMap.put(2, 
paintElement.element("fillstyle").getText());
-                       subMap.put(3, 
Integer.valueOf(paintElement.element("linewidth").getText()));
-                       subMap.put(4, 
Integer.valueOf(paintElement.element("strokestyle").getText()));
-                       subMap.put(5, 
Integer.valueOf(paintElement.element("counter").getText()));
-                       subMap.put(6, 
Float.valueOf(paintElement.element("x").getText()));
-                       subMap.put(7, 
Float.valueOf(paintElement.element("y").getText()));
-                       subMap.put(8, 
Float.valueOf(paintElement.element("width").getText()));
-                       subMap.put(9, 
Float.valueOf(paintElement.element("height").getText()));
-                       subMap.put(10, 
paintElement.element("layername").getText());            
-                       
-               } catch (Exception err) {
-                       log.error("createListObjectPaintByNode",err);
-               }
-       }
-       
-       /**
-        * @deprecated
-        * @param paintElement
-        * @param subMap
-        */
-       public void createListObjectLetterByNode(Element paintElement, 
LinkedHashMap<Integer,Object> subMap){
-               try {
-
-                       subMap.put(1, 
paintElement.element("textforfield").getText());
-                       subMap.put(2, 
Integer.valueOf(paintElement.element("fgcolor").getText()));
-                       subMap.put(3, 
Integer.valueOf(paintElement.element("fontsize").getText()));
-                       subMap.put(4, 
paintElement.element("fontstyle").getText());
-                       subMap.put(5, 
Integer.valueOf(paintElement.element("counter").getText()));
-                       subMap.put(6, 
Float.valueOf(paintElement.element("x").getText()));
-                       subMap.put(7, 
Float.valueOf(paintElement.element("y").getText()));                      
-                       subMap.put(8, 
Float.valueOf(paintElement.element("width").getText()));          
-                       subMap.put(9, 
Float.valueOf(paintElement.element("height").getText()));         
-                       subMap.put(10, 
paintElement.element("layername").getText());
-                       
-               } catch (Exception err) {
-                       log.error("createListObjectLetterByNode",err);
-               }
-       }       
-       
-       /**
-        * @deprecated
-        * @param paintElement
-        * @param subMap
-        */
-       public void createListObjectImageByNode(Element paintElement, 
LinkedHashMap<Integer,Object> subMap){
-               try {
-
-                       subMap.put(1, 
paintElement.element("urlname").getText());
-                       subMap.put(2, 
paintElement.element("baseurl").getText());
-                       subMap.put(3, 
paintElement.element("filename").getText());
-                       subMap.put(4, 
paintElement.element("modulename").getText());
-                       subMap.put(5, 
paintElement.element("parentpath").getText());
-                       subMap.put(6, paintElement.element("room").getText());
-                       subMap.put(7, paintElement.element("domain").getText());
-                       subMap.put(8, 
Integer.valueOf(paintElement.element("counter").getText()));
-                       subMap.put(9, 
Float.valueOf(paintElement.element("x").getText()));
-                       subMap.put(10, 
Float.valueOf(paintElement.element("y").getText()));
-                       subMap.put(11, 
Float.valueOf(paintElement.element("width").getText()));
-                       subMap.put(12, 
Float.valueOf(paintElement.element("height").getText()));
-                       subMap.put(13, 
paintElement.element("layername").getText());            
-                       
-               } catch (Exception err) {
-                       log.error("createListObjectImageByNode",err);
-               }
-       }       
-       
-       /**
-        * @deprecated
-        * @param paintElement
-        * @param subMap
-        */
-       public void createListObjectObjecByNode(Element paintElement, 
LinkedHashMap<Integer,Object> subMap){
-               try {   
-                       
-                       subMap.put(1, 
paintElement.element("fillstyle").getText());
-                       subMap.put(2, 
paintElement.element("linewidth").getText());
-                       subMap.put(3, 
Integer.valueOf(paintElement.element("strokestyle").getText()));
-                       subMap.put(4, 
Float.valueOf(paintElement.element("startx").getText()));
-                       subMap.put(5, 
Float.valueOf(paintElement.element("starty").getText()));
-                       subMap.put(6, 
Float.valueOf(paintElement.element("endx").getText()));
-                       subMap.put(7, 
Float.valueOf(paintElement.element("endy").getText()));
-                       subMap.put(8, 
Integer.valueOf(paintElement.element("counter").getText()));
-                       subMap.put(9, 
Float.valueOf(paintElement.element("x").getText()));
-                       subMap.put(10, 
Float.valueOf(paintElement.element("y").getText()));
-                       subMap.put(11, 
Float.valueOf(paintElement.element("width").getText()));
-                       subMap.put(12, 
Float.valueOf(paintElement.element("height").getText()));
-                       subMap.put(13, 
paintElement.element("layername").getText());
-                       
-               } catch (Exception err) {
-                       log.error("createListObjectObjecByNode",err);
-               }
-       }               
-       
-       /**
-        * @deprecated
-        * @param paintElement
-        * @param subMap
-        */
-       public void createListObjectRectAndEllipseByNode(Element paintElement, 
LinkedHashMap<Integer,Object> subMap){
-               try {   
-                       
-                       subMap.put(1, 
Integer.valueOf(paintElement.element("stroke").getText()));
-                       subMap.put(2, paintElement.element("line").getText());
-                       subMap.put(3, 
Integer.valueOf(paintElement.element("counter").getText()));
-                       subMap.put(4, 
Float.valueOf(paintElement.element("x").getText()));              
-                       subMap.put(5, 
Float.valueOf(paintElement.element("y").getText()));
-                       subMap.put(6, 
Float.valueOf(paintElement.element("width").getText()));
-                       subMap.put(7, 
Float.valueOf(paintElement.element("height").getText()));
-                       subMap.put(8, 
paintElement.element("layername").getText());
-
-               } catch (Exception err) {
-                       log.error("createListObjectObjecByNode",err);
-               }
-       }
-       
-       /**
-        * @deprecated
-        * @param paintElement
-        * @param subMap
-        */
-       public void createListObjectSWFByNode(Element paintElement, 
LinkedHashMap<Integer,Object> subMap){
-               try {
-
-                       subMap.put(1, 
paintElement.element("urlname").getText());
-                       subMap.put(2, 
paintElement.element("baseurl").getText());
-                       subMap.put(3, 
paintElement.element("filename").getText());
-                       subMap.put(4, 
paintElement.element("modulename").getText());
-                       subMap.put(5, 
paintElement.element("parentpath").getText());
-                       subMap.put(6, paintElement.element("room").getText());
-                       subMap.put(7, paintElement.element("domain").getText());
-                       subMap.put(8, 
Integer.valueOf(paintElement.element("slideNumber").getText()));
-                       subMap.put(9, 
Float.valueOf(paintElement.element("innerx").getText()));
-                       subMap.put(10, 
Float.valueOf(paintElement.element("innery").getText()));
-                       subMap.put(11, 
Float.valueOf(paintElement.element("innerwidth").getText()));
-                       subMap.put(12, 
Float.valueOf(paintElement.element("innerheight").getText()));
-                       subMap.put(13, 
Integer.valueOf(paintElement.element("zoomlevel").getText()));
-                       subMap.put(14, 
Float.valueOf(paintElement.element("initwidth").getText()));
-                       subMap.put(15, 
Float.valueOf(paintElement.element("initheight").getText()));
-                       subMap.put(16, 
Integer.valueOf(paintElement.element("currentzoom").getText()));
-                       subMap.put(17, 
Integer.valueOf(paintElement.element("counter").getText()));
-                       subMap.put(18, 
Float.valueOf(paintElement.element("x").getText()));
-                       subMap.put(19, 
Float.valueOf(paintElement.element("y").getText()));
-                       subMap.put(20, 
Float.valueOf(paintElement.element("width").getText()));
-                       subMap.put(21, 
Float.valueOf(paintElement.element("height").getText()));
-                       subMap.put(22, 
paintElement.element("layername").getText());            
-                       
-               } catch (Exception err) {
-                       log.error("createListObjectImageByNode",err);
-               }
-       }               
-       
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
 Sat Aug 20 02:52:45 2016
@@ -24,8 +24,8 @@ import static org.apache.openmeetings.ut
 
 import java.io.File;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.transaction.util.FileHelper;
@@ -44,7 +44,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.room.Client;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.crypt.MD5;
 import org.red5.logging.Red5LoggerFactory;
 import org.red5.server.api.IConnection;
 import org.red5.server.api.Red5;
@@ -71,8 +70,6 @@ public class ConferenceLibrary implement
        @Autowired
        private FileExplorerItemDao fileDao;
        @Autowired
-       private LibraryWmlLoader libraryWmlLoader;
-       @Autowired
        private WhiteboardManager whiteboardManagement;
 
        public LibraryPresentation getPresentationPreviewFileExplorer(String 
SID, String parentFolder) {
@@ -105,12 +102,12 @@ public class ConferenceLibrary implement
         * Save an Object to the library and returns the file-explorer Id
         * 
         * @param SID
-        * @param room_id
+        * @param roomId
         * @param fileName
         * @param tObjectRef
         * @return - file-explorer Id in case of success, -1 otherwise
         */
-       public Long saveAsObject(String SID, Long room_id, String fileName, 
Object tObjectRef) {
+       public Long saveAsObject(String SID, Long roomId, String fileName, 
Object tObjectRef) {
                try {
                        Long users_id = sessionDao.check(SID);
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
@@ -125,18 +122,10 @@ public class ConferenceLibrary implement
 
                                log.debug("saveAsObject" + tObject.size());
 
-                               String localFileName = MD5.checksum(new 
Date().toString()) + ".wml";
-
-                               
LibraryDocumentConverter.writeToLocalFolder(localFileName, tObject);
+                               FileExplorerItem file = fileDao.add(fileName, 
null, null, roomId, users_id, Type.WmlFile, "", "");
+                               
LibraryDocumentConverter.writeToLocalFolder(file.getHash(), tObject);
 
-                               // String wmlPath = current_dir + 
File.separatorChar+fileName
-                               // +".xml";
-                               // OwnerID == null
-                               Long fileExplorerId = fileDao.add(fileName, "", 
null,
-                                               null, room_id, users_id, 
Type.WmlFile, localFileName, // WML localFileName
-                                               "", "");
-
-                               return fileExplorerId;
+                               return file.getId();
                        }
                } catch (Exception err) {
                        log.error("[saveAsObject] ", err);
@@ -145,7 +134,6 @@ public class ConferenceLibrary implement
        }
 
        /**
-        * 
         * Loads a Object from the library into the whiteboard of all 
participant of
         * the current room
         * 
@@ -167,13 +155,13 @@ public class ConferenceLibrary implement
                                        return;
                                }
 
-                               FileExplorerItem fileExplorerItem = 
fileDao.get(fileId);
-                               if (fileExplorerItem == null) {
+                               FileExplorerItem fi = fileDao.get(fileId);
+                               if (fi == null) {
                                        log.warn("[loadWmlObject] Unable to 
load Wml file by Id {}", fileId);
                                        return;
                                }
 
-                               ArrayList roomItems = 
libraryWmlLoader.loadWmlFile(fileExplorerItem.getWmlFilePath());
+                               List<?> roomItems = 
LibraryWmlLoader.loadWmlFile(fi.getHash());
 
                                Map whiteboardObjClear = new HashMap();
                                whiteboardObjClear.put(2, "clear");

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
 Sat Aug 20 02:52:45 2016
@@ -18,10 +18,14 @@
  */
 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;
@@ -30,6 +34,7 @@ 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;
@@ -44,13 +49,13 @@ public class FileExplorerItemDao {
        @PersistenceContext
        private EntityManager em;
 
-       public Long add(String fileName, String fileHash, Long parentId, Long 
ownerId, Long roomId, Long insertedBy,
-                       Type type, String wmlFilePath, String externalId, 
String externalType) {
+       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(fileHash);
+                       fileItem.setHash(UUID.randomUUID().toString());
                        fileItem.setDeleted(false);
                        fileItem.setParentId(parentId);
                        fileItem.setOwnerId(ownerId);
@@ -59,15 +64,13 @@ public class FileExplorerItemDao {
                        fileItem.setInsertedBy(insertedBy);
                        fileItem.setType(type);
                        fileItem.setUpdated(new Date());
-                       fileItem.setWmlFilePath(wmlFilePath);
                        fileItem.setExternalId(externalId);
                        fileItem.setExternalType(externalType);
 
                        fileItem = em.merge(fileItem);
-                       Long fileItemId = fileItem.getId();
 
-                       log.debug(".add(): file " + fileName + " added as " + 
fileItemId);
-                       return fileItemId;
+                       log.debug(".add(): file " + fileName + " added as " + 
fileItem.getId());
+                       return fileItem;
                } catch (Exception ex2) {
                        log.error(".add(): ", ex2);
                }
@@ -253,4 +256,58 @@ public class FileExplorerItemDao {
                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) {
+                       log.debug("FileExplorerItem fList " + f.getName());
+                       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;
+       }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
 Sat Aug 20 02:52:45 2016
@@ -18,12 +18,11 @@
  */
 package org.apache.openmeetings.db.dao.record;
 
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
-import static org.apache.openmeetings.util.OmFileHelper.getOggRecording;
-import static org.apache.openmeetings.util.OmFileHelper.getRecording;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_AVI;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
+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_OGG;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.util.Date;
@@ -265,20 +264,20 @@ public class RecordingDao {
        private long getSize(Recording r) {
                long size = 0;
 
-               if (isRecordingExists(r.getHash())) {
-                       size += getRecording(r.getHash()).length();
+               if (r.exists(EXTENSION_FLV)) {
+                       size += r.getFile(EXTENSION_FLV).length();
                }
-               if (isRecordingExists(r.getAlternateDownload())) {
-                       size += getRecording(r.getAlternateDownload()).length();
+               if (r.exists(EXTENSION_AVI)) {
+                       size += r.getFile(EXTENSION_AVI).length();
                }
-               if (isRecordingExists(r.getPreviewImage())) {
-                       size += getRecording(r.getPreviewImage()).length();
+               if (r.exists(EXTENSION_JPG)) {
+                       size += r.getFile(EXTENSION_JPG).length();
                }
-               if (isRecordingExists(r.getHash() + MP4_EXTENSION)) {
-                       size += getMp4Recording(r.getHash()).length();
+               if (r.exists(EXTENSION_MP4)) {
+                       size += r.getFile(EXTENSION_MP4).length();
                }
-               if (isRecordingExists(r.getHash() + OGG_EXTENSION)) {
-                       size += getOggRecording(r.getHash()).length();
+               if (r.exists(EXTENSION_OGG)) {
+                       size += r.getFile(EXTENSION_OGG).length();
                }
                for (Recording rec : getByParent(r.getId())) {
                        size += getSize(rec);

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileExplorerItem.java
 Sat Aug 20 02:52:45 2016
@@ -18,6 +18,14 @@
  */
 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.WB_VIDEO_FILE_PREFIX;
+
+import java.io.File;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
@@ -27,6 +35,7 @@ import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 
+import org.apache.openmeetings.util.OmFileHelper;
 import org.simpleframework.xml.Element;
 import org.simpleframework.xml.Root;
 
@@ -49,6 +58,7 @@ import org.simpleframework.xml.Root;
 @Root
 public class FileExplorerItem extends FileItem {
        private static final long serialVersionUID = 1L;
+
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
@@ -59,10 +69,6 @@ public class FileExplorerItem extends Fi
        @Element(data = true, required = false)
        private Long size;
 
-       @Column(name = "wml_file_path")
-       @Element(data = true, required = false)
-       private String wmlFilePath;
-
        @Column(name = "external_id")
        private String externalId;
 
@@ -87,14 +93,6 @@ public class FileExplorerItem extends Fi
                this.size = fileSize;
        }
 
-       public String getWmlFilePath() {
-               return wmlFilePath;
-       }
-
-       public void setWmlFilePath(String wmlFilePath) {
-               this.wmlFilePath = wmlFilePath;
-       }
-
        public String getExternalId() {
                return externalId;
        }
@@ -111,4 +109,28 @@ public class FileExplorerItem extends Fi
                this.externalType = externalType;
        }
 
+       @Override
+       protected File internalGetFile(String ext) {
+               File f = null;
+               switch (getType()) {
+                       case WmlFile:
+                               f = new File(OmFileHelper.getUploadWmlDir(), 
String.format("%s.%s", getHash(), ext == null ? EXTENSION_WML : ext));
+                               break;
+                       case Image:
+                               f = new File(OmFileHelper.getUploadFilesDir(), 
String.format("%s.%s", getHash(), ext == null ? EXTENSION_JPG : ext));
+                               break;
+                       case Video:
+                               f = new 
File(OmFileHelper.getStreamsHibernateDir(), String.format("%s%s.%s", 
WB_VIDEO_FILE_PREFIX, getId(), ext == null ? EXTENSION_MP4 : ext));
+                               break;
+                       case Presentation: {
+                                       File d = new 
File(OmFileHelper.getUploadFilesDir(), getHash());
+                                       f = new File(d, String.format("%s.%s", 
getHash(), ext == null ? EXTENSION_SWF : ext));
+                               }
+                               break;
+                       case PollChart:
+                       case Folder:
+                       default:
+               }
+               return f;
+       }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
 Sat Aug 20 02:52:45 2016
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.entity.file;
 
+import java.io.File;
 import java.util.Date;
 
 import javax.persistence.Column;
@@ -197,4 +198,78 @@ public abstract class FileItem implement
        public void setType(Type type) {
                this.type = type;
        }
+
+       public File getFile() {
+               return getFile(null);
+       }
+
+       protected abstract File internalGetFile(String ext);
+       
+       public final File getFile(String ext) {
+               return internalGetFile(ext);
+       }
+
+       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;
+               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;
+       }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
 Sat Aug 20 02:52:45 2016
@@ -18,6 +18,14 @@
  */
 package org.apache.openmeetings.db.entity.record;
 
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_AVI;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_OGG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
+
+import java.io.File;
 import java.util.Date;
 import java.util.List;
 
@@ -104,6 +112,7 @@ public class Recording extends FileItem
                , PROCESSED
                , ERROR
        }
+
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
@@ -289,4 +298,21 @@ public class Recording extends FileItem
        public void setStatus(Status status) {
                this.status = status;
        }
+
+       @Override
+       public File internalGetFile(String ext) {
+               File f = null;
+               if (getId() != null && !isDeleted()) {
+                       if (ext == null || EXTENSION_MP4.equals(ext)) {
+                               f = getRecording(String.format("%s%s.%s.%s", 
recordingFileName, id, EXTENSION_FLV, EXTENSION_MP4));
+                       } else if (EXTENSION_FLV.equals(ext)) {
+                               f = getRecording(String.format("%s%s.%s", 
recordingFileName, id, EXTENSION_FLV));
+                       } else if (EXTENSION_AVI.equals(ext)) {
+                               f = getRecording(String.format("%s%s.%s", 
recordingFileName, id, EXTENSION_AVI));
+                       } else if (EXTENSION_OGG.equals(ext)) {
+                               f = getRecording(String.format("%s%s.%s.%s", 
recordingFileName, id, EXTENSION_FLV, EXTENSION_OGG));
+                       }
+               }
+               return f;
+       }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
 Sat Aug 20 02:52:45 2016
@@ -199,16 +199,6 @@ public class OmFileHelper {
                return new File(getDir(getStreamsDir(), HIBERNATE_DIR), name);
        }
        
-       public static boolean isRecordingExists(String name) {
-               try {
-                       File f = new File(getDir(getStreamsDir(), 
HIBERNATE_DIR), name);
-                       return f.exists() && f.isFile();
-               } catch (Exception e) {
-                       //no-op
-               }
-               return false;
-       }
-       
        public static File getMp4Recording(String name) {
                return getRecording(name + MP4_EXTENSION);
        }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
 Sat Aug 20 02:52:45 2016
@@ -25,33 +25,33 @@
                        <fieldset class="ui-widget-content">
                                <legend 
class="ui-widget-header"><wicket:message key="1066" /></legend>
                                <div class="formelement">
-                                   <div class="info-text"><wicket:message 
key="1065" /></div>
-                   </div>
-                   <div class="formelement">
-                   <label><wicket:message key="1537" /></label> <input 
type="checkbox" wicket:id="includeFilesInBackup" />
-                   </div>
-                   <div class="formelement">
-                      <span wicket:id="progress"></span>
-                      <div wicket:id="dprogress"></div>
-                   </div>
-                   <div class="formelement">
-                           <!-- Perform Download -->
+                                       <div class="info-text"><wicket:message 
key="1065" /></div>
+                               </div>
+                               <div class="formelement">
+                                       <label><wicket:message key="1537" 
/></label> <input type="checkbox" wicket:id="includeFilesInBackup" />
+                               </div>
+                               <div class="formelement">
+                                       <span wicket:id="progress"></span>
+                                       <div wicket:id="dprogress"></div>
+                               </div>
+                               <div class="formelement">
+                                       <!-- Perform Download -->
                                        <div wicket:id="download" 
class="btn"><wicket:message key="1066"/></div>
                                        <!-- Perform Upload -->
-                                       <div class="fileupload fileupload-new" 
data-provides="fileupload" style="margin: 0; display: inline-block;">
+                                       <div class="fileinput fileinput-new" 
data-provides="fileinput" style="margin: 0; display: inline-block;">
                                                <span class="btn btn-file 
ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span 
                                                        
class="ui-button-text"><wicket:message key="1536"/></span><input 
class="uploadFileField" wicket:id="fileInput" type="file"/></span>
                                        </div>
-                   </div>
-                   <div class="formelement">
-                           <!-- Max upload size -->
-                           <wicket:message key="1491" /> <span 
wicket:id="MaxUploadSize" /><span>MB</span>
-                   </div>
-                   <div class="formelement">
-                           <!-- Backup CLI import information -->
-                      <div class="info-text" wicket:id="cmdLineDesc"></div>
-                   </div>
-               </fieldset>
+                               </div>
+                               <div class="formelement">
+                                       <!-- Max upload size -->
+                                       <wicket:message key="1491" /> <span 
wicket:id="MaxUploadSize" /><span>MB</span>
+                               </div>
+                               <div class="formelement">
+                                       <!-- Backup CLI import information -->
+                                       <div class="info-text" 
wicket:id="cmdLineDesc"></div>
+                               </div>
+                       </fieldset>
                </form>
        </wicket:panel>
 </html>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
 Sat Aug 20 02:52:45 2016
@@ -92,7 +92,7 @@ public class LdapForm extends AdminBaseF
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                LdapConfig ldapConfig = this.getModelObject();
-               if (ldapConfig.getId() <= 0) {
+               if (ldapConfig.getId() != null) {
                        ldapConfig = 
getBean(LdapConfigDao.class).get(ldapConfig.getId());
                } else {
                        ldapConfig = new LdapConfig();

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
 Sat Aug 20 02:52:45 2016
@@ -99,7 +99,7 @@ public class OAuthForm extends AdminBase
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                OAuthServer server = this.getModelObject();
-               if (server.getId() <= 0) {
+               if (server.getId() != null) {
                        server = 
Application.getBean(OAuth2Dao.class).get(getModelObject().getId());
                } else {
                        server = new OAuthServer();

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
 Sat Aug 20 02:52:45 2016
@@ -99,7 +99,7 @@ public class ServerForm extends AdminBas
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                Server server = getModelObject();
-               if (server.getId() > 0) {
+               if (server.getId() != null) {
                        server = 
Application.getBean(ServerDao.class).get(server.getId());
                } else {
                        server = new Server();

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 Sat Aug 20 02:52:45 2016
@@ -63,11 +63,11 @@ import org.apache.openmeetings.web.user.
 import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.admin.AdminWidgetDescriptor;
-import org.apache.openmeetings.web.util.AviRecordingResourceReference;
-import org.apache.openmeetings.web.util.FlvRecordingResourceReference;
-import org.apache.openmeetings.web.util.JpgRecordingResourceReference;
-import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
-import org.apache.openmeetings.web.util.OggRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.AviRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.FlvRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
+import org.apache.openmeetings.web.user.record.OggRecordingResourceReference;
 import org.apache.openmeetings.web.util.ProfileImageResourceReference;
 import org.apache.openmeetings.web.util.UserDashboardPersister;
 import org.apache.wicket.Localizer;

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
 Sat Aug 20 02:52:45 2016
@@ -70,13 +70,13 @@ public abstract class AddFolderDialog ex
                                });
                        }
                };
-               add(form);
+               add(form.setOutputMarkupId(true));
        }
 
        @Override
        protected void onOpen(IPartialPageRequestHandler handler) {
                super.onOpen(handler);
-               
+               handler.add(form);
                setModelObject(name);
                getFeedbackMessages().clear();
        }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
 Sat Aug 20 02:52:45 2016
@@ -39,7 +39,7 @@ public abstract class BasePanel extends
                setOutputMarkupId(true);
        }
 
-       protected MainPage getMainPage() {
+       public MainPage getMainPage() {
                return (MainPage)super.getPage();
        }
        

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
 Sat Aug 20 02:52:45 2016
@@ -23,7 +23,6 @@ import org.apache.wicket.ajax.AjaxReques
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.html.border.Border;
 import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
@@ -36,21 +35,15 @@ public abstract class ConfirmableAjaxBor
        private static final long serialVersionUID = 1L;
        private final Form<?> form = new Form<>("form");
        private final Form<?> userForm;
-       private final IModel<String> title;
-       private final IModel<String> message;
+       private final AbstractFormDialog<?> dialog;
 
        public ConfirmableAjaxBorder(String id, String title, String message) {
-               this(id, Model.of(title), Model.of(message), null);
+               this(id, title, message, null);
        }
        
        public ConfirmableAjaxBorder(String id, String title, String message, 
Form<?> form) {
-               this(id, Model.of(title), Model.of(message), form);
-       }
-       
-       public ConfirmableAjaxBorder(String id, IModel<String> title, 
IModel<String> message, Form<?> form) {
-               super(id, message);
-               this.title = title;
-               this.message = message;
+               super(id, Model.of(message));
+               dialog = newFormDialog("dialog", title, message);
                this.userForm = form;
                setOutputMarkupId(true);
        }
@@ -58,7 +51,6 @@ public abstract class ConfirmableAjaxBor
        @Override
        protected void onInitialize() {
                super.onInitialize();
-               final AbstractFormDialog<?> dialog = newFormDialog("dialog", 
title, message);
                add(new AjaxEventBehavior("click") {
                        private static final long serialVersionUID = 1L;
 
@@ -84,6 +76,10 @@ public abstract class ConfirmableAjaxBor
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
        }
        
+       protected void onEvent(AjaxRequestTarget target) {
+               dialog.open(target);
+       }
+       
        /**
         * Triggered when the form is submitted, but the validation failed
         *
@@ -101,8 +97,6 @@ public abstract class ConfirmableAjaxBor
         */
        protected abstract void onSubmit(AjaxRequestTarget target, Form<?> 
form);
 
-       // Factories //
-
        /**
         * Create the dialog instance<br/>
         * <b>Warning:</b> to be overridden with care!
@@ -112,7 +106,7 @@ public abstract class ConfirmableAjaxBor
         * @param message the message to be displayed
         * @return the dialog instance
         */
-       protected AbstractFormDialog<?> newFormDialog(String id, IModel<String> 
title, IModel<String> message) {
+       protected AbstractFormDialog<?> newFormDialog(String id, String title, 
String message) {
                return new MessageFormDialog(id, title, message, 
DialogButtons.OK_CANCEL, DialogIcon.WARN) {
                        private static final long serialVersionUID = 1L;
 
@@ -138,11 +132,4 @@ public abstract class ConfirmableAjaxBor
                        }
                };
        }
-       
-       @Override
-       protected void onDetach() {
-               super.onDetach();
-               title.detach();
-               message.detach();
-       }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
 Sat Aug 20 02:52:45 2016
@@ -21,7 +21,7 @@
 <html xmlns:wicket="http://wicket.apache.org";>
        <wicket:extend>
                <form wicket:id="form"><div 
-                       class="fileupload fileupload-new" 
data-provides="fileupload" style="margin: 0;"><span 
+                       class="fileinput fileinput-new" 
data-provides="fileinput" style="margin: 0;"><span 
                        class="btn btn-file ui-button ui-widget 
ui-state-default ui-corner-all ui-button-text-only" 
                        style="width: 120px;"><span 
class="ui-button-text"><wicket:message key="379"/></span><input 
                        type="file" accept="image/*" 
wicket:id="image"/></span></div><span 
wicket:id="progress">[progressbar]</span></form>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuItem.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuItem.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuItem.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuItem.java
 Sat Aug 20 02:52:45 2016
@@ -24,15 +24,12 @@ import com.googlecode.wicket.jquery.ui.w
 
 public class MenuItem extends 
com.googlecode.wicket.jquery.ui.widget.menu.MenuItem {
        private static final long serialVersionUID = 1L;
-       protected String desc;
-       private String cssClass;
-       
-       public MenuItem(String title) {
-               super(title);
-       }
+       private String desc;
+       private boolean top;
        
        public MenuItem(String title, List<IMenuItem> items) {
                super(title, items);
+               setTop(true);
        }
        
        public MenuItem(String title, String desc) {
@@ -48,11 +45,11 @@ public class MenuItem extends com.google
                this.desc = desc;
        }
 
-       public String getCssClass() {
-               return cssClass;
+       public boolean isTop() {
+               return top;
        }
 
-       public void setCssClass(String cssClass) {
-               this.cssClass = cssClass;
+       public void setTop(boolean top) {
+               this.top = top;
        }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
 Sat Aug 20 02:52:45 2016
@@ -52,14 +52,12 @@ public class MenuPanel extends BasePanel
                        protected void addMenuItem(ListItem<IMenuItem> item, 
IMenuItem menuItem) {
                                super.addMenuItem(item, menuItem);
                                MenuItem m = (MenuItem)menuItem;
-                               if (Strings.isEmpty(m.getDesc())) {
-                                       
item.add(AttributeAppender.append("class", "top"));
-                               } else {
-                                       
item.add(AttributeAppender.append("class", "sub"));
+                               item.add(AttributeAppender.append("class", 
m.isTop() ? "top" : "sub"));
+                               if (!Strings.isEmpty(m.getDesc())) {
                                        
item.add(AttributeAppender.append("title", m.getDesc()));
                                }
-                               if (!Strings.isEmpty(m.getCssClass())) {
-                                       
item.add(AttributeAppender.append("class", m.getCssClass()));
+                               if (!Strings.isEmpty(m.getIcon())) {
+                                       
item.add(AttributeAppender.append("class", m.getIcon()));
                                }
                        }
                });

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/RoomMenuItem.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/RoomMenuItem.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/RoomMenuItem.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/RoomMenuItem.java
 Sat Aug 20 02:52:45 2016
@@ -21,25 +21,17 @@ package org.apache.openmeetings.web.comm
 public class RoomMenuItem extends MenuItem {
        private static final long serialVersionUID = 1L;
 
-       public RoomMenuItem(String name) {
-               this(name, null);
-       }
-       
        public RoomMenuItem(String name, String desc) {
-               this(name, desc, true, null);
+               super(name, desc);
        }
        
-       public RoomMenuItem(String name, String desc, String cssClass) {
-               this(name, desc, true, cssClass);
+       public RoomMenuItem(String name, String desc, String icon) {
+               super(name, desc);
+               setIcon(icon);
        }
        
        public RoomMenuItem(String name, String desc, boolean enabled) {
-               this(name, desc, enabled, null);
-       }
-       
-       public RoomMenuItem(String name, String desc, boolean enabled, String 
cssClass) {
                super(name, desc);
-               setCssClass(cssClass);
                setEnabled(enabled);
        }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/ConvertingErrorsDialog.java
 Sat Aug 20 02:52:45 2016
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.web.common.tree;
 
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
 import java.util.ArrayList;
@@ -86,7 +84,7 @@ public class ConvertingErrorsDialog exte
                if (f.getHash() == null) {
                        message.setVisible(true);
                        
message.setDefaultModelObject(Application.getString(888));
-               } else if (!isRecordingExists(f.getHash() + MP4_EXTENSION)) {
+               } else if (!f.exists()) {
                        message.setVisible(true);
                        
message.setDefaultModelObject(Application.getString(1595));
                } else {

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
 Sat Aug 20 02:52:45 2016
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.web.common.tree;
 
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
 import org.apache.openmeetings.db.dao.record.RecordingLogDao;
@@ -40,7 +38,7 @@ public class FileItemPanel extends Folde
                if (model.getObject() instanceof Recording) {
                        Recording r = (Recording)model.getObject();
                        long errorCount = 
getBean(RecordingLogDao.class).countErrors(r.getId());
-                       boolean visible = errorCount != 0 || (Status.RECORDING 
!= r.getStatus() && Status.CONVERTING != r.getStatus() && 
!isRecordingExists(r.getHash() + MP4_EXTENSION));
+                       boolean visible = errorCount != 0 || (Status.RECORDING 
!= r.getStatus() && Status.CONVERTING != r.getStatus() && !r.exists());
                        errors.add(new AjaxEventBehavior("click") {
                                private static final long serialVersionUID = 1L;
        

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
 Sat Aug 20 02:52:45 2016
@@ -18,9 +18,6 @@
  */
 package org.apache.openmeetings.web.common.tree;
 
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
-
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
@@ -34,31 +31,32 @@ import org.apache.wicket.markup.repeater
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
-public class FileItemTree<T extends FileItem> extends DefaultNestedTree<T> {
+public class FileItemTree extends DefaultNestedTree<FileItem> {
        private static final long serialVersionUID = 1L;
        private final FileTreePanel treePanel;
-       private final IModel<T> selectedItem = Model.of((T)null);
 
-       public FileItemTree(String id, FileTreePanel treePanel, 
ITreeProvider<T> tp) {
+       public FileItemTree(String id, FileTreePanel treePanel, 
ITreeProvider<FileItem> tp) {
                super(id, tp);
                this.treePanel = treePanel;
                setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
        }
        
        @Override
-       protected Component newContentComponent(String id, IModel<T> node) {
-               return new Folder<T>(id, this, node) {
+       protected Component newContentComponent(String id, IModel<FileItem> 
node) {
+               return new Folder<FileItem>(id, this, node) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected Component newLabelComponent(String id, final 
IModel<T> lm) {
+                       protected Component newLabelComponent(String id, final 
IModel<FileItem> lm) {
                                FileItem r = lm.getObject();
-                               return Type.Folder == r.getType() || r.getId() 
< 1 ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm, treePanel);
+                               return Type.Folder == r.getType() || r.getId() 
== null ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm, 
treePanel);
                        }
                        
                        @Override
                        protected boolean isSelected() {
-                               return 
getModelObject().getId().equals(treePanel.selectedFile.getObject().getId());
+                               FileItem f = getModelObject(), s = 
treePanel.getSelected();
+                               return (s.getId() == null && s.getId() == 
f.getId() && s.getHash().equals(f.getHash()))
+                                               || (s.getId() != null && 
s.getId().equals(f.getId()));
                        }
                        
                        @Override
@@ -68,68 +66,62 @@ public class FileItemTree<T extends File
                        
                        @Override
                        protected void onClick(AjaxRequestTarget target) {
-                               T r = getModelObject();
-                               treePanel.selected.resetSelected(target);
-                               selectedItem.setObject(r);
-                               treePanel.selectedFile.setObject(r);
-                               treePanel.selected = FileItemTree.this;
+                               FileItem r = getModelObject();
+                               treePanel.setSelected(r, target);
                                if (Type.Folder == r.getType()) {
                                        if (getState(r) == State.COLLAPSED) {
                                                super.onClick(target);
                                        }
-                                       updateBranch(r, target);
                                } else {
                                        treePanel.update(target, r);
-                                       updateNode(r, target);
                                }
                        }
                        
-                       private String getItemStyle(T f, String def) {
+                       private String getItemStyle(FileItem f, String def) {
                                String style;
-                               if (f.getId() == 0) {
-                                       style = "my file om-icon";
-                               } else if (f.getId() < 0) {
-                                       style = "public file om-icon";
+                               if (f.getId() == null) {
+                                       style = f.getHash().indexOf("my") > -1 
? "my file om-icon" : "public file om-icon";
                                } else {
+                                       String _style, addStyle = f.exists() ? 
"" : "broken";
                                        switch(f.getType()) {
                                                case Folder:
-                                                       style = def;
+                                                       _style = def;
                                                        break;
                                                case Image:
-                                                       style = "image file 
om-icon";
+                                                       _style = "image file 
om-icon";
                                                        break;
                                                case PollChart:
-                                                       style = "chart file 
om-icon";
+                                                       _style = "chart file 
om-icon";
                                                        break;
                                                case WmlFile:
-                                                       style = "wml file 
om-icon";
+                                                       _style = "wml file 
om-icon";
                                                        break;
+                                               case Video:
                                                case Recording:
                                                {
-                                                       Recording r = 
(Recording)f;
-                                                       if 
(isRecordingExists(r.getHash() + MP4_EXTENSION)) {
-                                                               style = 
"recording om-icon";
-                                                       } else if 
(Status.RECORDING == r.getStatus() || Status.CONVERTING == r.getStatus()) {
-                                                               style = 
"processing-recording om-icon";
-                                                       } else {
-                                                               style = 
"broken-recording om-icon";
+                                                       _style = "recording 
om-icon";
+                                                       if (f instanceof 
Recording) {
+                                                               Status st = 
((Recording)f).getStatus();
+                                                               if 
(Status.RECORDING == st || Status.CONVERTING == st) {
+                                                                       
addStyle = "processing";
+                                                               }
                                                        }
                                                }
                                                        break;
                                                case Presentation:
-                                                       style = "doc file 
om-icon";
+                                                       _style = "doc file 
om-icon";
                                                        break;
-                                               case Video:
                                                default:
-                                                       style = "recording 
om-icon";
+                                                       _style = "file om-icon";
                                                        break;
                                        }
+                                       style = String.format("%s %s", 
addStyle, _style);
                                }
                                return style;
                        }
                        
                        @Override
-                       protected String getOtherStyleClass(T r) {
+                       protected String getOtherStyleClass(FileItem r) {
                                return getItemStyle(r, 
super.getOtherStyleClass(r));
                        }
                        
@@ -149,27 +141,9 @@ public class FileItemTree<T extends File
                        }
                        
                        @Override
-                       protected IModel<String> newLabelModel(IModel<T> model) 
{
+                       protected IModel<String> newLabelModel(IModel<FileItem> 
model) {
                                return Model.of(model.getObject().getName());
                        }
                };
        }
-
-       private void resetSelected(AjaxRequestTarget target) {
-               T _prev = selectedItem.getObject();
-               if (_prev != null) {
-                       if (Type.Folder == _prev.getType()) {
-                               updateBranch(_prev, target);
-                       } else {
-                               updateNode(_prev, target);
-                       }
-                       selectedItem.setObject(null);
-               }
-       }
-       
-       @Override
-       protected void onDetach() {
-               selectedItem.detach();
-               super.onDetach();
-       }
 }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1756981&r1=1756980&r2=1756981&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 Sat Aug 20 02:52:45 2016
@@ -24,15 +24,15 @@
                function treeRevert(dropped) {
                        $('#tree-anchor').get(0).scrollIntoView();
                        this.parent().parent().get(0).scrollIntoView();
-                       return !dropped;
+                       return !dropped || (!!dropped && !!dropped.context && 
$(dropped.context).hasClass('wb', 'room'));
                }
        </script>
-       <div class="file tree">
-               <div class="icons clear trash-toolbar" 
wicket:id="trash-toolbar">
+       <div class="file tree item drop area">
+               <div class="icons clear trash-toolbar" 
wicket:id="trash-toolbar" wicket:message="title:705">
+                       <span wicket:id="upload" class="add om-icon align-left 
clickable" wicket:message="title:702"></span>
                        <span wicket:id="create" class="folder-create om-icon 
align-left clickable" wicket:message="title:703"></span>
                        <span wicket:id="refresh" class="refresh om-icon 
align-left clickable" wicket:message="title:704"></span>
                        <span wicket:id="trash" class="trash om-icon 
align-right clickable"></span>
-                       <span style="padding-left: 20px;" 
wicket:message="title:705"><wicket:message key="1224"/></span>
                        <div class="clear"></div>
                </div>
                <div wicket:id="tree-container" class="trees">
@@ -55,4 +55,4 @@
                <div wicket:id="errors"></div>
        </div>
 </wicket:panel>
-</html>
\ No newline at end of file
+</html>


Reply via email to