Skip to content
Snippets Groups Projects
Commit 01c2346c authored by srosse's avatar srosse
Browse files

Merge branch 'OpenOLAT_14.2' of...

Merge branch 'OpenOLAT_14.2' of ssh://srosse@office.frentix.com/home/srosse/repositories/OpenOLAT.git into OpenOLAT_14.2
parents f80c1aa8 6e6ab059
No related branches found
No related tags found
No related merge requests found
......@@ -22,9 +22,12 @@ package org.olat.course.nodes.livestream.manager;
import java.util.Date;
import java.util.List;
import javax.persistence.TypedQuery;
import org.olat.core.commons.persistence.DB;
import org.olat.core.commons.persistence.QueryBuilder;
import org.olat.core.id.Identity;
import org.olat.core.util.StringHelper;
import org.olat.course.nodes.livestream.Launch;
import org.olat.course.nodes.livestream.model.LaunchImpl;
import org.olat.repository.RepositoryEntry;
......@@ -60,17 +63,21 @@ public class LiveStreamLaunchDAO {
sb.append("select count(distinct launch.identity.key)");
sb.append(" from livestreamlaunch launch");
sb.and().append("launch.courseEntry.key = :courseEntryKey");
sb.and().append("launch.subIdent = :subIdent");
sb.and().append("launch.launchDate >= :from");
sb.and().append("launch.launchDate <= :to");
if (StringHelper.containsNonWhitespace(subIdent)) {
sb.and().append("launch.subIdent = :subIdent");
}
List<Long> counts = dbInstance.getCurrentEntityManager()
TypedQuery<Long> query = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Long.class)
.setParameter("courseEntryKey", courseEntry.getKey())
.setParameter("subIdent", subIdent)
.setParameter("from", from)
.setParameter("to", to)
.getResultList();
.setParameter("to", to);
if (StringHelper.containsNonWhitespace(subIdent)) {
query.setParameter("subIdent", subIdent);
}
List<Long> counts = query.getResultList();
return !counts.isEmpty()? counts.get(0): null;
}
......
......@@ -19,11 +19,15 @@
*/
package org.olat.course.nodes.livestream.ui;
import java.util.List;
import java.util.Locale;
import org.olat.core.commons.persistence.SortKey;
import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnDef;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef;
import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel;
import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableModelDelegate;
/**
*
......@@ -31,7 +35,8 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStreamEventRow> {
public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStreamEventRow>
implements SortableFlexiTableDataModel<LiveStreamEventRow> {
private final Locale locale;
......@@ -39,6 +44,13 @@ public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStr
super(columnsModel);
this.locale = locale;
}
@Override
public void sort(SortKey orderBy) {
SortableFlexiTableModelDelegate<LiveStreamEventRow> sorter = new SortableFlexiTableModelDelegate<>(orderBy, this, null);
List<LiveStreamEventRow> rows = sorter.sort();
super.setObjects(rows);
}
@Override
public Object getValueAt(int row, int col) {
......@@ -46,6 +58,7 @@ public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStr
return getValueAt(reason, col);
}
@Override
public Object getValueAt(LiveStreamEventRow row, int col) {
switch(EventCols.values()[col]) {
case begin: return row.getEvent().getBegin();
......@@ -63,7 +76,7 @@ public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStr
return new LiveStreamEventDataModel(getTableColumnModel(), locale);
}
public enum EventCols implements FlexiColumnDef {
public enum EventCols implements FlexiSortableColumnDef {
subject("table.header.subject"),
begin("table.header.begin"),
end("table.header.end"),
......@@ -81,5 +94,15 @@ public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStr
public String i18nHeaderKey() {
return i18nKey;
}
@Override
public boolean sortable() {
return true;
}
@Override
public String sortKey() {
return name();
}
}
}
......@@ -97,6 +97,7 @@ public class LiveStreamListController extends FormBasicController {
for (LiveStreamEvent liveStreamEvent : upcomingEvents) {
rows.add(new LiveStreamEventRow(liveStreamEvent));
}
// ascending
Collections.sort(rows, (e1, e2) -> e1.getEvent().getBegin().compareTo(e2.getEvent().getBegin()));
dataModel.setObjects(rows);
tableEl.reset(false, false, true);
......
......@@ -101,12 +101,13 @@ public class LiveStreamStatisticController extends FormBasicController {
List<LiveStreamEventRow> rows = new ArrayList<>(upcomingEvents.size());
for (LiveStreamEvent liveStreamEvent : upcomingEvents) {
LiveStreamEventRow row = new LiveStreamEventRow(liveStreamEvent);
Long viewers = liveStreamService.getLaunchers(courseEntry, courseNodeIdent, liveStreamEvent.getBegin(),
Long viewers = liveStreamService.getLaunchers(courseEntry, null, liveStreamEvent.getBegin(),
liveStreamEvent.getEnd());
row.setViewers(viewers);
rows.add(row);
}
Collections.sort(rows, (e1, e2) -> e1.getEvent().getBegin().compareTo(e2.getEvent().getBegin()));
// descending
Collections.sort(rows, (e1, e2) -> e2.getEvent().getBegin().compareTo(e1.getEvent().getBegin()));
dataModel.setObjects(rows);
tableEl.reset(false, false, true);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment