Beispiel #1
0
  /** Test creation of media file. */
  public void testCreateMediaFile() throws Exception {

    User testUser = null;
    Weblog testWeblog = null;
    testUser = TestUtils.setupUser("mediaFileTestUser3");
    testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog3", testUser);

    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    // no need to create root directory, that is done automatically now
    MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);

    // MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d",
    // testWeblog);
    // mfMgr.createMediaFileDirectory(rootDirectory);

    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());

    MediaFile mediaFile = new MediaFile();
    mediaFile.setName("test.jpg");
    mediaFile.setDescription("This is a test image");
    mediaFile.setCopyrightText("test copyright text");
    mediaFile.setSharedForGallery(true);
    mediaFile.setLength(2000);
    mediaFile.setDirectory(rootDirectory);
    mediaFile.setWeblog(testWeblog);
    mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
    mediaFile.setContentType("image/jpeg");
    rootDirectory.getMediaFiles().add(mediaFile);

    MediaFileTag tag1 = new MediaFileTag("work", mediaFile);
    MediaFileTag tag2 = new MediaFileTag("home", mediaFile);
    Set<MediaFileTag> tags = new HashSet<MediaFileTag>();
    tags.add(tag1);
    tags.add(tag2);
    mediaFile.setTags(tags);

    mfMgr.createMediaFile(testWeblog, mediaFile, new RollerMessages());
    TestUtils.endSession(true);
    assertNotNull(mediaFile.getId());
    assertNotNull(mediaFile.getId().length() > 0);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    MediaFile mediaFile1 = mfMgr.getMediaFile(mediaFile.getId());
    assertEquals("test.jpg", mediaFile1.getName());
    assertEquals("This is a test image", mediaFile1.getDescription());
    assertEquals("test copyright text", mediaFile1.getCopyrightText());
    assertTrue(mediaFile1.isSharedForGallery());
    assertEquals(2000, mediaFile1.getLength());

    TestUtils.endSession(true);
    TestUtils.teardownWeblog(testWeblog.getId());
    TestUtils.teardownUser(testUser.getUserName());
  }
  /** @inheritDoc */
  public void applyCommentDefaultsToEntries(Weblog website) throws WebloggerException {
    if (LOG.isDebugEnabled()) {
      LOG.debug("applyCommentDefaults");
    }

    // TODO: Non-standard JPA bulk update, using parameter values in set clause
    Query q = strategy.getNamedUpdate("WeblogEntry.updateAllowComments&CommentDaysByWebsite");
    q.setParameter(1, website.getDefaultAllowComments());
    q.setParameter(2, website.getDefaultCommentDays());
    q.setParameter(3, website);
    q.executeUpdate();
  }
Beispiel #3
0
  public static void invalidate(Weblog website) {

    log.debug("invalidating website = " + website.getHandle());

    Iterator handlers = cacheHandlers.iterator();
    while (handlers.hasNext()) {
      ((CacheHandler) handlers.next()).invalidate(website);
    }
  }
Beispiel #4
0
  /** Test directory creation */
  @Test
  public void testCreateMediaFileDirectory() throws Exception {
    User testUser = null;
    Weblog testWeblog = null;

    // TODO: Setup code, to be moved to setUp method.
    System.out.println("Before setting up weblogger");
    // setup weblogger
    try {
      testUser = TestUtils.setupUser("mediaFileTestUser");
      testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog", testUser);
      TestUtils.endSession(true);
    } catch (Exception ex) {
      log.error(ex);
      throw new Exception("Test setup failed", ex);
    }

    /** Real test starts here. */
    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    testWeblog = TestUtils.getManagedWebsite(testWeblog);

    // no need to create root directory, that is done automatically now
    MediaFileDirectory directory = mfMgr.getMediaFileRootDirectory(testWeblog);

    // MediaFileDirectory directory = new MediaFileDirectory(null, "root", "root d", testWeblog);
    // mfMgr.createMediaFileDirectory(directory);
    // assertEquals("/", directory.getPath());
    // assertNotNull(directory.getId() != null);

    TestUtils.endSession(true);

    MediaFileDirectory directoryById = mfMgr.getMediaFileDirectory(directory.getId());
    assertEquals(directory, directoryById);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);
    assertEquals(directory, rootDirectory);

    TestUtils.endSession(true);
    TestUtils.teardownWeblog(testWeblog.getId());
    TestUtils.teardownUser(testUser.getUserName());
  }
