Search in sources :

Example 16 with Feed

use of org.olat.modules.webFeed.Feed in project OpenOLAT by OpenOLAT.

the class FeedManagerImpl method deleteItem.

@Override
public Feed deleteItem(Item item) {
    Feed feed = item.getFeed();
    // delete the item from the database
    itemDAO.removeItem(item);
    // delete the item container from the file system
    feedFileStorage.deleteItemContainer(item);
    // delete comments and ratings
    CommentAndRatingService commentAndRatingService = CoreSpringFactory.getImpl(CommentAndRatingService.class);
    commentAndRatingService.deleteAll(feed, item.getGuid());
    // reload the Feed
    Feed reloadedFeed = feedDAO.loadFeed(feed.getKey());
    // or from an external source.
    if (!hasItems(reloadedFeed)) {
        // set undefined
        reloadedFeed.setExternal(null);
    }
    reloadedFeed.setLastModified(new Date());
    reloadedFeed = feedDAO.updateFeed(reloadedFeed);
    return reloadedFeed;
}
Also used : CommentAndRatingService(org.olat.core.commons.services.commentAndRating.CommentAndRatingService) Date(java.util.Date) SyndFeed(com.rometools.rome.feed.synd.SyndFeed) Feed(org.olat.modules.webFeed.Feed) RSSFeed(org.olat.modules.webFeed.RSSFeed)

Example 17 with Feed

use of org.olat.modules.webFeed.Feed in project OpenOLAT by OpenOLAT.

the class FeedManagerImpl method copy.

@Override
public boolean copy(OLATResource sourceResource, OLATResource targetResource) {
    // copy the folders and files
    File sourceFileroot = fileResourceManager.getFileResourceRootImpl(sourceResource).getBasefile();
    File sourceFeedRoot = new File(sourceFileroot, getFeedKind(sourceResource));
    File targetFileroot = fileResourceManager.getFileResourceRootImpl(targetResource).getBasefile();
    FileUtils.copyFileToDir(sourceFeedRoot, targetFileroot, "add file resource");
    // load the feed and the items from the database
    Feed sourceFeed = feedDAO.loadFeed(sourceResource);
    List<Item> items = itemDAO.loadItems(sourceFeed);
    // copy the feed in the database
    Feed targetFeed = feedDAO.copyFeed(sourceResource, targetResource);
    // copy the items in the database
    for (Item item : items) {
        itemDAO.copyItem(targetFeed, item);
    }
    return true;
}
Also used : Item(org.olat.modules.webFeed.Item) VFSItem(org.olat.core.util.vfs.VFSItem) File(java.io.File) SyndFeed(com.rometools.rome.feed.synd.SyndFeed) Feed(org.olat.modules.webFeed.Feed) RSSFeed(org.olat.modules.webFeed.RSSFeed)

Example 18 with Feed

use of org.olat.modules.webFeed.Feed in project OpenOLAT by OpenOLAT.

the class FeedNotificationsHandler method createSubscriptionInfo.

