1 53 54 package com.Yasna.forum.tags; 55 56 import javax.servlet.jsp.tagext.*; 57 import com.Yasna.forum.*; 58 import javax.servlet.jsp.*; 59 import java.util.*; 60 61 public class GroupsLoopTag extends TagSupport implements BooleanTag { 62 63 private boolean hasGroups; 64 private CategoriesLoopTag category; 65 private Iterator forumGroupIterator; 66 private ForumGroup forumGroup; 67 private String name; 68 private final String BLANK = " "; 69 private String id; 70 71 public int doStartTag() throws JspException { 72 category = getParentCategory(); 73 forumGroupIterator = category.getCategory().forumGroups(); 74 hasGroups = forumGroupIterator.hasNext(); 75 if (hasGroups) { 76 forumGroup = (ForumGroup)forumGroupIterator.next(); 77 name = forumGroup.getName(); 78 pageContext.setAttribute(id, this, PageContext.PAGE_SCOPE); 79 } 80 return EVAL_BODY_INCLUDE; 81 } 82 83 public void setId(String id) { 84 this.id = id; 85 } 86 87 public int doAfterBody() throws JspException { 88 if (forumGroupIterator.hasNext()) { 89 forumGroup = (ForumGroup)forumGroupIterator.next();; 90 name = forumGroup.getName(); 91 return EVAL_BODY_AGAIN; 92 } else { 93 return SKIP_BODY; 94 } 95 } 96 97 public int doEndTag() throws JspException { 98 return EVAL_PAGE; 99 } 100 101 public boolean getValue() { 102 return hasGroups; 103 } 104 105 private CategoriesLoopTag getParentCategory() { 106 CategoriesLoopTag g = null; 107 try { 108 g = (CategoriesLoopTag)this.findAncestorWithClass(this, 109 Class.forName("com.Yasna.forum.tags.CategoriesLoopTag")); 110 } catch(Exception e) { 111 } 112 return g; 113 } 114 115 public ForumGroup getGroup() { 116 return forumGroup; 117 } 118 119 public String getName() { 120 String toReturn = name; 121 name = BLANK; 122 return toReturn; 123 } 124 } | Popular Tags |