From 6899b26a98a5e83e51efad8f178fcea807a90b66 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 13 Dec 2012 08:53:22 +0100
Subject: [PATCH] OO-454: add more patches, more choice for the room sizes

---
 .../manager/OpenMeetingsManagerImpl.java      |  2 +-
 .../ui/OpenMeetingsRecordingsController.java  | 10 ++++-
 .../ui/OpenMeetingsRoomEditController.java    | 42 +++++++++++++++++--
 3 files changed, 48 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/modules/openmeetings/manager/OpenMeetingsManagerImpl.java b/src/main/java/org/olat/modules/openmeetings/manager/OpenMeetingsManagerImpl.java
index 1872fffce46..7841fbd07db 100644
--- a/src/main/java/org/olat/modules/openmeetings/manager/OpenMeetingsManagerImpl.java
+++ b/src/main/java/org/olat/modules/openmeetings/manager/OpenMeetingsManagerImpl.java
@@ -554,7 +554,7 @@ public class OpenMeetingsManagerImpl implements OpenMeetingsManager, UserDataDel
 			omRoom.setNumberOfPartizipants(room.getSize());
 			omRoom.setRoomtypes_id(room.getType());
 			omRoom.setSID(sessionId);
-			omRoom.setWaitForRecording(true);
+			omRoom.setWaitForRecording(false);
 
 			AddRoomWithModerationAndRecordingFlagsResponse addRoomResponse = roomWs.addRoomWithModerationAndRecordingFlags(omRoom);
 			long returned = addRoomResponse.get_return();
diff --git a/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRecordingsController.java b/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRecordingsController.java
index a037e8607b3..5f4563ca7a0 100644
--- a/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRecordingsController.java
+++ b/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRecordingsController.java
@@ -19,6 +19,7 @@
  */
 package org.olat.modules.openmeetings.ui;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.olat.core.CoreSpringFactory;
@@ -37,6 +38,7 @@ import org.olat.core.gui.control.generic.closablewrapper.CloseableModalControlle
 import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
 import org.olat.core.gui.translator.Translator;
+import org.olat.core.util.StringHelper;
 import org.olat.modules.openmeetings.manager.OpenMeetingsException;
 import org.olat.modules.openmeetings.manager.OpenMeetingsManager;
 import org.olat.modules.openmeetings.model.OpenMeetingsRecording;
@@ -92,7 +94,13 @@ public class OpenMeetingsRecordingsController extends BasicController {
 	private void loadModel() {
 		try {
 			List<OpenMeetingsRecording> recordings = openMeetingsManager.getRecordings(roomId);
-			((OpenMeetingsRecordingsDataModel)tableCtr.getTableDataModel()).setObjects(recordings);
+			List<OpenMeetingsRecording> readyRecordings = new ArrayList<OpenMeetingsRecording>(recordings.size());
+			for (OpenMeetingsRecording recording : recordings) {
+				if (StringHelper.containsNonWhitespace(recording.getDownloadName())) {
+					readyRecordings.add(recording);
+				}
+			}
+			((OpenMeetingsRecordingsDataModel)tableCtr.getTableDataModel()).setObjects(readyRecordings);
 			tableCtr.modelChanged();
 		} catch (OpenMeetingsException e) {
 			showError(e.i18nKey());
diff --git a/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRoomEditController.java b/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRoomEditController.java
index 215fd6bb0ae..ba22b465936 100644
--- a/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRoomEditController.java
+++ b/src/main/java/org/olat/modules/openmeetings/ui/OpenMeetingsRoomEditController.java
@@ -19,6 +19,9 @@
  */
 package org.olat.modules.openmeetings.ui;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
@@ -38,6 +41,8 @@ import org.olat.modules.openmeetings.manager.OpenMeetingsManager;
 import org.olat.modules.openmeetings.model.OpenMeetingsRoom;
 import org.olat.modules.openmeetings.model.RoomType;
 
+import edu.emory.mathcs.backport.java.util.Collections;
+
 /**
  * 
  * Initial date: 06.11.2012<br>
@@ -58,7 +63,6 @@ public class OpenMeetingsRoomEditController extends FormBasicController {
 	private final String[] moderationModeKeys;
 	private final String[] recordingKeys = {"xx"};
 
-	
 	private final BusinessGroup group;
 	private final OLATResourceable ores;
 	private final String subIdentifier;
@@ -66,6 +70,8 @@ public class OpenMeetingsRoomEditController extends FormBasicController {
 	private OpenMeetingsRoom room;
 	private OpenMeetingsRoom defaultSettings;
 	private final OpenMeetingsManager openMeetingsManager;
+	
+	private long[] sizes = {2, 4, 6, 8, 10, 12, 14, 16, 25, 50, 100, 150, 200, 1000};
 
 	public OpenMeetingsRoomEditController(UserRequest ureq, WindowControl wControl, BusinessGroup group, OLATResourceable ores,
 			String subIdentifier, String resourceName, OpenMeetingsRoom defaultSettings, boolean admin) {
@@ -88,14 +94,42 @@ public class OpenMeetingsRoomEditController extends FormBasicController {
 			showError(e.i18nKey());
 		}
 
-		if(room != null && room.getSize() != 16 && room.getSize() != 100) {
-			roomSizes = new String[]{"16", Long.toString(room.getSize()),  "100"};
+		if(room != null && !isLegalSize(room.getSize())) {
+			roomSizes = toStringSizes(room.getSize());
 		} else {
-			roomSizes = new String[]{"16", "100"};
+			roomSizes = toStringSizes();
 		}
 		initForm(ureq);
 	}
 	
+	private String[] toStringSizes(long... addSizes) {
+		List<Long> endSizes = new ArrayList<Long>(sizes.length + 2);
+		for(long size:sizes) {
+			endSizes.add(new Long(size));
+		}
+		if(addSizes != null && addSizes.length > 0) {
+			for(long size:addSizes) {
+				endSizes.add(new Long(size));
+			}
+		}
+		Collections.sort(endSizes);
+		String[] stringuifiedSizes = new String[endSizes.size()];
+		int count = 0;
+		for(Long endSize:endSizes) {
+			stringuifiedSizes[count++] = endSize.toString();
+		}
+		return stringuifiedSizes;
+	}
+	
+	private boolean isLegalSize(long roomSize) {
+		for(long size:sizes) {
+			if(size == roomSize) {
+				return true;
+			}
+		}
+		return false;
+	}
+	
 	public OpenMeetingsRoom getRoom() {
 		return room;
 	}
-- 
GitLab