in app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java [123:224]
private void removeWeblogContents(Weblog weblog)
throws WebloggerException {
UserManager umgr = roller.getUserManager();
WeblogEntryManager emgr = roller.getWeblogEntryManager();
// remove tags
TypedQuery<WeblogEntryTag> tagQuery = strategy.getNamedQuery("WeblogEntryTag.getByWeblog",
WeblogEntryTag.class);
tagQuery.setParameter(1, weblog);
List<WeblogEntryTag> results = tagQuery.getResultList();
for (WeblogEntryTag tagData : results) {
if (tagData.getWeblogEntry() != null) {
tagData.getWeblogEntry().getTags().remove(tagData);
}
this.strategy.remove(tagData);
}
// remove site tag aggregates
List<TagStat> tags = emgr.getTags(weblog, null, null, 0, -1);
updateTagAggregates(tags);
// delete all weblog tag aggregates
Query removeAggs= strategy.getNamedUpdate(
"WeblogEntryTagAggregate.removeByWeblog");
removeAggs.setParameter(1, weblog);
removeAggs.executeUpdate();
// delete all bad counts
Query removeCounts = strategy.getNamedUpdate(
"WeblogEntryTagAggregate.removeByTotalLessEqual");
removeCounts.setParameter(1, 0);
removeCounts.executeUpdate();
// Remove the weblog's ping queue entries
TypedQuery<PingQueueEntry> q = strategy.getNamedQuery("PingQueueEntry.getByWebsite", PingQueueEntry.class);
q.setParameter(1, weblog);
List<PingQueueEntry> queueEntries = q.getResultList();
for (Object obj : queueEntries) {
this.strategy.remove(obj);
}
// Remove the weblog's auto ping configurations
AutoPingManager autoPingMgr = roller.getAutopingManager();
List<AutoPing> autopings = autoPingMgr.getAutoPingsByWebsite(weblog);
for (AutoPing autoPing : autopings) {
this.strategy.remove(autoPing);
}
// remove associated templates
TypedQuery<WeblogTemplate> templateQuery = strategy.getNamedQuery("WeblogTemplate.getByWeblog",
WeblogTemplate.class);
templateQuery.setParameter(1, weblog);
List<WeblogTemplate> templates = templateQuery.getResultList();
for (WeblogTemplate template : templates) {
this.strategy.remove(template);
}
// remove folders (including bookmarks)
TypedQuery<WeblogBookmarkFolder> folderQuery = strategy.getNamedQuery("WeblogBookmarkFolder.getByWebsite",
WeblogBookmarkFolder.class);
folderQuery.setParameter(1, weblog);
List<WeblogBookmarkFolder> folders = folderQuery.getResultList();
for (WeblogBookmarkFolder wbf : folders) {
this.strategy.remove(wbf);
}
// remove mediafile metadata
// remove uploaded files
MediaFileManager mfmgr = WebloggerFactory.getWeblogger().getMediaFileManager();
mfmgr.removeAllFiles(weblog);
//List<MediaFileDirectory> dirs = mmgr.getMediaFileDirectories(weblog);
//for (MediaFileDirectory dir : dirs) {
//this.strategy.remove(dir);
//}
this.strategy.flush();
// remove entries
TypedQuery<WeblogEntry> refQuery = strategy.getNamedQuery("WeblogEntry.getByWebsite", WeblogEntry.class);
refQuery.setParameter(1, weblog);
List<WeblogEntry> entries = refQuery.getResultList();
for (WeblogEntry entry : entries) {
emgr.removeWeblogEntry(entry);
}
this.strategy.flush();
// delete all weblog categories
Query removeCategories= strategy.getNamedUpdate("WeblogCategory.removeByWeblog");
removeCategories.setParameter(1, weblog);
removeCategories.executeUpdate();
// remove permissions
for (WeblogPermission perm : umgr.getWeblogPermissions(weblog)) {
umgr.revokeWeblogPermission(perm.getWeblog(), perm.getUser(), WeblogPermission.ALL_ACTIONS);
}
// flush the changes before returning. This is required as there is a
// circular dependency between WeblogCategory and Weblog
this.strategy.flush();
}