Beispiel #5
0
  /** Test getting list of all directories for a given user. */
  public void testGetMediaFileDirectories() throws Exception {

    User testUser = null;
    Weblog testWeblog = null;
    testUser = TestUtils.setupUser("mediaFileTestUser2");
    testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog2", testUser);

    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    // no need to create root directory, that is done automatically now
    MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);

    // MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d",
    // testWeblog);
    // mfMgr.createMediaFileDirectory(rootDirectory);

    MediaFileDirectory directory2 =
        new MediaFileDirectory(rootDirectory, "dir2", "directory 2", testWeblog);
    mfMgr.createMediaFileDirectory(directory2);
    rootDirectory.getChildDirectories().add(directory2);

    MediaFileDirectory directory3 =
        new MediaFileDirectory(rootDirectory, "dir3", "directory 3", testWeblog);
    mfMgr.createMediaFileDirectory(directory3);
    rootDirectory.getChildDirectories().add(directory3);

    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    List<MediaFileDirectory> directories = mfMgr.getMediaFileDirectories(testWeblog);
    assertNotNull(directories);
    assertEquals(3, directories.size());
    assertTrue(containsPath(directories, "/"));
    assertTrue(containsPath(directories, "/dir2"));
    assertTrue(containsPath(directories, "/dir3"));

    TestUtils.endSession(true);
    TestUtils.teardownWeblog(testWeblog.getId());
    TestUtils.teardownUser(testUser.getUserName());
  }
  /** @inheritDoc */
  public WeblogEntry getWeblogEntryByAnchor(Weblog website, String anchor)
      throws WebloggerException {

    if (website == null) {
      throw new WebloggerException("Website is null");
    }

    if (anchor == null) {
      throw new WebloggerException("Anchor is null");
    }

    // mapping key is combo of weblog + anchor
    String mappingKey = website.getHandle() + ":" + anchor;

    // check cache first
    // NOTE: if we ever allow changing anchors then this needs updating
    if (this.entryAnchorToIdMap.containsKey(mappingKey)) {

      WeblogEntry entry = this.getWeblogEntry(this.entryAnchorToIdMap.get(mappingKey));
      if (entry != null) {
        LOG.debug("entryAnchorToIdMap CACHE HIT - " + mappingKey);
        return entry;
      } else {
        // mapping hit with lookup miss?  mapping must be old, remove it
        this.entryAnchorToIdMap.remove(mappingKey);
      }
    }

    // cache failed, do lookup
    TypedQuery<WeblogEntry> q =
        strategy.getNamedQuery(
            "WeblogEntry.getByWebsite&AnchorOrderByPubTimeDesc", WeblogEntry.class);
    q.setParameter(1, website);
    q.setParameter(2, anchor);
    WeblogEntry entry;
    try {
      entry = q.getSingleResult();
    } catch (NoResultException e) {
      entry = null;
    }

    // add mapping to cache
    if (entry != null) {
      LOG.debug("entryAnchorToIdMap CACHE MISS - " + mappingKey);
      this.entryAnchorToIdMap.put(mappingKey, entry.getId());
    }
    return entry;
  }
Beispiel #7
0
  /** Test moving files across directories. */
  public void testMoveDirectoryContents() throws Exception {

    User testUser = null;
    Weblog testWeblog = null;
    testUser = TestUtils.setupUser("mediaFileTestUser11");
    testWeblog = TestUtils.setupWeblog("mediaFileTestUser11", testUser);

    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    // no need to create root directory, that is done automatically now
    MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);

    try {

      // MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d",
      // testWeblog);
      mfMgr.createMediaFileDirectory(rootDirectory);

      MediaFileDirectory directory1 =
          new MediaFileDirectory(rootDirectory, "dir1", "directory 1", testWeblog);
      mfMgr.createMediaFileDirectory(directory1);
      rootDirectory.getChildDirectories().add(directory1);
      String dir1Id = directory1.getId();

      MediaFileDirectory directory2 =
          new MediaFileDirectory(rootDirectory, "dir2", "directory 2", testWeblog);
      mfMgr.createMediaFileDirectory(directory2);
      rootDirectory.getChildDirectories().add(directory2);

      MediaFileDirectory directory3 =
          new MediaFileDirectory(rootDirectory, "dir3", "directory 3", testWeblog);
      mfMgr.createMediaFileDirectory(directory3);
      rootDirectory.getChildDirectories().add(directory3);

      MediaFile mediaFile = new MediaFile();
      mediaFile.setDirectory(rootDirectory);
      rootDirectory.getMediaFiles().add(mediaFile);
      mediaFile.setWeblog(testWeblog);
      mediaFile.setName("test7_1.jpg");
      mediaFile.setDescription("This is a test image 7.1");
      mediaFile.setCopyrightText("test 7.1 copyright text");
      mediaFile.setSharedForGallery(false);
      mediaFile.setLength(4000);
      mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
      mediaFile.setContentType("image/jpeg");
      mfMgr.createMediaFile(testWeblog, mediaFile, new RollerMessages());

      MediaFile mediaFile2 = new MediaFile();
      mediaFile2.setDirectory(rootDirectory);
      rootDirectory.getMediaFiles().add(mediaFile2);
      mediaFile2.setWeblog(testWeblog);
      mediaFile2.setName("test7_2.jpg");
      mediaFile2.setDescription("This is a test image 7.2");
      mediaFile2.setCopyrightText("test 7.2 copyright text");
      mediaFile2.setSharedForGallery(true);
      mediaFile2.setLength(4000);
      mediaFile2.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
      mediaFile2.setContentType("image/jpeg");
      mfMgr.createMediaFile(testWeblog, mediaFile2, new RollerMessages());

      TestUtils.endSession(true);

      testWeblog = TestUtils.getManagedWebsite(testWeblog);
      rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());

      Set<MediaFile> mediaFiles = rootDirectory.getMediaFiles();
      assertEquals(2, mediaFiles.size());
      assertTrue(containsFileWithName(mediaFiles, "test7_1.jpg"));
      assertTrue(containsFileWithName(mediaFiles, "test7_2.jpg"));

      MediaFileDirectory targetDirectory = mfMgr.getMediaFileDirectory(dir1Id);
      mfMgr.moveMediaFiles(mediaFiles, targetDirectory);
      TestUtils.endSession(true);

      rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());
      targetDirectory = mfMgr.getMediaFileDirectory(dir1Id);

      mediaFiles = targetDirectory.getMediaFiles();
      assertEquals(2, mediaFiles.size());
      assertTrue(containsFileWithName(mediaFiles, "test7_1.jpg"));
      assertTrue(containsFileWithName(mediaFiles, "test7_2.jpg"));

      mediaFiles = rootDirectory.getMediaFiles();
      assertEquals(0, mediaFiles.size());

    } finally {
      TestUtils.endSession(true);
      TestUtils.teardownWeblog(testWeblog.getId());
      TestUtils.teardownUser(testUser.getUserName());
    }
  }