@Override
public SubscriptionInfo createSubscriptionInfo(Subscriber subscriber, Locale locale, Date compareDate) {
    SubscriptionInfo si;
    Publisher p = subscriber.getPublisher();
    Date latestNews = p.getLatestNewsDate();
    try {
        final Translator translator = Util.createPackageTranslator(FeedMainController.class, locale);
        if (notificationsManager.isPublisherValid(p) && compareDate.before(latestNews)) {
            String title;
            try {
                RepositoryEntry re = repoManager.lookupRepositoryEntry(OresHelper.createOLATResourceableInstance(p.getResName(), p.getResId()), false);
                if (re.getAccess() == RepositoryEntry.DELETED || re.getRepositoryEntryStatus().isClosed() || re.getRepositoryEntryStatus().isUnpublished()) {
                    return notificationsManager.getNoSubscriptionInfo();
                }
                String displayName = re.getDisplayname();
                if ("CourseModule".equals(p.getResName())) {
                    ICourse course = CourseFactory.loadCourse(re);
                    CourseNode node = course.getRunStructure().getNode(p.getSubidentifier());
                    if (node == null) {
                        notificationsManager.deactivate(p);
                        return notificationsManager.getNoSubscriptionInfo();
                    }
                    title = translator.translate(NOTIFICATIONS_HEADER_COURSE, new String[] { displayName });
                } else {
                    title = getHeader(translator, displayName);
                }
            } catch (Exception e) {
                log.error("Unknown Exception", e);
                return notificationsManager.getNoSubscriptionInfo();
            }
            OLATResourceable feedOres = OresHelper.createOLATResourceableInstance(p.getType(), new Long(p.getData()));
            Feed feed = feedManager.loadFeed(feedOres);
            List<Item> listItems = feedManager.loadItems(feed);
            List<SubscriptionListItem> items = new ArrayList<>();
            for (Item item : listItems) {
                if (!item.isDraft()) {
                    appendSubscriptionItem(item, p, compareDate, translator, items);
                }
            }
            si = new SubscriptionInfo(subscriber.getKey(), p.getType(), new TitleItem(title, getCssClassIcon()), items);
        } else {
            // no news
            si = notificationsManager.getNoSubscriptionInfo();
        }
    } catch (Exception e) {
        log.error("Unknown Exception", e);
        si = notificationsManager.getNoSubscriptionInfo();
    }
    return si;
}
Also used : OLATResourceable(org.olat.core.id.OLATResourceable) ArrayList(java.util.ArrayList) SubscriptionInfo(org.olat.core.commons.services.notifications.SubscriptionInfo) ICourse(org.olat.course.ICourse) Publisher(org.olat.core.commons.services.notifications.Publisher) RepositoryEntry(org.olat.repository.RepositoryEntry) TitleItem(org.olat.core.commons.services.notifications.model.TitleItem) Date(java.util.Date) TitleItem(org.olat.core.commons.services.notifications.model.TitleItem) Item(org.olat.modules.webFeed.Item) SubscriptionListItem(org.olat.core.commons.services.notifications.model.SubscriptionListItem) SubscriptionListItem(org.olat.core.commons.services.notifications.model.SubscriptionListItem) Translator(org.olat.core.gui.translator.Translator) CourseNode(org.olat.course.nodes.CourseNode) Feed(org.olat.modules.webFeed.Feed)

Example 19 with Feed

use of org.olat.modules.webFeed.Feed in project OpenOLAT by OpenOLAT.

the class BlogHandler method onDescriptionChanged.

@Override
public void onDescriptionChanged(RepositoryEntry entry) {
    Feed feed = FeedManager.getInstance().updateFeedWithRepositoryEntry(entry);
    DBFactory.getInstance().commitAndCloseSession();
    CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(new FeedChangedEvent(feed.getKey()), feed);
}
Also used : Feed(org.olat.modules.webFeed.Feed) FeedChangedEvent(org.olat.modules.webFeed.FeedChangedEvent)

Example 20 with Feed

use of org.olat.modules.webFeed.Feed in project OpenOLAT by OpenOLAT.

the class PodcastHandler method onDescriptionChanged.

@Override
public void onDescriptionChanged(RepositoryEntry entry) {
    Feed feed = FeedManager.getInstance().updateFeedWithRepositoryEntry(entry);
    DBFactory.getInstance().commitAndCloseSession();
    CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(new FeedChangedEvent(feed.getKey()), feed);
}
Also used : Feed(org.olat.modules.webFeed.Feed) FeedChangedEvent(org.olat.modules.webFeed.FeedChangedEvent)

Aggregations

Feed (org.olat.modules.webFeed.Feed)216 Test (org.junit.Test)162 Item (org.olat.modules.webFeed.Item)98 FeedImpl (org.olat.modules.webFeed.model.FeedImpl)76 OLATResource (org.olat.resource.OLATResource)72 BlogFileResource (org.olat.fileresource.types.BlogFileResource)60 ItemImpl (org.olat.modules.webFeed.model.ItemImpl)52 SyndFeed (com.rometools.rome.feed.synd.SyndFeed)36 VFSContainer (org.olat.core.util.vfs.VFSContainer)28 RSSFeed (org.olat.modules.webFeed.RSSFeed)24 Date (java.util.Date)22 RepositoryEntry (org.olat.repository.RepositoryEntry)12 OLATResourceable (org.olat.core.id.OLATResourceable)8 Path (java.nio.file.Path)6 LocalDate (java.time.LocalDate)6 VFSItem (org.olat.core.util.vfs.VFSItem)6 VFSLeaf (org.olat.core.util.vfs.VFSLeaf)6 FeedItemDocument (org.olat.modules.webFeed.search.document.FeedItemDocument)6 OlatDocument (org.olat.search.model.OlatDocument)6 IOException (java.io.IOException)4