You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2014/02/07 04:45:42 UTC
svn commit: r1565527 - in /openmeetings/branches/3.0.x/src:
db/java/org/apache/openmeetings/db/dao/record/
db/java/org/apache/openmeetings/db/dto/file/
web/java/org/apache/openmeetings/web/user/record/
Author: sebawagner
Date: Fri Feb 7 03:45:42 2014
New Revision: 1565527
URL: http://svn.apache.org/r1565527
Log:
OPENMEETINGS-921 Partially fix home/public drive size to be displayed in Recordings section. Formatting is missing as well as the update when anything is changed or deleted.
Added:
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingContainerData.java
Modified:
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java?rev=1565527&r1=1565526&r2=1565527&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java Fri Feb 7 03:45:42 2014
@@ -20,6 +20,7 @@ package org.apache.openmeetings.db.dao.r
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import java.io.File;
import java.util.Date;
import java.util.List;
@@ -28,10 +29,15 @@ import javax.persistence.NoResultExcepti
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.file.RecordingContainerData;
import org.apache.openmeetings.db.dto.file.RecordingObject;
import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.user.Organisation_Users;
+import org.apache.openmeetings.util.OmFileHelper;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
/**
@@ -40,9 +46,13 @@ import org.springframework.transaction.a
*/
@Transactional
public class FlvRecordingDao {
+
private static final Logger log = Red5LoggerFactory.getLogger(FlvRecordingDao.class, webAppRootKey);
+
@PersistenceContext
private EntityManager em;
+ @Autowired
+ private UserDao userDao;
public FlvRecording get(Long flvRecordingId) {
try {
@@ -550,5 +560,80 @@ public class FlvRecordingDao {
log.error("[moveFile]: ", ex2);
}
}
+
+ public RecordingContainerData getRecordingContainerData(long userId) {
+ try {
+ RecordingContainerData containerData = new RecordingContainerData();
+
+ // User Home Recordings
+ List<FlvRecording> homeFlvRecordings = getFlvRecordingRootByOwner(userId);
+ long homeFileSize = 0;
+
+ for (FlvRecording homeFlvRecording : homeFlvRecordings) {
+ homeFileSize += this
+ .getSizeOfDirectoryAndSubs(homeFlvRecording);
+ }
+
+ containerData.setUserHomeSize(homeFileSize);
+
+ // Public Recordings
+ long publicFileSize = 0;
+
+ //get all organizations the user can view
+ for (Organisation_Users ou : userDao.get(userId).getOrganisation_users()) {
+ List<FlvRecording>publicFlvRecordings = getFlvRecordingRootByPublic(ou.getOrganisation().getOrganisation_id());
+ //get sizes
+ for (FlvRecording publicFlvRecording : publicFlvRecordings) {
+ publicFileSize += this
+ .getSizeOfDirectoryAndSubs(publicFlvRecording);
+ }
+ }
+ containerData.setPublicFileSize(publicFileSize);
+
+ return containerData;
+ } catch (Exception ex2) {
+ log.error("[getRecordingContainerData]: ", ex2);
+ }
+ return null;
+ }
+
+ private long getSizeOfDirectoryAndSubs(FlvRecording rec) {
+ try {
+ long fileSize = 0;
+
+ if (rec.getFileHash() != null) {
+ File tFile = new File(OmFileHelper.getStreamsHibernateDir(), rec.getFileHash());
+ if (tFile.exists()) {
+ fileSize += tFile.length();
+ }
+ }
+
+ if (rec.getAlternateDownload() != null) {
+ File dFile = new File(OmFileHelper.getStreamsHibernateDir(), rec.getAlternateDownload());
+ if (dFile.exists()) {
+ fileSize += dFile.length();
+ }
+ }
+ if (rec.getPreviewImage() != null) {
+ File iFile = new File(OmFileHelper.getStreamsHibernateDir(), rec.getPreviewImage());
+ if (iFile.exists()) {
+ fileSize += iFile.length();
+ }
+ }
+
+ List<FlvRecording> flvRecordings = getFlvRecordingByParent(
+ rec.getFlvRecordingId());
+
+ for (FlvRecording flvRecording : flvRecordings) {
+ fileSize += getSizeOfDirectoryAndSubs(flvRecording);
+ }
+
+ return fileSize;
+
+ } catch (Exception err) {
+ log.error("[getSizeOfDirectoryAndSubs] ", err);
+ }
+ return 0;
+ }
}
Added: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingContainerData.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingContainerData.java?rev=1565527&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingContainerData.java (added)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingContainerData.java Fri Feb 7 03:45:42 2014
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.dto.file;
+
+import java.io.Serializable;
+
+public class RecordingContainerData implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7211000652612571746L;
+
+ private long userHomeSize;
+ private long publicFileSize;
+
+ public long getUserHomeSize() {
+ return userHomeSize;
+ }
+ public void setUserHomeSize(long userHomeSize) {
+ this.userHomeSize = userHomeSize;
+ }
+ public long getPublicFileSize() {
+ return publicFileSize;
+ }
+ public void setPublicFileSize(long publicFileSize) {
+ this.publicFileSize = publicFileSize;
+ }
+
+}
Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1565527&r1=1565526&r2=1565527&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java Fri Feb 7 03:45:42 2014
@@ -31,6 +31,7 @@ import java.util.List;
import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.file.RecordingContainerData;
import org.apache.openmeetings.db.entity.record.FlvRecording;
import org.apache.openmeetings.db.entity.user.Organisation_Users;
import org.apache.openmeetings.web.app.WebSession;
@@ -50,6 +51,7 @@ import org.apache.wicket.markup.repeater
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
public class RecordingsPanel extends UserPanel {
private static final long serialVersionUID = 1321258690447136958L;
@@ -60,6 +62,8 @@ public class RecordingsPanel extends Use
private final IModel<FlvRecording> rm = new CompoundPropertyModel<FlvRecording>(new FlvRecording());
private final RecordingErrorsDialog errorsDialog = new RecordingErrorsDialog("errors", Model.of((FlvRecording)null));
private RecordingTree selected;
+
+ private RecordingContainerData recordingContainerData = getBean(FlvRecordingDao.class).getRecordingContainerData(getUserId());
public RecordingsPanel(String id) {
super(id);
@@ -122,8 +126,8 @@ public class RecordingsPanel extends Use
.add(new RecordingTree("publicrecordings", new PublicRecordingTreeProvider()))
.setOutputMarkupId(true)
);
- add(new Label("homeSize", ""));
- add(new Label("publicSize", ""));
+ add(new Label("homeSize", new PropertyModel<RecordingContainerData>(recordingContainerData, "userHomeSize"))); //new Label("homeSize", "")
+ add(new Label("publicSize", new PropertyModel<RecordingContainerData>(recordingContainerData, "publicFileSize")));
add(video, info, errorsDialog);
}