Beispiel #8
0
  /** Test searching media file with paging logic. */
  public void testSearchMediaFileOrderBy() throws Exception {
    User testUser = null;
    Weblog testWeblog = null;
    testUser = TestUtils.setupUser("mediaFileTestUser10");
    testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog10", testUser);

    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    // no need to create root directory, that is done automatically now
    MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);

    // MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d",
    // testWeblog);
    // mfMgr.createMediaFileDirectory(rootDirectory);

    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());
    String[] contentTypes = {"image/gif", "image/jpeg", "image/bmp"};
    for (int i = 0; i < 3; i++) {
      MediaFile mediaFile = new MediaFile();
      mediaFile.setName("test_file<index>.jpg".replace("<index>", i + ""));
      mediaFile.setDescription("This is a test image");
      mediaFile.setCopyrightText("test copyright text");
      mediaFile.setSharedForGallery(true);
      mediaFile.setLength(2000);
      mediaFile.setDirectory(rootDirectory);
      mediaFile.setWeblog(testWeblog);
      mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
      mediaFile.setContentType(contentTypes[i]);
      rootDirectory.getMediaFiles().add(mediaFile);
      mfMgr.createMediaFile(testWeblog, mediaFile, new RollerMessages());
      assertNotNull(mediaFile.getId());
      assertNotNull(mediaFile.getId().length() > 0);
    }
    TestUtils.endSession(true);
    testWeblog = TestUtils.getManagedWebsite(testWeblog);

    MediaFileFilter filter1 = new MediaFileFilter();
    filter1.setSize(1000);
    filter1.setSizeFilterType(SizeFilterType.GT);
    filter1.setOrder(MediaFileOrder.NAME);
    List<MediaFile> searchResults1 = mfMgr.searchMediaFiles(testWeblog, filter1);
    assertFalse(searchResults1.isEmpty());
    assertEquals(3, searchResults1.size());
    assertEquals("test_file0.jpg", searchResults1.get(0).getName());
    assertEquals("test_file1.jpg", searchResults1.get(1).getName());
    assertEquals("test_file2.jpg", searchResults1.get(2).getName());

    MediaFileFilter filter2 = new MediaFileFilter();
    filter2.setSize(1000);
    filter2.setSizeFilterType(SizeFilterType.GT);
    filter2.setOrder(MediaFileOrder.TYPE);
    List<MediaFile> searchResults2 = mfMgr.searchMediaFiles(testWeblog, filter2);
    assertFalse(searchResults2.isEmpty());
    assertEquals(3, searchResults2.size());
    assertEquals("test_file2.jpg", searchResults2.get(0).getName());
    assertEquals("test_file0.jpg", searchResults2.get(1).getName());
    assertEquals("test_file1.jpg", searchResults2.get(2).getName());

    MediaFileFilter filter3 = new MediaFileFilter();
    filter3.setSize(1000);
    filter3.setSizeFilterType(SizeFilterType.GT);
    filter3.setOrder(MediaFileOrder.DATE_UPLOADED);
    List<MediaFile> searchResults3 = mfMgr.searchMediaFiles(testWeblog, filter3);
    assertFalse(searchResults3.isEmpty());
    assertEquals(3, searchResults3.size());
    assertEquals("test_file0.jpg", searchResults3.get(0).getName());
    assertEquals("test_file1.jpg", searchResults3.get(1).getName());
    assertEquals("test_file2.jpg", searchResults3.get(2).getName());

    TestUtils.endSession(true);
    TestUtils.teardownWeblog(testWeblog.getId());
    TestUtils.teardownUser(testUser.getUserName());
  }
