/** 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(); }
public static void invalidate(Weblog website) { log.debug("invalidating website = " + website.getHandle()); Iterator handlers = cacheHandlers.iterator(); while (handlers.hasNext()) { ((CacheHandler) handlers.next()).invalidate(website); } }
/** 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()); }
/** 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; }
/** 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()); } }
/** 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()); }
/** 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()); }
/** 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()); } }
/** 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()); } }
/** 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(); }
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); } }
/** 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; }
/** 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"); }