1 16 package dlog4j.action; 17 18 import java.io.BufferedReader ; 19 import java.io.File ; 20 import java.io.IOException ; 21 import java.io.InputStream ; 22 import java.io.InputStreamReader ; 23 import java.text.MessageFormat ; 24 import java.text.SimpleDateFormat ; 25 import java.util.Date ; 26 import java.util.List ; 27 28 import javax.servlet.ServletContext ; 29 import javax.servlet.http.HttpServletRequest ; 30 import javax.servlet.http.HttpServletResponse ; 31 32 import net.sf.hibernate.HibernateException; 33 import net.sf.hibernate.Query; 34 import net.sf.hibernate.Session; 35 36 import org.apache.commons.lang.StringUtils; 37 import org.apache.struts.action.Action; 38 import org.apache.struts.action.ActionError; 39 import org.apache.struts.action.ActionErrors; 40 import org.apache.struts.action.ActionForm; 41 import org.apache.struts.action.ActionForward; 42 import org.apache.struts.action.ActionMapping; 43 import org.htmlparser.Node; 44 import org.htmlparser.Parser; 45 import org.htmlparser.tags.TitleTag; 46 import org.htmlparser.util.NodeIterator; 47 48 import dlog4j.Globals; 49 import dlog4j.SiteManager; 50 import dlog4j.UserManager; 51 import dlog4j.blog.BlogTrackBack; 52 import dlog4j.blog.TrackBackResp; 53 import dlog4j.formbean.BookMarkBean; 54 import dlog4j.formbean.CategoryForm; 55 import dlog4j.formbean.DraftForm; 56 import dlog4j.formbean.LogForm; 57 import dlog4j.formbean.LoginTrackBean; 58 import dlog4j.formbean.ReplyForm; 59 import dlog4j.formbean.SiteForm; 60 import dlog4j.formbean.UserForm; 61 import dlog4j.search.SearchProxy; 62 import dlog4j.security.DlogRole; 63 import dlog4j.security.SecurityConfig; 64 import dlog4j.util.RequestUtils; 65 import dlog4j.util.mail.Mailer; 66 67 68 80 public class DlogLogAction extends DlogActionBase { 81 82 public final static String PARAM_DRAFT = "draft_id"; 83 static String uploadDir = null; 85 static String MODIFY_APPEND_FORMAT = "MODIFY_APPEND_FORMAT"; 86 88 91 public ActionForward doDeleteBookMark( 92 ActionMapping mapping, 93 ActionForm form, 94 HttpServletRequest request, 95 HttpServletResponse response, 96 String mark_id) 97 throws Exception { 98 Session ssn = null; 99 ActionErrors msgs = new ActionErrors(); 101 UserForm user = UserForm.getLoginUser(request); 102 if(user!=null && user.isLogin()) 103 try{ 104 ssn = getSession(); 105 SiteForm site = SiteManager.getCurrentSite(request); 106 int markid = Integer.parseInt(mark_id); 107 BookMarkBean bmb = (BookMarkBean)ssn.load(BookMarkBean.class,new Integer (markid)); 108 if(bmb.getUser().getId()!=user.getId()) 109 msgs.add("bookmark",new ActionError("operation_not_allow")); 110 else 111 ssn.delete(bmb); 112 }catch(HibernateException e) { 113 }catch(NumberFormatException e) { }finally{ 115 commitSession(ssn,true); 116 } 117 ActionForward forward = new ActionForward(mapping.findForward("bookmark").getPath(), false); 118 if(!msgs.isEmpty()) 119 this.saveErrors(request,msgs); 120 else 121 forward.setRedirect(true); 122 123 return forward; 124 } 125 128 public ActionForward doAddBookMark( 129 ActionMapping mapping, 130 ActionForm form, 131 HttpServletRequest request, 132 HttpServletResponse response, 133 String log_id) 134 throws Exception { 135 Session ssn = null; 136 ActionErrors msgs = new ActionErrors(); 138 UserForm user = UserForm.getLoginUser(request); 139 if(user!=null && user.isLogin()) 140 try{ 141 ssn = getSession(); 142 SiteForm site = SiteManager.getCurrentSite(request); 143 int logid = Integer.parseInt(log_id); 144 LogForm log = new LogForm(); 145 log.setId(logid); 146 String hql = "SELECT COUNT(b.id) FROM "+BookMarkBean.class.getName()+" AS b WHERE b.site.id=? AND b.log.id=? AND b.user.id=?"; 148 Query q = ssn.createQuery(hql); 149 q.setInteger(0,site.getId()); 150 q.setInteger(1,logid); 151 q.setInteger(2,user.getId()); 152 int uc = 0; 153 try { 154 uc = ((Integer )q.list().get(0)).intValue(); 155 }catch(Exception e) {} 156 if(uc==0) { 157 BookMarkBean bmb = new BookMarkBean(site,user,log); 158 bmb.setCreateTime(new Date ()); 159 bmb.setType(BookMarkBean.BM_LOG); 160 ssn.save(bmb); 161 msgs.add("bookmark",new ActionError("bookmark.addok")); 162 } 163 else 164 msgs.add("bookmark",new ActionError("bookmark.exits")); 165 }catch(NumberFormatException e) { }finally{ 167 commitSession(ssn,true); 168 } 169 170 ActionForward forward = new ActionForward(mapping.findForward("showlog").getPath(), false); 171 if(!msgs.isEmpty()) 172 this.saveErrors(request,msgs); 173 else 174 forward.setRedirect(true); 175 176 return forward; 177 } 178 187 public ActionForward doAddReply( 188 ActionMapping mapping, 189 ActionForm form, 190 HttpServletRequest request, 191 HttpServletResponse response) 192 throws Exception { 193 ReplyForm reply = (ReplyForm)form; 194 Session ssn = null; 195 String loginName = request.getParameter("loginName"); 197 String password = request.getParameter("password"); 198 if(loginName!=null && password!=null){ 199 ActionErrors es = new ActionErrors(); 200 if(StringUtils.isEmpty(loginName)) 201 es.add("updateReply",new ActionError("user_not_login")); 202 else{ 203 ssn = getSession(); 205 UserForm user = UserManager.getUser(ssn,SiteManager.getCurrentSite(request),loginName); 206 if(user!=null) { 208 if(user.getUserRole()==DlogRole.ROLE_GUEST) 210 es.add("updateReply",new ActionError("user_pause")); 211 else 213 if(StringUtils.equals(user.getPassword(),password)){ 214 user.setLastTime(new Date ()); 216 user.setLoginCount(user.getLoginCount()+1); 217 ssn.update(user); 218 UserManager.fillUserWithLogAndReplyCount(ssn, user, false); 219 DlogRole role = (DlogRole)SecurityConfig.getConfig().getRoleById(user.getUserRole()&31); 221 if(role==null){ 222 role = SecurityConfig.getConfig().getRoleById(DlogRole.ROLE_COMMON); 223 user.setUserRole(DlogRole.ROLE_COMMON); 224 ssn.update(user); 225 } 226 user.setRole(role); 227 user.saveLoginUser(request); 229 LoginTrackBean ltb = new LoginTrackBean(request); 231 ssn.save(ltb); 232 commitSession(ssn,true); 233 } 234 else 235 es.add("updateReply",new ActionError("password_error")); 236 } 237 else 238 es.add("updateReply",new ActionError("loginName_noexits")); 239 } 240 241 if(!es.isEmpty()){ 242 saveErrors(request, es); 243 return mapping.getInputForward(); 244 } 245 } 246 UserForm loginUser = UserForm.getLoginUser(request); 247 if(loginUser!=null && loginUser.isLogin()) 248 try{ 249 ssn = getSession(); 250 SiteForm site = SiteManager.getCurrentSite(request); 251 String hql = "FROM "+ReplyForm.class.getName()+" AS r WHERE r.site.id=? AND r.author.id=? AND r.log.id=?"; 253 Query q = ssn.createQuery(hql); 254 q.setInteger(0,site.getId()); 255 q.setInteger(1, loginUser.getId()); 256 q.setInteger(2,reply.getLogId()); 257 List rs = q.list(); 258 boolean bNew = true; 259 for(int i=0;i<rs.size();i++) { 260 ReplyForm r = (ReplyForm)rs.get(i); 261 if(r.getContent().equals(reply.getContent())) { 262 bNew = false; 263 break; 264 } 265 } 266 rs.clear(); 267 if(bNew) { 268 reply.setAuthor(loginUser); 269 reply.setWriteTime(new Date ()); 270 reply.setSite(site); 271 ssn.save(reply); 272 int logid = reply.getLogId(); 273 LogForm log = (LogForm)ssn.load(LogForm.class, new Integer (logid)); 274 log.setReplyCount(log.getReplyCount()+1); 275 ssn.update(log); 276 if(1==log.getReplyNotify()){ 278 if(StringUtils.isEmpty(log.getOwner().getEmail())){ 279 getServlet().log("***** The email of Author is empty or illegal. *****"); 280 } 281 else if(!StringUtils.equals(log.getOwner().getLoginName(),reply.getAuthor().getLoginName())) 282 { 283 try{ 284 Mailer sender = Mailer.getMailer(); 285 String url = site.getUrl()+"/showlog.jspe?log_id="+log.getId()+"#"+reply.getId(); 286 String curTime = new SimpleDateFormat ("yyyy-MM-dd HH:mm").format(new Date ()); 287 String replyUser = loginUser.getDisplayName(); 288 if(StringUtils.isNotEmpty(loginUser.getEmail())){ 289 StringBuffer link = new StringBuffer (); 290 link.append("<a HREF=\"mailto:"); 291 link.append(loginUser.getEmail()); 292 link.append("\">"); 293 link.append(replyUser); 294 link.append("</a>"); 295 replyUser = link.toString(); 296 } 297 String [] args = {log.getOwner().getDisplayName(), 298 log.getTitle(), 299 replyUser, 300 url, 301 curTime, 302 reply.getContent()}; 303 String template = getContentTemplate(); 304 String content = MessageFormat.format(template, args); 305 Parser html = Parser.createParser(new String (content.getBytes(),"8859_1")); 306 Node[] nodes = html.extractAllNodesThatAre(TitleTag.class); 307 String title = nodes[0].toPlainTextString(); 308 sender.send(site.getDisplayName(), 309 new String []{log.getOwner().getEmail()}, 310 title, 311 content); 312 }catch(Exception e){ 313 getServlet().log("Send reply notification failed.",e); 314 } 315 } 316 } 317 } 318 }finally{ 319 commitSession(ssn,true); 320 reply.reset(mapping,request); 321 } 322 else{ 323 return mapping.findForward("fail_to_reply"); 324 } 325 StringBuffer forward = new StringBuffer (); 326 forward.append(mapping.getInput()); 327 forward.append("?log_id="); 328 forward.append(reply.getLogId()); 329 if(reply.getLog().getCategoryId()!=-1){ 330 forward.append("&cat_id="); 331 forward.append(reply.getLog().getCategoryId()); 332 } 333 forward.append('#'); 334 forward.append(reply.getId()); 335 return new ActionForward(forward.toString(), true); 336 } 337 346 public ActionForward doDeleteReply( 347 ActionMapping mapping, 348 ActionForm form, 349 HttpServletRequest request, 350 HttpServletResponse response, 351 String reply_id) 352 throws Exception { 353 int rid = -1; 354 try { 355 rid = Integer.parseInt(reply_id); 356 }catch(Exception e) {} 357 int logid = -1; 358 if(rid!=-1) { 359 Session ssn = null; 360 UserForm user = UserForm.getLoginUser(request); 362 if(user!=null && user.isLogin()) 363 try{ 364 ssn = getSession(); 365 ReplyForm old = (ReplyForm)ssn.load(ReplyForm.class,new Integer (rid)); 366 logid = old.getLogId(); 367 if(!user.isAdmin() && old.getAuthorId()!=user.getId()) { 368 ActionErrors errors = new ActionErrors(); 369 errors.add("updateReply",new ActionError("operation_not_allow")); 370 if(!errors.isEmpty()) 371 saveErrors(request,errors); 372 } 373 else { 374 ssn.delete(old); 375 LogForm log = (LogForm)ssn.load(LogForm.class, new Integer (logid)); 376 log.setReplyCount(log.getReplyCount()-1); 377 ssn.update(log); 378 SearchProxy proxy = SearchProxy.getReplyQuery(); 379 proxy.deleteIndex(new int[] {old.getId()}); 380 } 381 }catch(HibernateException e) { 382 }finally{ 383 commitSession(ssn,true); 384 } 385 } 386 StringBuffer url = new StringBuffer (100); 387 url.append(mapping.getInput()); 388 url.append('?'); 389 if(logid>0) { 390 url.append("&log_id="); 391 url.append(logid); 392 } 393 String user_id = request.getParameter(Globals.PARAM_USER); 394 if(user_id!=null) { 395 url.append("&userid="); 396 url.append(user_id); 397 } 398 String page = request.getParameter("page"); 399 if(page!=null) { 400 url.append("&page="); 401 url.append(page); 402 } 403 return new ActionForward(url.toString(), true); 404 } 405 414 public ActionForward doUpdateReply( 415 ActionMapping mapping, 416 ActionForm form, 417 HttpServletRequest request, 418 HttpServletResponse response) 419 throws Exception { 420 ReplyForm reply = (ReplyForm)form; 421 Session ssn = null; 422 UserForm user = UserForm.getLoginUser(request); 424 if(user!=null && user.isLogin()) 425 try{ 426 ssn = getSession(); 427 ReplyForm old = (ReplyForm)ssn.load(ReplyForm.class,new Integer (reply.getId())); 428 if(!user.isAdmin() && old.getAuthorId()!=user.getId()) { 429 ActionErrors errors = new ActionErrors(); 430 errors.add("updateReply",new ActionError("operation_not_allow")); 431 if(!errors.isEmpty()) 432 saveErrors(request,errors); 433 } 434 else { 435 boolean needModifier = true; 436 if(old.getAuthor().getId()==user.getId()){ 437 long ct = System.currentTimeMillis(); 438 long interval = (ct - old.getWriteTime().getTime())/3600000; 439 if(interval < 2) 440 needModifier = false; 441 } 442 if(needModifier){ 443 String append_text = getModifyAppendMessage(request, 444 reply.getShowFormerly()!=1, 445 user.getLoginName(), 446 user.getDisplayName()); 447 old.setContent(reply.getContent() + append_text); 448 } 449 else 450 old.setContent(reply.getContent()); 451 old.setShowFormerly(reply.getShowFormerly()); 452 ssn.update(old); 453 SearchProxy proxy = SearchProxy.getReplyQuery(); 454 proxy.updateIndex(old); 455 } 456 }catch(HibernateException e) { 457 }finally{ 458 commitSession(ssn,true); 459 } 460 else 461 return mapping.findForward("fail_to_reply"); 462 StringBuffer forward = new StringBuffer (); 463 forward.append(mapping.getInput()); 464 forward.append("?log_id="); 465 forward.append(reply.getLogId()); 466 forward.append("&cat_id="); 467 forward.append(reply.getLog().getCategoryId()); 468 forward.append('#'); 469 forward.append(reply.getId()); 470 return new ActionForward(forward.toString(), true); 471 } 472 479 protected String getModifyAppendMessage(HttpServletRequest req, boolean html, String loginName,String userName) { 480 Object [] args = new String [] {Globals.FORMAT_DT.format(new Date ()),loginName,userName}; 481 String append_text = getResources(req).getMessage(req.getLocale(),MODIFY_APPEND_FORMAT,args); 482 if(!html) { 483 try { 484 Parser p = Parser.createParser(new String (append_text.getBytes(),"8859_1")); 485 NodeIterator nodes = p.elements(); 486 while(nodes.hasMoreNodes()) { 487 Node node = nodes.nextNode(); 488 append_text = node.toPlainTextString().trim(); 489 append_text = "\r\n\r\n"+new String (StringUtils.replace(append_text," "," ").getBytes("8859_1")); 490 break; 491 } 492 }catch(Exception e) {} 493 } 494 return append_text; 495 } 496 497 506 public ActionForward doDeleteLog( 507 ActionMapping mapping, 508 ActionForm form, 509 HttpServletRequest request, 510 HttpServletResponse response) 511 throws Exception { 512 513 String forward = "home"; 514 LogForm log = (LogForm) form; 515 UserForm user = UserForm.getLoginUser(request); 517 if (user != null && user.isLogin()) { 518 Session ssn = getSession(); 519 LogForm old = (LogForm) ssn.load(LogForm.class, new Integer (log.getId())); 520 if(old!=null) 521 try { 522 old.setStatus(LogForm.STATUS_DELETED); 523 old.setDeleteTime(new Date ()); 524 ssn.update(old); 525 SearchProxy proxy = SearchProxy.getLogQuery(); 526 proxy.deleteIndex(new int[] {old.getId()}); 527 } finally { 528 commitSession(ssn, true); 529 } 530 } 531 return new ActionForward(mapping.findForward(forward).getPath()+"?cat_id="+log.getCategoryId(), true); 532 } 533 542 public ActionForward doDeleteDraft( 543 ActionMapping mapping, 544 ActionForm form, 545 HttpServletRequest request, 546 HttpServletResponse response) 547 throws Exception { 548 549 String forward = "draft"; 550 LogForm log = (LogForm) form; 551 UserForm user = UserForm.getLoginUser(request); 553 554 if (user != null && user.isLogin() && (user.isAdmin() || user.isFriend())) { 555 Session ssn = null; 556 try { 557 ssn = getSession(); 558 int draft_id = Integer.parseInt(request.getParameter(PARAM_DRAFT)); 559 DraftForm draft = (DraftForm)ssn.load(DraftForm.class,new Integer (draft_id)); 560 ssn.delete(draft); 561 } finally { 562 commitSession(ssn, true); 563 } 564 } else 565 forward = "home"; 566 return mapping.findForward(forward); 567 } 568 577 public ActionForward doUpdateDraft( 578 ActionMapping mapping, 579 ActionForm form, 580 HttpServletRequest request, 581 HttpServletResponse response) 582 throws Exception { 583 584 String forward = "draft"; 585 LogForm log = (LogForm) form; 586 UserForm user = UserForm.getLoginUser(request); 588 if(user==null||!user.isLogin()) 589 forward = "home"; 590 else 591 if (user.isAdmin() || user.isFriend()) { 592 Session ssn = null; 593 try { 594 ssn = getSession(); 595 int draft_id = Integer.parseInt(request.getParameter(PARAM_DRAFT)); 596 DraftForm draft = (DraftForm)ssn.load(DraftForm.class,new Integer (draft_id)); 597 if(!user.isAdmin() && draft.getOwner().getId()!=user.getId()) { 598 ActionErrors errors = new ActionErrors(); 599 errors.add("updateDraft",new ActionError("operation_not_allow")); 600 if(!errors.isEmpty()) 601 saveErrors(request,errors); 602 } 603 else { 604 draft.setAuthor(log.getAuthor()); 605 draft.setAuthorUrl(log.getAuthorUrl()); 606 draft.setContent(log.getContent()); 607 draft.setLogTime(new Date ()); 608 draft.setMoodLevel(log.getMoodLevel()); 609 draft.setOwner(user); 610 draft.setRefUrl(log.getRefUrl()); 611 draft.setShowFormerly(log.getShowFormerly()); 612 draft.setSite(SiteManager.getCurrentSite(request)); 613 draft.setTitle(log.getTitle()); 614 draft.setUseFace(log.getUseFace()); 615 draft.setUseUbb(log.getUseUbb()); 616 draft.setWeather(log.getWeather()); 617 ssn.update(draft); 618 } 619 } finally { 620 commitSession(ssn, true); 621 } 622 } else 623 forward = "home"; 624 return mapping.findForward(forward); 625 } 626 635 public ActionForward doSaveDraft( 636 ActionMapping mapping, 637 ActionForm form, 638 HttpServletRequest request, 639 HttpServletResponse response) 640 throws Exception { 641 642 String forward = "draft"; 643 LogForm log = (LogForm) form; 644 UserForm user = UserForm.getLoginUser(request); 646 647 if (user != null && user.isLogin() && (user.isAdmin() || user.isFriend())) { 648 Session ssn = null; 649 DraftForm draft = new DraftForm(); 650 draft.setAuthor(log.getAuthor()); 651 draft.setAuthorUrl(log.getAuthorUrl()); 652 draft.setContent(log.getContent()); 653 draft.setLogTime(new Date ()); 654 draft.setMoodLevel(log.getMoodLevel()); 655 draft.setOwner(user); 656 draft.setRefUrl(log.getRefUrl()); 657 draft.setShowFormerly(log.getShowFormerly()); 658 draft.setSite(SiteManager.getCurrentSite(request)); 659 draft.setTitle(log.getTitle()); 660 draft.setUseFace(log.getUseFace()); 661 draft.setUseUbb(log.getUseUbb()); 662 draft.setWeather(log.getWeather()); 663 try { 664 ssn = getSession(); 665 ssn.save(draft); 666 } finally { 667 commitSession(ssn, true); 668 } 669 } else{ 670 forward = "fail_to_save"; 671 } 672 return mapping.findForward(forward); 673 } 674 683 public ActionForward doEditLog( 684 ActionMapping mapping, 685 ActionForm form, 686 HttpServletRequest request, 687 HttpServletResponse response) 688 throws Exception { 689 690 String forward = "showlog"; 691 LogForm log = (LogForm) form; 692 UserForm user = UserForm.getLoginUser(request); 694 695 if (user != null && user.isLogin()) { 696 Session ssn = getSession(); 697 LogForm old = (LogForm) ssn.load(LogForm.class, new Integer (log.getId())); 698 old.setTitle(log.getTitle()); 699 boolean needModifier = true; 700 if(old.getOwner().getId()==user.getId()){ 701 long ct = System.currentTimeMillis(); 702 long interval = (ct - old.getLogTime().getTime())/3600000; 703 if(interval < 6) 704 needModifier = false; 705 } 706 if(needModifier){ 707 String append_text = getModifyAppendMessage(request,log.getShowFormerly()!=1, 708 user.getLoginName(),user.getDisplayName()); 709 old.setContent(log.getContent()+append_text); 710 } 711 else 712 old.setContent(log.getContent()); 713 old.setAuthor(log.getAuthor()); 714 old.setAuthorUrl(log.getAuthorUrl()); 715 old.setMoodLevel(log.getMoodLevel()); 716 old.setRefUrl(log.getRefUrl()); 717 old.setWeather(log.getWeather()); 718 old.setUseUbb(log.getUseUbb()); 719 old.setUseFace(log.getUseFace()); 720 old.setShowFormerly(log.getShowFormerly()); 721 old.setSearchKey(log.getSearchKey()); 722 old.setReplyNotify(log.getReplyNotify()); 723 if (log.getCategoryId() != old.getCategoryId()) { 724 CategoryForm cat = 725 (CategoryForm) ssn.load( 726 CategoryForm.class, 727 new Integer (log.getCategoryId())); 728 old.setCategory(cat); 729 } 730 731 try { 732 ssn.update(old); 733 SearchProxy proxy = SearchProxy.getLogQuery(); 734 proxy.updateIndex(old); 735 } finally { 736 commitSession(ssn, true); 737 } 738 } else{ 739 return mapping.findForward("fail_to_save"); 740 } 741 return new ActionForward(mapping.findForward(forward).getPath()+"?log_id=" + log.getId(),true); 742 } 743 752 public ActionForward doAddLog( 753 ActionMapping mapping, 754 ActionForm form, 755 HttpServletRequest request, 756 HttpServletResponse response) 757 throws Exception { 758 759 String forward = "home"; 760 LogForm log = (LogForm) form; 761 UserForm user = UserForm.getLoginUser(request); 763 764 if (user!=null && user.isLogin()) { 765 log.setOwner(user); 766 if (log.getLogTime() == null) 767 log.setLogTime(new Date ()); 768 Session ssn = getSession(); 769 try { 770 SiteForm site = SiteManager.getCurrentSite(request); 771 log.setSite(site); 772 ssn.save(log); 773 int draftId = -1; 774 try { 775 draftId = Integer.parseInt(request.getParameter(PARAM_DRAFT)); 776 }catch(Exception e) {} 777 if(draftId!=-1) { 778 DraftForm draft = (DraftForm)ssn.load(DraftForm.class,new Integer (draftId)); 779 if(draft!=null) 780 ssn.delete(draft); 781 } 782 if("1".equals(request.getParameter("bookmark"))) { 784 BookMarkBean bmb = new BookMarkBean(log.getSite(),user,log); 785 bmb.setCreateTime(new Date ()); 786 bmb.setType(BookMarkBean.BM_LOG); 787 ssn.save(bmb); 788 } 789 if(StringUtils.isNotEmpty(log.getRefUrl())){ 790 final LogForm logForm = log; 792 final SiteForm siteForm = site; 793 final String log_url = RequestUtils.getBaseURL(request); 794 final Action action = this; 795 new Thread (){ 796 public void run(){ 797 try{ 798 TrackBackResp resp = BlogTrackBack.track(logForm.getRefUrl(), 799 log_url+"/showlog.jspe?log_id="+logForm.getId(), 800 siteForm.getDisplayName(), 801 logForm.getTitle(), 802 ""); 803 }catch(Exception e){ 804 action.getServlet().log("TrackBack Failed. url="+logForm.getRefUrl(),e); 805 } 806 } 807 }.start(); 808 } 809 } finally { 810 commitSession(ssn, true); 811 } 812 } 813 else{ 814 return mapping.findForward("fail_to_save"); 816 } 817 return new ActionForward(mapping.findForward(forward).getPath()+"?cat_id="+log.getCategoryId(),true); 818 } 819 820 825 protected String getUniqueFileName(String extName) { 826 final SimpleDateFormat sdf = 827 new SimpleDateFormat ("yyyyMMddHHmmssSSSS."); 828 String fn = null; 829 do { 830 fn = sdf.format(new Date ()) + extName; 831 if (new File (uploadDir + fn).exists()) 832 continue; 833 break; 834 } while (true); 835 return fn; 836 } 837 842 protected static String getFileExtendName(String file) { 843 int idx = file.lastIndexOf('.'); 844 return (idx == -1 || idx == (file.length() - 1)) 845 ? "" 846 : file.substring(idx + 1).toLowerCase(); 847 } 848 852 protected String getUploadDir() { 853 String path = servlet.getServletContext().getInitParameter("uploadDir"); 854 if (path == null) 855 path = "uploads"; 856 String webpath = servlet.getServletContext().getRealPath(path); 857 if (webpath.endsWith(File.separator)) 858 webpath += File.separator; 859 return webpath; 860 } 861 public static void main(String [] args) { 862 } 864 869 protected String getContentTemplate() throws IOException { 870 ServletContext sc = getServlet().getServletContext(); 871 InputStream in = sc.getResourceAsStream("/WEB-INF/template/reply_tip.html"); 872 StringBuffer template = new StringBuffer (512); 873 BufferedReader reader = null; 874 try{ 875 reader = new BufferedReader (new InputStreamReader (in)); 876 do{ 877 String line = reader.readLine(); 878 if(line==null) 879 break; 880 template.append(line); 881 template.append("\r\n"); 882 }while(true); 883 }finally{ 884 in.close(); 885 } 886 return template.toString(); 887 } 888 } 889 | Popular Tags |