Package org.rssowl.core.persist

Examples of org.rssowl.core.persist.IFeed


   * @throws Exception
   */
  @Test
  public void testRemoveBookMarkWithoutFolder() throws Exception {
    IFolder folder = fFactory.createFolder(null, null, "Folder");
    IFeed feed = createFeed("http://www.someurl.com");
    feed = DynamicDAO.save(feed);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed.getLink()), "Mark");
    IFolder savedFolder = DynamicDAO.save(folder);
    IBookMark savedMark = (IBookMark) savedFolder.getMarks().get(0);
    DynamicDAO.delete(savedMark);
    assertNotNull(DynamicDAO.load(IFolder.class, savedFolder.getId()));
  }
View Full Code Here


   *
   * @throws Exception
   */
  @Test
  public void testRemoveAttachmentWithoutNews() throws Exception {
    IFeed feed = createFeed("http://www.rssowl.org");
    feed = DynamicDAO.save(feed);
    INews news = fFactory.createNews(null, feed, new Date());
    fFactory.createAttachment(null, news);
    INews savedNews = DynamicDAO.save(news);
    DynamicDAO.delete(news.getAttachments().get(0));
View Full Code Here

   */
  @Test
  public void testRemoveBookMarkAndFeed() throws Exception {
    {
      IFolder folder = fFactory.createFolder(null, null, "Folder");
      IFeed feed = createFeed("http://www.someurl.com");
      feed = DynamicDAO.save(feed);
      fFactory.createBookMark(null, folder, new FeedLinkReference(feed.getLink()), "Mark");
      IFolder savedFolder = DynamicDAO.save(folder);
      IBookMark savedMark = (IBookMark) savedFolder.getMarks().get(0);
      IFeed savedFeed = savedMark.getFeedLinkReference().resolve();
      DynamicDAO.delete(savedMark);
      assertNull("Feed must also be deleted since no more bookmarks reference it", DynamicDAO.load(IFeed.class, savedFeed.getId()));
    }
    {
      IFolder folder = fFactory.createFolder(null, null, "AnotherFolder");
      IFeed feed = createFeed("http://www.anotherurl.com");
      feed = DynamicDAO.save(feed);
      fFactory.createBookMark(null, folder, new FeedLinkReference(feed.getLink()), "Mark1");
      fFactory.createBookMark(null, folder, new FeedLinkReference(feed.getLink()), "Mark2");
      IFolder savedFolder = DynamicDAO.save(folder);
      IBookMark savedMark1 = (IBookMark) savedFolder.getMarks().get(0);
      IBookMark savedMark2 = (IBookMark) savedFolder.getMarks().get(1);
      if (savedMark1.getName().equals("Mark2")) {
        IBookMark tempMark = savedMark1;
        savedMark1 = savedMark2;
        savedMark2 = tempMark;
      }
      IFeed savedFeed = savedMark1.getFeedLinkReference().resolve();
      DynamicDAO.delete(savedMark1);
      assertNotNull("Feed must not be deleted since one bookmark references it", DynamicDAO.load(IFeed.class, savedFeed.getId()));
      DynamicDAO.delete(savedMark2);
      assertNull("Feed must also be deleted since no more bookmarks reference it", DynamicDAO.load(IFeed.class, savedFeed.getId()));
    }
  }
View Full Code Here

  private void collectBookMark(IPersonalBookMark pPBookMark) {

    String lInfo = "";
// CB TODO mLog.info("collectInfo(), instruction: " +
// pPBookMark.getInstruction());
    IFeed lFeed = pPBookMark.getFeedLinkReference().resolve();

// CB TODO if (pPBookMark.getInstruction().isCollect()) {
    int newEnclosures = 0;
    try {
      // Perform an HTTP HEAD INFO to determine the last modified
      // date against the modified date.

      URL url = lFeed.getLink().toURL();

      if (url != null) {

        HTTPHEADInfo hi = null;

        // Perform some checks to decide if the feed should
        // be recollected.
        // Check the modified date against the currently stored
        // modified date.
        //
        boolean lCollect = true;

        // Check for the protocol first.
        String protocol = url.getProtocol();
        if (protocol.equals("http")) {
          try {
            hi = org.rssowl.contrib.podcast.core.net.NetTask
                .getHeadInfo(lFeed, url);

          } catch (NetworkException e) {
            lCollect = false;
          }
        } else {
          // The HEAD information is irrelevant for non-HTTP
          // protocol.
// CB TODO LOG mLog.info("Protocol not supported" + protocol);
          return;
        }

        // We do NOT collect if the the modified date hasn't
        // changed.
        if (pPBookMark.getHeaderInfo() != null
            && pPBookMark.getHeaderInfo().getModifiedString() != null
            && pPBookMark.getHeaderInfo().getModifiedString()
                .equals(hi.getModifiedString())) {
          lCollect = false;
        }

        // collect, if the file is not present.
        // CB TODO We don't have file support in the current model.
// if (pFeed.getFile() == null
// || !pFeed.getFile().exists()) {
// collect = true;
// } else {
// }

        if (!lCollect) {

          // This pFeed has not changed. The RSS file will not
          // be collected again. We do parse it to set the
          // model.

          // CB TODO
          // newEnclosures = pFeed.updateEnclosures(pFeed
          // .getFile());

          // CB TODO LOG mLog.info("The feed " + pPBookMark
//             + " is up to date (Will not parse it)");

// CB TODO migrate instruction
// pPBookMark.getInstruction().setCollectEnclosure(false);

          pPBookMark.setQuality(IPersonalBookMark.GOOD_QUALITY);
          pPBookMark.setQualityDescription("");
          // pFeed.getInstruction().setMark(false);

//          mLog.info("The bookmark " + pPBookMark
//              + " has been marked (Will not Mark)");

          // Rewrite the instruction if was previously
          // inspected.
// CB TODO INSTRUCTION MIG.
// BookMarkHistory.BookMarkHistoryEvent event = pPBookMark
// .getHistory().getLatestEvent();

// if (event != null) {
// Object eventObject = event.getEventObject();
// if (eventObject instanceof IInstruction) {
// if (((IInstruction) eventObject).isInspect()) {
//
// }
          // CB FIXME, there is a bug, inspection
          // is overriden.
          // pFeed.getInstruction()
          // .setInspect(false);
// mLog
// .info("The feed "
// + pPBookMark
// + " has been inspected (Will not Inspect)");
// }
// }

          lInfo = (lFeed.getTitle().length() > 35 ? lFeed.getTitle()
              .substring(0, 35)
              + "..." : lFeed.getTitle())
              + " " + Messages.getString("tasks.upToDate");
// CB TODO INSTRUCTION MIGRATE.
// mNotifier
// .notifyInstructionSucceeded(new InstructionEvent(
// pPBookMark.getInstruction().getSource(),
// InstructionEvent.INSTRUCTION_COLLECT,
// lFeed, (InstructionException) null));

        } else {
          // Here It's a totaly new or modified Feed.
          // The Feed is parsed. If it's not totally new, we
          // copy the enclosure settings from the previous
          // settings.

// CB TODO LOG    mLog.info(pPBookMark + " is modified, parse it");
          Reader stream = NetTask.getReader(lFeed, url, pPBookMark
              .getHeaderInfo());

          // Save the stream in a temporary file first.
          File lFile = DownloadUtil.saveTempFeedFile(stream);

          // CB TODO, this a merge activity for the model.
          // newEnclosures = pFeed.updateEnclosures(lFile);

          pPBookMark.setHeaderInfo(hi);
          pPBookMark.setQuality(IPersonalBookMark.GOOD_QUALITY);

          pPBookMark.setQualityDescription(Messages
              .getString("feed.quality.good"));

          lInfo = (lFeed.getTitle().length() > 35 ? lFeed.getTitle()
              .substring(0, 35)
              + "..." : lFeed.getTitle())
              + " "
              + newEnclosures
              + " "
              + (newEnclosures == 1 ? Messages
                  .getString("tasks.newEnclosure") : Messages
                  .getString("tasks.newEnclosures"));
// CB TODO INSTRUCTION MIGRATE.
// mNotifier
// .notifyInstructionSucceeded(new InstructionEvent(
// pPBookMark.getInstruction().getSource(),
// InstructionEvent.INSTRUCTION_COLLECT,
// lFeed, (InstructionException) null));

        }

      } else { // The URL off the pFeed is unknown.
// CB TODO INSTRUCTION MIGRATE.
// mNotifier.notifyInstructionFailed(new InstructionEvent(
// pPBookMark.getInstruction().getSource(),
// InstructionEvent.INSTRUCTION_COLLECT, lFeed,
// new InstructionException("Empty URL")));
      }

// CB TODO INSTRUCTION MIGRATE.
// mNotifier
// .notifyInstuctionInfo(new InstructionEvent(pPBookMark
// .getInstruction().getSource(),
// InstructionEvent.INSTRUCTION_COLLECT,
// pPBookMark, lInfo));
    } catch (Exception ie) {
      // Something wrong in either accessing the pFeed URL or
      // parsing
      // the XML RSS 2.0 pFeed.
      // The pFeed quality is set to bad, but it could be that no
      // networks exists at all. (Need to include check on
      // network.
      // mLog.error("Error collecting feed " + pFeed);
      pPBookMark.setQuality(IPersonalBookMark.BAD_QUALITY);
      pPBookMark.setQualityDescription(ie.getMessage());

// CB TODO INSTRUCTION MIGRATE.
// mNotifier.notifyInstructionFailed(new InstructionEvent(
// pPBookMark.getInstruction().getSource(),
// InstructionEvent.INSTRUCTION_COLLECT, pPBookMark, ie));

    } finally {
      // We now set the folder after regardless.
      // If no network or bad feed we would set it.

      // CB TODO, Token handling migration later on.
      String lDefaultFolder = DownloadUtil.getPodcastFolder()
          + File.separator + "unknown";
      // String lDefaultFolder = DownloadUtil.getPodcastFolder()
      // + File.separator + TokenHandler.RSS_ITEM_TITLE;

      if (pPBookMark.getLocalFolder().length() == 0
          || pPBookMark.getLocalFolder().equals(lDefaultFolder)) {
        pPBookMark.setLocalFolder(DownloadUtil.getBookMarkFolder(lFeed
            .getTitle()));
      }
    }
// }
View Full Code Here

   */
  public final void handleFeedReload(IBookMark bookMark, IFeed emptyFeed, IConditionalGet conditionalGet, boolean deleteConditionalGet) {
    fWriteLock.lock();
    try {
      /* Resolve reloaded Feed */
      IFeed feed = bookMark.getFeedLinkReference().resolve();

      /* Copy over Properties to reloaded Feed to keep them */
      Map<String, ? > feedProperties = feed.getProperties();
      if (feedProperties != null) {
        feedProperties.entrySet();
        for (Map.Entry<String, ? > entry : feedProperties.entrySet())
          emptyFeed.setProperty(entry.getKey(), entry.getValue());
      }

      /* Merge with existing (remember number of added new news) */
      List<INews> newNewsBeforeMerge = feed.getNewsByStates(EnumSet.of(INews.State.NEW));
      MergeResult mergeResult = feed.mergeAndCleanUp(emptyFeed);
      List<INews> newNewsAdded = getNewNewsAdded(feed, newNewsBeforeMerge);
      updateStateOfUnsavedNewNews(newNewsAdded);

      /* Retention Policy */
      List<INews> deletedNews = RetentionStrategy.process(bookMark, feed, newNewsAdded.size());
View Full Code Here

   */
  public Pair<IFeed, IConditionalGet> reload(URI link, IProgressMonitor monitor, Map<Object, Object> properties) throws CoreException {
    IModelFactory typesFactory = Owl.getModelFactory();

    /* Create a new empty feed from the existing one */
    IFeed feed = typesFactory.createFeed(null, link);

    /* Add Monitor to support early cancelation */
    properties.put(IConnectionPropertyConstants.PROGRESS_MONITOR, monitor);

    /* Retrieve the InputStream out of the Feed's Link */
 
View Full Code Here

  public void testProcessFolderByCountAndState() throws Exception {
    long today = DateUtils.getToday().getTimeInMillis();

    IFolder folder = DynamicDAO.save(fFactory.createFolder(null, null, "Root"));

    IFeed feed1 = createFeedWithNews(new URI("http://www.url1.com"), 100, 0, today - DAY, today + 5 * HOUR, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed1.getLink()), "BookMark1");

    IFeed feed2 = createFeedWithNews(new URI("http://www.url2.com"), 100, 50, today - 7 * DAY, today + 8 * HOUR, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed2.getLink()), "BookMark2");

    IFeed feed3 = createFeedWithNews(new URI("http://www.url3.com"), 100, 100, today - 31 * DAY, today - 25 * DAY, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed3.getLink()), "BookMark3");

    DynamicDAO.save(folder);

    IBookMark bookMark1 = null, bookMark2 = null, bookMark3 = null;
    List<IMark> marks = folder.getMarks();
View Full Code Here

  public void testProcessFolderByAgeAndCountAndState() throws Exception {
    long today = DateUtils.getToday().getTimeInMillis();

    IFolder folder = DynamicDAO.save(fFactory.createFolder(null, null, "Root"));

    IFeed feed1 = createFeedWithNews(new URI("http://www.url1.com"), 100, 0, today - DAY, today + 5 * HOUR, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed1.getLink()), "BookMark1");

    IFeed feed2 = createFeedWithNews(new URI("http://www.url2.com"), 100, 50, today - 7 * DAY, today + 8 * HOUR, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed2.getLink()), "BookMark2");

    IFeed feed3 = createFeedWithNews(new URI("http://www.url3.com"), 100, 100, today - 31 * DAY, today - 25 * DAY, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed3.getLink()), "BookMark3");

    DynamicDAO.save(folder);

    IBookMark bookMark1 = null, bookMark2 = null, bookMark3 = null;
    List<IMark> marks = folder.getMarks();
View Full Code Here

  public void testProcessBookMarkByAge() throws Exception {
    long today = DateUtils.getToday().getTimeInMillis();

    IFolder folder = DynamicDAO.save(fFactory.createFolder(null, null, "Root"));

    IFeed feed = createFeedWithNews(new URI("http://www.url.com"), 100, 20, today - 7 * DAY, today - 6 * DAY, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed.getLink()), "BookMark1");

    DynamicDAO.save(folder);

    IBookMark bookmark = (IBookMark) folder.getMarks().get(0);
    assertEquals(100, countNews(bookmark));
View Full Code Here

  public void testProcessBookMarkByState() throws Exception {
    long today = DateUtils.getToday().getTimeInMillis();

    IFolder folder = DynamicDAO.save(fFactory.createFolder(null, null, "Root"));

    IFeed feed = createFeedWithNews(new URI("http://www.url.com"), 100, 20, today - 7 * DAY, today - 6 * DAY, 0);
    fFactory.createBookMark(null, folder, new FeedLinkReference(feed.getLink()), "BookMark1");

    DynamicDAO.save(folder);

    IBookMark bookmark = (IBookMark) folder.getMarks().get(0);
    assertEquals(100, countNews(bookmark));
View Full Code Here

TOP

Related Classes of org.rssowl.core.persist.IFeed

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.