2013-03-20 20:33:42 +01:00
package com.commafeed.backend.dao ;
import java.util.Calendar ;
import java.util.Collection ;
2013-03-22 09:29:30 +01:00
import java.util.List ;
2013-03-20 20:33:42 +01:00
import javax.ejb.Stateless ;
import javax.inject.Inject ;
2013-03-22 09:29:30 +01:00
import javax.persistence.TypedQuery ;
2013-03-20 20:33:42 +01:00
import com.commafeed.model.Feed ;
import com.commafeed.model.FeedEntry ;
2013-03-22 09:29:30 +01:00
import com.commafeed.model.User ;
2013-03-20 20:33:42 +01:00
@Stateless
public class FeedEntryService extends GenericDAO < FeedEntry , String > {
@Inject
FeedService feedService ;
public void updateEntries ( String url , Collection < FeedEntry > entries ) {
Feed feed = feedService . findById ( url ) ;
for ( FeedEntry entry : entries ) {
FeedEntry existing = findById ( entry . getGuid ( ) ) ;
if ( existing = = null ) {
entry . setFeed ( feed ) ;
save ( entry ) ;
}
}
feed . setLastUpdated ( Calendar . getInstance ( ) . getTime ( ) ) ;
em . merge ( feed ) ;
}
2013-03-22 09:29:30 +01:00
public List < FeedEntry > getUnreadEntries ( Feed feed , User user ) {
2013-03-22 11:42:25 +01:00
String query = " select e from FeedEntry e where e.feed=:feed and not exists (select s from FeedEntryStatus s where s.entry = e and s.user =:user and s.read = true) " ;
2013-03-22 09:29:30 +01:00
TypedQuery < FeedEntry > typedQuery = em . createQuery ( query ,
FeedEntry . class ) ;
typedQuery . setParameter ( " feed " , feed ) ;
typedQuery . setParameter ( " user " , user ) ;
return typedQuery . getResultList ( ) ;
}
2013-03-20 20:33:42 +01:00
}