1 25 26 package com.j2biz.blogunity.web.actions.my; 27 28 import java.io.File ; 29 30 import javax.servlet.http.HttpServletRequest ; 31 import javax.servlet.http.HttpServletResponse ; 32 33 import com.j2biz.blogunity.BlogunityManager; 34 import com.j2biz.blogunity.dao.BlogDAO; 35 import com.j2biz.blogunity.exception.BlogunityException; 36 import com.j2biz.blogunity.i18n.I18N; 37 import com.j2biz.blogunity.i18n.I18NStatusFactory; 38 import com.j2biz.blogunity.pojo.Blog; 39 import com.j2biz.blogunity.pojo.SystemConfiguration; 40 import com.j2biz.blogunity.util.HibernateUtil; 41 import com.j2biz.blogunity.web.ActionResultFactory; 42 import com.j2biz.blogunity.web.IActionResult; 43 44 51 public class DeleteBlogExecAction extends MyAbstractAction { 52 53 private static final IActionResult FOUNDED_BLOGS_LIST_REDIRECT = ActionResultFactory 54 .buildRedirect("/my/foundedBlogsList"); 55 56 62 public IActionResult execute(HttpServletRequest request, HttpServletResponse response) 63 throws BlogunityException { 64 65 String blogId = request.getParameter("id"); 66 BlogDAO dao = new BlogDAO(); 67 Blog b = dao.getBlogByID(Long.parseLong(blogId)); 68 if (user.getId().longValue() != b.getFounder().getId().longValue() 69 && !user.isAdministrator()) 70 throw new BlogunityException(I18NStatusFactory 71 .create(I18N.ERRORS.USER_NOT_AUTHORIZED_FOR_EXECUTION)); 72 73 dao.deleteBlog(b); 74 75 try { 76 deleteBlogDirectory(b); 77 } catch (BlogunityException e) { 78 HibernateUtil.rollbackTransaction(); 79 throw e; 80 } 81 82 return FOUNDED_BLOGS_LIST_REDIRECT; 83 } 84 85 88 private void deleteBlogDirectory(Blog b) throws BlogunityException { 89 SystemConfiguration config = BlogunityManager.getSystemConfiguration(); 90 91 File blogsDir = config.getBlogsDirectory(); 92 File blogDir = new File (blogsDir, b.getUrlName()); 93 94 boolean result = deleteDir(blogDir); 95 if (!result) 96 throw new BlogunityException(I18NStatusFactory.create(I18N.ERRORS.DELETE_DIRECTORY, 97 blogDir.getAbsolutePath())); 98 99 } 100 101 109 public static boolean deleteDir(File dir) { 110 if (dir.isDirectory()) { 111 String [] children = dir.list(); 112 for (int i = 0; i < children.length; i++) { 113 boolean success = deleteDir(new File (dir, children[i])); 114 if (!success) { return false; } 115 } 116 } 117 118 return dir.delete(); 120 } 121 } | Popular Tags |