Search in sources :

Example 1 with Feed

use of fi.otavanopisto.muikku.plugins.feed.model.Feed in project muikku by otavanopisto.

the class FeedDAO method findByName.

public Feed findByName(String name) {
    EntityManager entityManager = getEntityManager();
    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Feed> criteria = criteriaBuilder.createQuery(Feed.class);
    Root<Feed> root = criteria.from(Feed.class);
    criteria.select(root);
    criteria.where(criteriaBuilder.equal(root.get(Feed_.name), name));
    return getSingleResult(entityManager.createQuery(criteria));
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) EntityManager(javax.persistence.EntityManager) Feed(fi.otavanopisto.muikku.plugins.feed.model.Feed)

Example 2 with Feed

use of fi.otavanopisto.muikku.plugins.feed.model.Feed in project muikku by otavanopisto.

the class FeedRESTService method findFeedByNames.

@GET
@Path("/feeds/{NAMES}")
@RESTPermit(handling = Handling.UNSECURED)
public Response findFeedByNames(@PathParam("NAMES") String names, @QueryParam("numItems") @DefaultValue("10") int numItems, @QueryParam("order") @DefaultValue("DESCENDING") FeedSortOrder order) {
    if (StringUtils.isBlank(names)) {
        return Response.status(Status.NOT_FOUND).build();
    }
    Set<String> nameSet = Stream.of(names.split(",")).collect(Collectors.toSet());
    List<Feed> feeds = new ArrayList<>();
    for (String name : nameSet) {
        Feed feed = feedDAO.findByName(name);
        if (feed != null) {
            feeds.add(feed);
        }
    }
    List<FeedItem> feedItems = feedItemDao.findByFeeds(feeds, numItems, order);
    return Response.ok(feedItems).build();
}
Also used : FeedItem(fi.otavanopisto.muikku.plugins.feed.model.FeedItem) ArrayList(java.util.ArrayList) Feed(fi.otavanopisto.muikku.plugins.feed.model.Feed) Path(javax.ws.rs.Path) RESTPermit(fi.otavanopisto.security.rest.RESTPermit) GET(javax.ws.rs.GET)

Example 3 with Feed

use of fi.otavanopisto.muikku.plugins.feed.model.Feed in project muikku by otavanopisto.

the class FeedSynchronizer method updateFeeds.

@Schedule(second = "0", minute = "0", hour = "*", persistent = false)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void updateFeeds() {
    Client client = ClientBuilder.newClient();
    feedItemDao.deleteAll();
    List<Feed> feeds = feedDao.listAll();
    for (Feed feed : feeds) {
        WebTarget target = client.target(feed.getUrl());
        try (InputStream stream = target.request("*").get(InputStream.class)) {
            SyndFeedInput input = new SyndFeedInput();
            SyndFeed syndFeed = input.build(new XmlReader(stream));
            List<SyndEntry> entries = syndFeed.getEntries();
            for (SyndEntry entry : entries) {
                feedItemDao.create(entry.getTitle(), entry.getLink(), entry.getAuthor(), entry.getDescription() == null ? null : clean(entry.getDescription().getValue()), entry.getPublishedDate(), (String) null, feed);
            }
        } catch (IOException | IllegalArgumentException | FeedException e) {
            logger.warning(String.format("Error while synchronizing feeds: %s", e.getMessage()));
            ejbContext.setRollbackOnly();
        }
    }
}
Also used : InputStream(java.io.InputStream) SyndEntry(com.rometools.rome.feed.synd.SyndEntry) FeedException(com.rometools.rome.io.FeedException) XmlReader(com.rometools.rome.io.XmlReader) IOException(java.io.IOException) SyndFeed(com.rometools.rome.feed.synd.SyndFeed) SyndFeedInput(com.rometools.rome.io.SyndFeedInput) WebTarget(javax.ws.rs.client.WebTarget) Client(javax.ws.rs.client.Client) SyndFeed(com.rometools.rome.feed.synd.SyndFeed) Feed(fi.otavanopisto.muikku.plugins.feed.model.Feed) TransactionAttribute(javax.ejb.TransactionAttribute) Schedule(javax.ejb.Schedule)

Aggregations

Feed (fi.otavanopisto.muikku.plugins.feed.model.Feed)3 SyndEntry (com.rometools.rome.feed.synd.SyndEntry)1 SyndFeed (com.rometools.rome.feed.synd.SyndFeed)1 FeedException (com.rometools.rome.io.FeedException)1 SyndFeedInput (com.rometools.rome.io.SyndFeedInput)1 XmlReader (com.rometools.rome.io.XmlReader)1 FeedItem (fi.otavanopisto.muikku.plugins.feed.model.FeedItem)1 RESTPermit (fi.otavanopisto.security.rest.RESTPermit)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 ArrayList (java.util.ArrayList)1 Schedule (javax.ejb.Schedule)1 TransactionAttribute (javax.ejb.TransactionAttribute)1 EntityManager (javax.persistence.EntityManager)1 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)1 GET (javax.ws.rs.GET)1 Path (javax.ws.rs.Path)1 Client (javax.ws.rs.client.Client)1 WebTarget (javax.ws.rs.client.WebTarget)1