use of org.olat.core.commons.services.notifications.NotificationsManager in project openolat by klemens.
the class OLATUpgrade_7_1_0 method migrateNotificationPublishers.
private void migrateNotificationPublishers(UpgradeManager upgradeManager, UpgradeHistoryData uhd) {
if (!uhd.getBooleanDataValue(TASK_CHECK_NOTIFICATIONS)) {
log.audit("+-----------------------------------------------------------------------------+");
log.audit("+... Check the businesspath for the publishers (notifications) ...+");
log.audit("+-----------------------------------------------------------------------------+");
if (!portletRepositoryTeacherEnabled && !portletRepositoryStudentEnabled) {
log.audit("**** Repository portlets disabled: don't need to check publishers. ****");
uhd.setBooleanDataValue(TASK_CHECK_NOTIFICATIONS, true);
upgradeManager.setUpgradesHistory(uhd, VERSION);
return;
}
int counter = 0;
NotificationsManager notificationMgr = NotificationsManager.getInstance();
List<Publisher> allPublishers = notificationMgr.getAllPublisher();
if (log.isDebug())
log.info("Found " + allPublishers.size() + " publishers to check.");
for (Publisher publisher : allPublishers) {
if (publisher != null && StringHelper.containsNonWhitespace(publisher.getBusinessPath()) && (publisher.getBusinessPath().startsWith("[Identity") || publisher.getBusinessPath().startsWith("ROOT[Identity"))) {
try {
String businessPath = publisher.getBusinessPath();
int startIndex = businessPath.indexOf("[Identity");
int stopIndex = businessPath.indexOf("]", startIndex);
int wide = stopIndex - startIndex;
if (wide > 30) {
// Identity:326394598 cannot be too wide
continue;
} else if (stopIndex + 1 >= businessPath.length()) {
// only identity
continue;
}
String correctPath = businessPath.substring(stopIndex + 1);
publisher.setBusinessPath(correctPath);
DBFactory.getInstance().updateObject(publisher);
} catch (ObjectDeletedException e) {
log.warn("Publisher was already deleted, no update possible! Publisher key: " + publisher.getKey());
} catch (Exception e) {
log.warn("Publisher was already deleted, no update possible! Publisher key: " + publisher.getKey());
}
counter++;
}
if (counter > 0 && counter % 100 == 0) {
log.audit("Another 100 publishers done");
DBFactory.getInstance().intermediateCommit();
}
}
DBFactory.getInstance().intermediateCommit();
log.audit("**** Checked " + counter + " publishers. ****");
uhd.setBooleanDataValue(TASK_CHECK_NOTIFICATIONS, true);
upgradeManager.setUpgradesHistory(uhd, VERSION);
}
}
use of org.olat.core.commons.services.notifications.NotificationsManager in project openolat by klemens.
the class NotificationSubscriptionAndNewsFormatter method getSubscriptionItem.
public SubscriptionItem getSubscriptionItem(Subscriber sub) {
SubscriptionInfo subsInfo = subsInfoMap.get(sub);
NotificationsManager notiMgr = NotificationsManager.getInstance();
SubscriptionItem subscrItem = notiMgr.createSubscriptionItem(subsInfo, sub, translator.getLocale(), SubscriptionInfo.MIME_HTML, SubscriptionInfo.MIME_HTML);
return subscrItem;
}
use of org.olat.core.commons.services.notifications.NotificationsManager in project openolat by klemens.
the class NotificationSubscriptionController method updateSubscriptionsDataModel.
/**
* Update the table model
*
* @param ureq
*/
void updateSubscriptionsDataModel() {
// Load subscriptions from DB. Don't use the ureq.getIdentity() but the
// subscriberIdentity instead to make this controller also be usable in the
// admin environment (admins might change notifications for a user)
NotificationsManager man = NotificationsManager.getInstance();
List<Subscriber> subs = man.getSubscribers(subscriberIdentity);
for (Iterator<Subscriber> subIt = subs.iterator(); subIt.hasNext(); ) {
Subscriber sub = subIt.next();
if (!man.isPublisherValid(sub.getPublisher())) {
subIt.remove();
}
}
subscriptionsTableModel.setObjects(subs);
// Tell table about model change or set table model if not already set
if (subscriptionsTableCtr.getTableDataModel() == null) {
subscriptionsTableCtr.setTableDataModel(subscriptionsTableModel);
} else {
subscriptionsTableCtr.modelChanged(true);
}
}
use of org.olat.core.commons.services.notifications.NotificationsManager in project openolat by klemens.
the class NotificationsWebService method getPublisher.
/**
* Get the publisher by resource name and id + sub identifier.
*
* @response.representation.200.qname {http://www.example.com}publisherVo
* @response.representation.200.mediaType application/xml, application/json
* @response.representation.200.doc The publisher
* @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_PUBLISHERVO}
* @response.representation.204.doc The publisher doesn't exist
* @response.representation.401.doc The roles of the authenticated user are not sufficient
* @return It returns the <code>CourseVO</code> object representing the course.
*/
@GET
@Path("publisher/{ressourceName}/{ressourceId}/{subIdentifier}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getPublisher(@PathParam("ressourceName") String ressourceName, @PathParam("ressourceId") Long ressourceId, @PathParam("subIdentifier") String subIdentifier, @Context HttpServletRequest request) {
if (!isAdmin(request)) {
return Response.serverError().status(Status.UNAUTHORIZED).build();
}
NotificationsManager notificationsMgr = NotificationsManager.getInstance();
SubscriptionContext subsContext = new SubscriptionContext(ressourceName, ressourceId, subIdentifier);
Publisher publisher = notificationsMgr.getPublisher(subsContext);
if (publisher == null) {
return Response.ok().status(Status.NO_CONTENT).build();
}
PublisherVO publisherVo = new PublisherVO(publisher);
return Response.ok(publisherVo).build();
}
use of org.olat.core.commons.services.notifications.NotificationsManager in project openolat by klemens.
the class NotificationsWebService method getSubscriber.
@GET
@Path("subscribers/{ressourceName}/{ressourceId}/{subIdentifier}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getSubscriber(@PathParam("ressourceName") String ressourceName, @PathParam("ressourceId") Long ressourceId, @PathParam("subIdentifier") String subIdentifier, @Context HttpServletRequest request) {
if (!isAdmin(request)) {
return Response.serverError().status(Status.UNAUTHORIZED).build();
}
NotificationsManager notificationsMgr = NotificationsManager.getInstance();
SubscriptionContext subsContext = new SubscriptionContext(ressourceName, ressourceId, subIdentifier);
Publisher publisher = notificationsMgr.getPublisher(subsContext);
if (publisher == null) {
return Response.ok().status(Status.NO_CONTENT).build();
}
List<Subscriber> subscribers = notificationsMgr.getSubscribers(publisher);
SubscriberVO[] subscriberVoes = new SubscriberVO[subscribers.size()];
int count = 0;
for (Subscriber subscriber : subscribers) {
SubscriberVO subscriberVO = new SubscriberVO();
subscriberVO.setPublisherKey(publisher.getKey());
subscriberVO.setSubscriberKey(subscriber.getKey());
subscriberVO.setIdentityKey(subscriber.getIdentity().getKey());
subscriberVoes[count++] = subscriberVO;
}
return Response.ok(subscriberVoes).build();
}
Aggregations