Beispiel #9
0
  /** Test creation of directory by path */
  @Test
  public void testCreateMediaFileDirectoryByPath() throws Exception {
    User testUser = null;
    Weblog testWeblog = null;

    // TODO: Setup code, to be moved to setUp method.
    System.out.println("Before setting up weblogger");
    // setup weblogger
    try {
      testUser = TestUtils.setupUser("mediaFileTestUser8");
      testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog8", testUser);
      TestUtils.endSession(true);
    } catch (Exception ex) {
      log.error(ex);
      throw new Exception("Test setup failed", ex);
    }

    /** Real test starts here. */
    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    testWeblog = TestUtils.getManagedWebsite(testWeblog);

    // no need to create root directory, that is done automatically now
    // MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d",
    // testWeblog);
    // mfMgr.createMediaFileDirectory(rootDirectory);
    // assertNotNull(rootDirectory.getId() != null);

    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);

    try {
      mfMgr.createMediaFileDirectoryByPath(testWeblog, "");
      assertTrue(false);
    } catch (WebloggerException e) {
      assertTrue(true);
    }

    try {
      mfMgr.createMediaFileDirectoryByPath(testWeblog, "/");
      assertTrue(false);
    } catch (WebloggerException e) {
      assertTrue(true);
    }

    MediaFileDirectory newDirectory1 = mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1");
    MediaFileDirectory newDirectory2 = mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test2/");
    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);

    MediaFileDirectory newDirectory1ById = mfMgr.getMediaFileDirectory(newDirectory1.getId());
    assertEquals(newDirectory1, newDirectory1ById);

    MediaFileDirectory newDirectory2ById = mfMgr.getMediaFileDirectory(newDirectory2.getId());
    assertEquals("test2", newDirectory2ById.getName());

    // show throw error when creating directory that already exists
    try {
      mfMgr.createMediaFileDirectoryByPath(testWeblog, "test1");
      assertTrue(false);
    } catch (WebloggerException e) {
      assertTrue(true);
    }

    MediaFileDirectory newDirectory3 =
        mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1/test2");
    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    MediaFileDirectory newDirectory3ById = mfMgr.getMediaFileDirectory(newDirectory3.getId());
    assertEquals(newDirectory3, newDirectory3ById);

    MediaFileDirectory newDirectory4 =
        mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1/test2/test3");
    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    MediaFileDirectory newDirectory4ById = mfMgr.getMediaFileDirectory(newDirectory4.getId());
    assertEquals(newDirectory4, newDirectory4ById);

    // show throw error when creating directory that already exists
    try {
      mfMgr.createMediaFileDirectoryByPath(testWeblog, "/test1/test2/test3");
      assertTrue(false);
    } catch (WebloggerException e) {
      assertTrue(true);
    }

    TestUtils.endSession(true);
    TestUtils.teardownWeblog(testWeblog.getId());
    TestUtils.teardownUser(testUser.getUserName());
  }
Beispiel #10
0
  /** Test searching media file with paging logic. */
  public void testSearchMediaFilePaging() throws Exception {
    User testUser = null;
    Weblog testWeblog = null;
    testUser = TestUtils.setupUser("mediaFileTestUser9");
    testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog9", testUser);

    try {
      MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

      // no need to create root directory, that is done automatically now
      MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);

      // MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d",
      // testWeblog);
      // mfMgr.createMediaFileDirectory(rootDirectory);
      // TestUtils.endSession(true);

      for (int i = 0; i < 15; i++) {
        rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());
        testWeblog = TestUtils.getManagedWebsite(testWeblog);
        MediaFile mediaFile = new MediaFile();
        mediaFile.setName("test_file<index>.jpg".replace("<index>", i + ""));
        mediaFile.setDescription("This is a test image");
        mediaFile.setCopyrightText("test copyright text");
        mediaFile.setSharedForGallery(true);
        mediaFile.setLength(2000);
        mediaFile.setWeblog(testWeblog);
        mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
        mediaFile.setContentType("image/jpeg");
        mfMgr.createMediaFile(testWeblog, mediaFile, new RollerMessages());
        rootDirectory.getMediaFiles().add(mediaFile);
        mediaFile.setDirectory(rootDirectory);
        assertNotNull(mediaFile.getId());
        assertNotNull(mediaFile.getId().length() > 0);
        TestUtils.endSession(true);
      }

      testWeblog = TestUtils.getManagedWebsite(testWeblog);
      MediaFileFilter filter1 = new MediaFileFilter();
      filter1.setSize(1000);
      filter1.setSizeFilterType(SizeFilterType.GT);
      List<MediaFile> searchResults1 = mfMgr.searchMediaFiles(testWeblog, filter1);
      assertFalse(searchResults1.isEmpty());
      assertEquals(15, searchResults1.size());

      MediaFileFilter filter2 = new MediaFileFilter();
      filter2.setSize(1000);
      filter2.setSizeFilterType(SizeFilterType.GT);
      filter2.setStartIndex(5);
      filter2.setLength(3);
      List<MediaFile> searchResults2 = mfMgr.searchMediaFiles(testWeblog, filter2);
      assertFalse(searchResults2.isEmpty());
      assertEquals(3, searchResults2.size());
      assertEquals("test_file13.jpg", searchResults2.get(0).getName());

      MediaFileFilter filter3 = new MediaFileFilter();
      filter3.setSize(1000);
      filter3.setSizeFilterType(SizeFilterType.GT);
      filter3.setStartIndex(13);
      filter3.setLength(6);
      List<MediaFile> searchResults3 = mfMgr.searchMediaFiles(testWeblog, filter3);
      assertFalse(searchResults3.isEmpty());
      assertEquals(2, searchResults3.size());
      assertEquals("test_file8.jpg", searchResults3.get(0).getName());

      MediaFileFilter filter4 = new MediaFileFilter();
      filter4.setSize(1000);
      filter4.setSizeFilterType(SizeFilterType.GT);
      filter4.setStartIndex(14);
      filter4.setLength(1);
      List<MediaFile> searchResults4 = mfMgr.searchMediaFiles(testWeblog, filter4);
      assertFalse(searchResults4.isEmpty());
      assertEquals(1, searchResults4.size());
      assertEquals("test_file9.jpg", searchResults4.get(0).getName());

      TestUtils.endSession(true);
    } finally {
      TestUtils.teardownWeblog(testWeblog.getId());
      TestUtils.teardownUser(testUser.getUserName());
    }
  }
