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));
}
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();
}
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();
}
}
}
Aggregations