1 16 package dlog4j; 17 18 import java.util.Iterator ; 19 import java.util.List ; 20 21 import dlog4j.formbean.CategoryForm; 22 import dlog4j.formbean.SiteForm; 23 import dlog4j.formbean.UserForm; 24 import dlog4j.security.DlogRole; 25 26 import net.sf.hibernate.Criteria; 27 import net.sf.hibernate.HibernateException; 28 import net.sf.hibernate.Session; 29 import net.sf.hibernate.expression.Expression; 30 import net.sf.hibernate.expression.Order; 31 32 36 public class CategoryManager { 37 38 48 public static CategoryForm getCategory(Session ssn, SiteForm site, int cat_id) 49 throws HibernateException { 50 Criteria crit = ssn.createCriteria(CategoryForm.class); 51 crit = crit.add(Expression.eq("site.id", new Integer (site.getId()))); 52 crit = crit.add(Expression.eq("id", new Integer (cat_id))); 53 try { 54 List cats = crit.list(); 55 if(cats.size()>0) 56 return (CategoryForm)cats.get(0); 57 }catch(HibernateException e) {} 58 return null; 59 } 60 61 70 public static List listCategories(Session ssn, SiteForm site) 71 throws HibernateException { 72 Criteria crit = ssn.createCriteria(CategoryForm.class); 73 crit = crit.add(Expression.eq("site.id", new Integer (site.getId()))); 74 crit = crit.addOrder(Order.asc("order")); 75 return crit.list(); 76 } 77 86 public static List listCategories(Session ssn, SiteForm site, UserForm loginUser) 87 throws HibernateException { 88 Criteria crit = ssn.createCriteria(CategoryForm.class); 89 crit = crit.add(Expression.eq("site.id", new Integer (site.getId()))); 90 crit = crit.addOrder(Order.asc("order")); 91 List cats = crit.list(); 92 Iterator icats = cats.iterator(); 93 int role = (loginUser!=null)?loginUser.getUserRole():DlogRole.ROLE_GUEST; 94 int[] ncats = (loginUser!=null)?loginUser.getOwnerCatids():new int[0]; 95 96 while(role!=DlogRole.ROLE_MANAGER && icats.hasNext()){ 97 CategoryForm cat = (CategoryForm)icats.next(); 98 if(role==DlogRole.ROLE_BUDDY){ 99 if(cat.getType()==CategoryForm.TYPE_OWNER){ 100 int i=0; 101 for(;i<ncats.length;i++){ 102 if(cat.getId()==ncats[i]) 103 break; 104 } 105 if(i>=ncats.length) 106 icats.remove(); 107 } 108 } 109 else{ 110 if(cat.getType()==CategoryForm.TYPE_OWNER) 111 icats.remove(); 112 } 113 } 114 return cats; 115 } 116 117 126 public static List listCategoriesForModify(Session ssn, SiteForm site, UserForm loginUser) 127 throws HibernateException { 128 Criteria crit = ssn.createCriteria(CategoryForm.class); 129 crit = crit.add(Expression.eq("site.id", new Integer (site.getId()))); 130 crit = crit.addOrder(Order.asc("order")); 131 List cats = crit.list(); 132 Iterator icats = cats.iterator(); 133 int role = (loginUser!=null)?loginUser.getRole().getId():DlogRole.ROLE_GUEST; 134 int[] ncats = (loginUser!=null)?loginUser.getOwnerCatids():new int[0]; 135 136 while(role!=DlogRole.ROLE_MANAGER && icats.hasNext()){ 137 CategoryForm cat = (CategoryForm)icats.next(); 138 if(role==DlogRole.ROLE_BUDDY){ 139 if(cat.getType()==CategoryForm.TYPE_OWNER){ 140 int i=0; 141 for(;i<ncats.length;i++){ 142 if(cat.getId()==ncats[i]) 143 break; 144 } 145 if(i<ncats.length) 146 continue; 147 } 148 else 149 if(cat.getType()==CategoryForm.TYPE_COMMON) 150 continue; 151 } 152 if(role==DlogRole.ROLE_FRIEND){ 153 if(cat.getType()==CategoryForm.TYPE_COMMON){ 154 int i=0; 155 for(;i<ncats.length;i++){ 156 if(cat.getId()==ncats[i]) 157 break; 158 } 159 if(i<ncats.length) 160 continue; 161 } 162 } 163 icats.remove(); 164 } 165 return cats; 166 } 167 } 168 | Popular Tags |