Beispiel #11
0
  /** Test searching media file. */
  public void testSearchMediaFile() throws Exception {
    User testUser = null;
    Weblog testWeblog = null;
    testUser = TestUtils.setupUser("mediaFileTestUser7");
    testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog7", testUser);

    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);

    try {

      String id1 = null;
      {
        MediaFile mf = new MediaFile();
        mf.setName("test_work.jpg");
        mf.setDescription("This is a test image");
        mf.setCopyrightText("test copyright text");
        mf.setSharedForGallery(true);
        mf.setLength(2000);
        mf.setDirectory(rootDirectory);
        mf.setWeblog(testWeblog);
        mf.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
        mf.setContentType("image/jpeg");
        rootDirectory.getMediaFiles().add(mf);

        mfMgr.createMediaFile(testWeblog, mf, new RollerMessages());

        MediaFileTag tag = new MediaFileTag("work", mf);
        Set<MediaFileTag> tags = new HashSet<MediaFileTag>();
        tags.add(tag);
        mf.setTags(tags);
        mfMgr.updateMediaFile(testWeblog, mf);

        mfMgr.createMediaFile(testWeblog, mf, new RollerMessages());
        TestUtils.endSession(true);
        id1 = mf.getId();
        assertNotNull(mf.getId());
        assertNotNull(mf.getId().length() > 0);
      }

      String id2 = null;
      {
        testWeblog = TestUtils.getManagedWebsite(testWeblog);
        rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());

        MediaFile mf = new MediaFile();
        mf = new MediaFile();
        mf.setName("test_home.jpg");
        mf.setDescription("This is a test image");
        mf.setCopyrightText("test copyright text");
        mf.setSharedForGallery(true);
        mf.setLength(3000);
        mf.setDirectory(rootDirectory);
        mf.setWeblog(testWeblog);
        mf.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
        mf.setContentType("image/jpeg");
        rootDirectory.getMediaFiles().add(mf);

        mfMgr.createMediaFile(testWeblog, mf, new RollerMessages());

        MediaFileTag tag = new MediaFileTag("home", mf);
        Set<MediaFileTag> tags = new HashSet<MediaFileTag>();
        tags.add(tag);
        mf.setTags(tags);
        mfMgr.updateMediaFile(testWeblog, mf);

        TestUtils.endSession(true);
        id2 = mf.getId();
        assertNotNull(mf.getId());
        assertNotNull(mf.getId().length() > 0);
      }

      String id3 = null;
      {
        testWeblog = TestUtils.getManagedWebsite(testWeblog);
        rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());

        MediaFile mf = new MediaFile();
        mf = new MediaFile();
        mf.setName("test_pers.jpg");
        mf.setDescription("This is a personal test image");
        mf.setCopyrightText("test pers copyright text");
        mf.setSharedForGallery(true);
        mf.setLength(4000);
        mf.setWeblog(testWeblog);
        mf.setDirectory(rootDirectory);
        mf.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));
        mf.setContentType("image/jpeg");
        rootDirectory.getMediaFiles().add(mf);

        mfMgr.createMediaFile(testWeblog, mf, new RollerMessages());

        MediaFileTag tag = new MediaFileTag("home", mf);
        Set<MediaFileTag> tags = new HashSet<MediaFileTag>();
        tags.add(tag);
        mf.setTags(tags);
        mfMgr.updateMediaFile(testWeblog, mf);

        TestUtils.endSession(true);
        id3 = mf.getId();
        assertNotNull(mf.getId());
        assertNotNull(mf.getId().length() > 0);
      }

      testWeblog = TestUtils.getManagedWebsite(testWeblog);

      List<MediaFile> searchResults;

      // search by name

      MediaFileFilter filter1 = new MediaFileFilter();
      filter1.setName("mytest.jpg");
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter1);
      assertTrue(searchResults.isEmpty());

      MediaFileFilter filter2 = new MediaFileFilter();
      filter2.setName("test_home.jpg");
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter2);
      assertFalse(searchResults.isEmpty());
      assertEquals(id2, ((MediaFile) searchResults.get(0)).getId());
      assertNotNull(((MediaFile) searchResults.get(0)).getDirectory());
      assertEquals("/", ((MediaFile) searchResults.get(0)).getDirectory().getPath());

      MediaFileFilter filter3 = new MediaFileFilter();
      filter3.setName("test_work.jpg");
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter3);
      assertFalse(searchResults.isEmpty());
      assertEquals(id1, ((MediaFile) searchResults.get(0)).getId());

      // search by tag

      // must be tickling an OpenJPA bug. this tag query works the
      // first time and then fails the second time it is run

      //            MediaFileFilter filter5 = new MediaFileFilter();
      //            filter5.setTags(Arrays.asList("home"));
      //            searchResults = mfMgr.searchMediaFiles(testWeblog, filter5);
      //            assertFalse(searchResults.isEmpty());
      //            assertEquals(2, searchResults.size());
      //
      //            MediaFileFilter filter51 = new MediaFileFilter();
      //            filter51.setTags(Arrays.asList("home"));
      //            searchResults = mfMgr.searchMediaFiles(testWeblog, filter51);
      //            assertFalse(searchResults.isEmpty());
      //            assertEquals(2, searchResults.size());

      MediaFileFilter filter4 = new MediaFileFilter();
      filter4.setTags(Arrays.asList("work"));
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter4);
      assertFalse(searchResults.isEmpty());
      assertEquals(1, searchResults.size());
      assertEquals("test_work.jpg", ((MediaFile) searchResults.get(0)).getName());

      // search by size

      MediaFileFilter filter6 = new MediaFileFilter();
      filter6.setSize(3000);
      filter6.setSizeFilterType(MediaFileFilter.SizeFilterType.LT);
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter6);
      assertFalse(searchResults.isEmpty());
      assertEquals(1, searchResults.size());
      assertEquals("test_work.jpg", ((MediaFile) searchResults.get(0)).getName());

      MediaFileFilter filter7 = new MediaFileFilter();
      filter7.setSize(3000);
      filter7.setSizeFilterType(MediaFileFilter.SizeFilterType.EQ);
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter7);
      assertFalse(searchResults.isEmpty());
      assertEquals(1, searchResults.size());
      assertEquals("test_home.jpg", ((MediaFile) searchResults.get(0)).getName());

      MediaFileFilter filter8 = new MediaFileFilter();
      filter8.setSize(3000);
      filter8.setSizeFilterType(MediaFileFilter.SizeFilterType.GT);
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter8);
      assertFalse(searchResults.isEmpty());
      assertEquals(1, searchResults.size());
      assertEquals("test_pers.jpg", ((MediaFile) searchResults.get(0)).getName());

      MediaFileFilter filter9 = new MediaFileFilter();
      filter9.setSize(3000);
      filter9.setSizeFilterType(MediaFileFilter.SizeFilterType.LTE);
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter9);
      assertFalse(searchResults.isEmpty());
      assertEquals(2, searchResults.size());

      MediaFileFilter filter10 = new MediaFileFilter();
      filter10.setSize(3000);
      filter10.setSizeFilterType(MediaFileFilter.SizeFilterType.GTE);
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter10);
      assertFalse(searchResults.isEmpty());
      assertEquals(2, searchResults.size());

      // search by type

      MediaFileFilter filter11 = new MediaFileFilter();
      filter11.setType(MediaFileType.IMAGE);
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter11);
      assertFalse(searchResults.isEmpty());
      assertEquals(3, searchResults.size());

      MediaFileFilter filter12 = new MediaFileFilter();
      filter12.setType(MediaFileType.IMAGE);
      filter12.setTags(Arrays.asList("home"));
      searchResults = mfMgr.searchMediaFiles(testWeblog, filter12);
      assertFalse(searchResults.isEmpty());
      assertEquals(2, searchResults.size());

    } finally {
      TestUtils.endSession(true);
      TestUtils.teardownWeblog(testWeblog.getId());
      TestUtils.teardownUser(testUser.getUserName());
    }
  }
Beispiel #12
0
  /** Test deletion of media file */
  public void testDeleteMediaFile() throws Exception {
    User testUser = null;
    Weblog testWeblog = null;
    testUser = TestUtils.setupUser("mediaFileTestUser4");
    testWeblog = TestUtils.setupWeblog("mediaFileTestWeblog4", testUser);

    MediaFileManager mfMgr = WebloggerFactory.getWeblogger().getMediaFileManager();

    // no need to create root directory, that is done automatically now
    MediaFileDirectory rootDirectory = mfMgr.getMediaFileRootDirectory(testWeblog);

    // MediaFileDirectory rootDirectory = new MediaFileDirectory(null, "root", "root d",
    // testWeblog);
    // mfMgr.createMediaFileDirectory(rootDirectory);

    TestUtils.endSession(true);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    rootDirectory = mfMgr.getMediaFileDirectory(rootDirectory.getId());

    MediaFile mediaFile = new MediaFile();
    mediaFile.setName("test4.jpg");
    mediaFile.setDescription("This is a test image 4");
    mediaFile.setCopyrightText("test 4 copyright text");
    mediaFile.setSharedForGallery(false);
    mediaFile.setLength(3000);
    mediaFile.setDirectory(rootDirectory);
    mediaFile.setWeblog(testWeblog);
    mediaFile.setContentType("image/jpeg");
    mediaFile.setInputStream(getClass().getResourceAsStream(TEST_IMAGE));

    MediaFileTag tag1 = new MediaFileTag("tst4work", mediaFile);
    MediaFileTag tag2 = new MediaFileTag("tst4home", mediaFile);
    Set<MediaFileTag> tags = new HashSet<MediaFileTag>();
    tags.add(tag1);
    tags.add(tag2);
    mediaFile.setTags(tags);

    mfMgr.createMediaFile(testWeblog, mediaFile, new RollerMessages());
    String id = mediaFile.getId();
    TestUtils.endSession(true);
    assertNotNull(id);
    assertNotNull(id.length() > 0);

    testWeblog = TestUtils.getManagedWebsite(testWeblog);
    MediaFile mediaFile1 = mfMgr.getMediaFile(id);

    assertEquals("test4.jpg", mediaFile1.getName());
    assertNotNull(mediaFile1.getTags());
    assertEquals(2, mediaFile1.getTags().size());

    try {
      mfMgr.removeMediaFile(testWeblog, mediaFile1);
    } catch (Exception ignorable) {
      log.debug("ERROR removing media file", ignorable);
    }
    TestUtils.endSession(true);

    MediaFile mediaFile2 = mfMgr.getMediaFile(id);
    assertNull(mediaFile2);

    TestUtils.endSession(true);
    TestUtils.teardownWeblog(testWeblog.getId());
    TestUtils.teardownUser(testUser.getUserName());

    String uploadsDirName = WebloggerConfig.getProperty("uploads.dir");
    File flag = new File(uploadsDirName + File.separator + "migration-status.properties");
    flag.delete();
  }
Beispiel #13
0
  public void testStorageUpgrade() throws Exception {
    User testUser = null;
    Weblog testWeblog1 = null;
    Weblog testWeblog2 = null;
    String oldmax = "4";
    PropertiesManager pmgr = WebloggerFactory.getWeblogger().getPropertiesManager();
    try {
      // set dir max limit high so we won't bump into it
      RuntimeConfigProperty prop = pmgr.getProperty("uploads.dir.maxsize");
      oldmax = prop.getValue();
      prop.setValue("20");
      pmgr.saveProperty(prop);
      TestUtils.endSession(true);

      testUser = TestUtils.setupUser("mediaFileTestUser");
      testWeblog1 = TestUtils.setupWeblog("testblog1", testUser);
      testWeblog2 = TestUtils.setupWeblog("testblog2", testUser);

      MediaFileManager mgr = WebloggerFactory.getWeblogger().getMediaFileManager();
      JPAMediaFileManagerImpl mmgr = (JPAMediaFileManagerImpl) mgr;

      assertTrue("Upgrade required", mmgr.isFileStorageUpgradeRequired());

      mmgr.upgradeFileStorage();
      TestUtils.endSession(true);

      assertFalse("Upgrade required", mmgr.isFileStorageUpgradeRequired());

      // now, let's check to see if migration was sucessful

      MediaFileDirectory root1 = mgr.getMediaFileRootDirectory(testWeblog1);
      assertNotNull("testblog1's mediafile dir exists", root1);
      assertNotNull(mgr.getMediaFileByPath(testWeblog1, "/sub1/hawk.jpg"));
      assertNotNull(mgr.getMediaFileByPath(testWeblog1, "/sub1/sub2/nasa.jpg"));
      assertNotNull(mgr.getMediaFileByPath(testWeblog1, "/roller50-prop.png"));

      assertNotNull(mgr.getMediaFileByOriginalPath(testWeblog1, "/sub1/hawk.jpg"));

      MediaFileDirectory root2 = mgr.getMediaFileRootDirectory(testWeblog2);
      assertNotNull("testblog2's mediafile dir exists", root2);
      assertNotNull(root2.getMediaFile("amsterdam.jpg"));
      assertNotNull(root2.getMediaFile("p47-thunderbolt.jpg"));
      assertNotNull(root2.getMediaFile("rollerwiki.png"));

    } finally {

      File statusFile =
          new File(
              WebloggerConfig.getProperty("uploads.dir")
                  + File.separator
                  + JPAMediaFileManagerImpl.MIGRATION_STATUS_FILENAME);
      statusFile.delete();

      // reset dir max to old value
      RuntimeConfigProperty prop = pmgr.getProperty("uploads.dir.maxsize");
      prop.setValue(oldmax);
      pmgr.saveProperty(prop);

      TestUtils.endSession(true);
      TestUtils.teardownWeblog(testWeblog1.getId());
      TestUtils.teardownWeblog(testWeblog2.getId());
      TestUtils.teardownUser(testUser.getUserName());
      TestUtils.endSession(true);
    }
  }
Beispiel #14
0
  /** Handles requests for user uploaded resources. */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    Weblog weblog;
    // String ctx = request.getContextPath();
    // String servlet = request.getServletPath();
    // String reqURI = request.getRequestURI();

    WeblogResourceRequest resourceRequest;
    try {
      // parse the incoming request and extract the relevant data
      resourceRequest = new WeblogResourceRequest(request);

      weblog = resourceRequest.getWeblog();
      if (weblog == null) {
        throw new WebloggerException(
            "unable to lookup weblog: " + resourceRequest.getWeblogHandle());
      }

    } catch (Exception e) {
      // invalid resource request or weblog doesn't exist
      if (!response.isCommitted()) {
        response.reset();
      }
      log.debug("error creating weblog resource request", e);
      response.sendError(HttpServletResponse.SC_NOT_FOUND);
      return;
    }

    log.debug("Resource requested [" + resourceRequest.getResourcePath() + "]");

    long resourceLastMod = 0;
    InputStream resourceStream = null;

    // first see if resource comes from weblog's shared theme
    try {
      WeblogTheme weblogTheme = weblog.getTheme();
      if (weblogTheme != null) {
        ThemeResource resource = weblogTheme.getResource(resourceRequest.getResourcePath());
        if (resource != null) {
          resourceLastMod = resource.getLastModified();
          resourceStream = resource.getInputStream();
        }
      }
    } catch (Exception ex) {
      // hmmm, some kind of error getting theme. that's an error.
      if (!response.isCommitted()) {
        response.reset();
      }
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
      return;
    }

    // if not from theme then see if resource is in weblog's upload dir
    if (resourceStream == null) {
      try {
        MediaFileManager mmgr = WebloggerFactory.getWeblogger().getMediaFileManager();
        MediaFile mf = mmgr.getMediaFileByOriginalPath(weblog, resourceRequest.getResourcePath());
        resourceLastMod = mf.getLastModified();
        resourceStream = mf.getInputStream();

      } catch (Exception ex) {
        // still not found? then we don't have it, 404.
        if (!response.isCommitted()) {
          response.reset();
        }
        log.debug("Unable to get resource", ex);
        response.sendError(HttpServletResponse.SC_NOT_FOUND);
        return;
      }
    }

    // Respond with 304 Not Modified if it is not modified.
    if (ModDateHeaderUtil.respondIfNotModified(
        request, response, resourceLastMod, resourceRequest.getDeviceType())) {
      return;
    } else {
      // set last-modified date
      ModDateHeaderUtil.setLastModifiedHeader(
          response, resourceLastMod, resourceRequest.getDeviceType());
    }

    // set the content type based on whatever is in our web.xml mime defs
    response.setContentType(this.context.getMimeType(resourceRequest.getResourcePath()));

    OutputStream out;
    try {
      // ok, lets serve up the file
      byte[] buf = new byte[RollerConstants.EIGHT_KB_IN_BYTES];
      int length;
      out = response.getOutputStream();
      while ((length = resourceStream.read(buf)) > 0) {
        out.write(buf, 0, length);
      }

      // close output stream
      out.close();

    } catch (Exception ex) {
      if (!response.isCommitted()) {
        response.reset();
      }
      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    } finally {
      // make sure stream to resource file is closed
      resourceStream.close();
    }
  }
  /** @inheritDoc */
  public List<TagStat> getTags(
      Weblog website, String sortBy, String startsWith, int offset, int limit)
      throws WebloggerException {
    Query query;
    List queryResults;
    boolean sortByName = sortBy == null || !sortBy.equals("count");

    List<Object> params = new ArrayList<Object>();
    int size = 0;
    StringBuilder queryString = new StringBuilder();
    queryString.append("SELECT w.name, SUM(w.total) FROM WeblogEntryTagAggregate w WHERE ");

    if (website != null) {
      params.add(size++, website.getId());
      queryString.append(" w.weblog.id = ?").append(size);
    } else {
      queryString.append(" w.weblog IS NULL");
    }

    if (startsWith != null && startsWith.length() > 0) {
      params.add(size++, startsWith + '%');
      queryString.append(" AND w.name LIKE ?").append(size);
    }

    if (sortBy != null && sortBy.equals("count")) {
      sortBy = "w.total DESC";
    } else {
      sortBy = "w.name";
    }
    queryString.append(" GROUP BY w.name, w.total ORDER BY ").append(sortBy);

    query = strategy.getDynamicQuery(queryString.toString());
    for (int i = 0; i < params.size(); i++) {
      query.setParameter(i + 1, params.get(i));
    }
    if (offset != 0) {
      query.setFirstResult(offset);
    }
    if (limit != -1) {
      query.setMaxResults(limit);
    }
    queryResults = query.getResultList();

    List<TagStat> results = new ArrayList<TagStat>();
    if (queryResults != null) {
      for (Object obj : queryResults) {
        Object[] row = (Object[]) obj;
        TagStat ce = new TagStat();
        ce.setName((String) row[0]);
        // The JPA query retrieves SUM(w.total) always as long
        ce.setCount(((Long) row[1]).intValue());
        results.add(ce);
      }
    }

    if (sortByName) {
      Collections.sort(results, TAG_STAT_NAME_COMPARATOR);
    } else {
      Collections.sort(results, TAG_STAT_COUNT_REVERSE_COMPARATOR);
    }

    return results;
  }
Beispiel #16
0
  /** Handle GET requests for weblog pages. */
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    log.debug("Entering");

    Weblog weblog = null;

    WeblogRequest weblogRequest = null;
    try {
      weblogRequest = new WeblogRequest(request);

      // now make sure the specified weblog really exists
      weblog = weblogRequest.getWeblog();
      if (weblog == null) {
        throw new WebloggerException("Unable to lookup weblog: " + weblogRequest.getWeblogHandle());
      }

    } catch (Exception e) {
      // invalid rsd request format or weblog doesn't exist
      log.debug("error creating weblog request", e);
      response.sendError(HttpServletResponse.SC_NOT_FOUND);
      return;
    }

    // Respond with 304 Not Modified if it is not modified.
    long lastModified = System.currentTimeMillis();
    if (weblog.getLastModified() != null) {
      lastModified = weblog.getLastModified().getTime();
    }
    if (ModDateHeaderUtil.respondIfNotModified(request, response, lastModified)) {
      return;
    }

    // set last-modified date
    ModDateHeaderUtil.setLastModifiedHeader(response, lastModified);

    // set the content type
    response.setContentType("application/rsd+xml; charset=utf-8");

    // populate the model
    HashMap model = new HashMap();
    model.put("website", weblog);
    model.put("absBaseURL", WebloggerRuntimeConfig.getAbsoluteContextURL());

    // lookup Renderer we are going to use
    Renderer renderer = null;
    try {
      log.debug("Looking up renderer");
      Template template = new StaticTemplate("rsd.vm", "velocity");
      renderer = RendererManager.getRenderer(template, DeviceType.standard);
    } catch (Exception e) {
      // nobody wants to render my content :(
      log.error("Couldn't find renderer for rsd template", e);

      if (!response.isCommitted()) response.reset();
      response.sendError(HttpServletResponse.SC_NOT_FOUND);
      return;
    }

    // render content
    CachedContent rendererOutput = new CachedContent(4096);
    try {
      log.debug("Doing rendering");
      renderer.render(model, rendererOutput.getCachedWriter());

      // flush rendered output and close
      rendererOutput.flush();
      rendererOutput.close();
    } catch (Exception e) {
      // bummer, error during rendering
      log.error("Error during rendering for rsd template", e);

      if (!response.isCommitted()) response.reset();
      response.sendError(HttpServletResponse.SC_NOT_FOUND);
      return;
    }

    // post rendering process

    // flush rendered content to response
    log.debug("Flushing response output");
    response.setContentLength(rendererOutput.getContent().length);
    response.getOutputStream().write(rendererOutput.getContent());

    log.debug("Exiting");
  }