1 package com.dotmarketing.portlets.categories.factories; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 7 import javax.servlet.http.HttpServletRequest ; 8 9 import com.dotmarketing.beans.Inode; 10 import com.dotmarketing.db.DotHibernate; 11 import com.dotmarketing.exception.DotRuntimeException; 12 import com.dotmarketing.factories.InodeFactory; 13 import com.dotmarketing.portlets.categories.model.Category; 14 import com.dotmarketing.portlets.entities.factories.EntityFactory; 15 import com.dotmarketing.portlets.entities.model.Entity; 16 import com.dotmarketing.util.Logger; 17 18 22 public class CategoryFactory { 23 24 public static Category getCategory(String id) { 25 try { 26 return getCategory(Integer.parseInt(id)); 27 } catch (Exception e) { 28 return new Category(); 29 } 30 } 31 32 public static void deleteCategoryFromHash(Inode o) { 33 34 } 35 36 public static Category getCategory(long id) { 37 38 DotHibernate dh = new DotHibernate(Category.class); 39 dh 40 .setQuery("from category in class com.dotmarketing.portlets.categories.model.Category where category.inode = ? "); 41 dh.setParam(id); 42 return (Category) dh.load(); 43 44 } 45 46 public static Category getCategoryByName(String name) { 47 DotHibernate dh = new DotHibernate(Category.class); 48 dh 49 .setQuery("from category in class com.dotmarketing.portlets.categories.model.Category where category_name like ? "); 50 dh.setParam(name); 51 52 return (Category) dh.load(); 53 } 54 55 public static Category getCategoryByKey(String name) { 56 57 DotHibernate dh = new DotHibernate(Category.class); 58 dh 59 .setQuery("from category in class com.dotmarketing.portlets.categories.model.Category where category_key = ? "); 60 dh.setParam(name); 61 62 return (Category) dh.load(); 63 } 64 65 public static Category getCategoryByNameAndParent(String name, Inode i) { 66 67 try { 69 String tableName = "category"; 70 DotHibernate dh = new DotHibernate(Category.class); 71 String sql = "SELECT {" + tableName + ".*} from " + tableName + " " + tableName + ", tree tree, inode " 72 + tableName + "_1_ where tree.parent = ? and tree.child = " + tableName + ".inode and " + tableName 73 + "_1_.inode = " + tableName + ".inode and category_name = ?"; 74 75 dh.setSQLQuery(sql); 76 77 dh.setParam(i.getInode()); 80 dh.setParam(name); 81 return (Category) dh.load(); 82 } catch (Exception e) { 83 Logger.error(CategoryFactory.class, "getCategoryByNameAndParent failed:" + e, e); 84 throw new DotRuntimeException(e.toString()); 85 } 86 87 } 88 89 public static Category getParentCategory(Category cat) { 90 return (Category) InodeFactory.getParentOfClass(cat, Category.class); 91 } 92 93 public static List getSiblingCategories(Category cat) { 94 Category parent = getParentCategory(cat); 95 if (parent.getInode() > 0) { 96 return getChildrenCategories(parent); 97 } else { 98 return getTopLevelCategories(); 99 } 100 } 101 102 public static java.util.List getOrphanCategories() { 103 DotHibernate dh = new DotHibernate(Category.class); 104 dh 105 .setQuery("from category in class com.dotmarketing.portlets.categories.model.Category where size(category.parents) =0 and size(category.children) = 0 order by sort_order"); 106 107 return dh.list(); 108 } 109 110 public static Category getTopCategoryByName(String name) { 111 112 DotHibernate dh = new DotHibernate(Category.class); 113 dh 114 .setSQLQuery("SELECT {category.*} from category category left join tree tree on category.inode = tree.child, inode category_1_ where tree.child is null and category_1_.inode = category.inode and category_name like ? order by category.sort_order"); 115 dh.setParam(name); 119 return (Category) dh.load(); 120 121 } 122 123 public static java.util.List getTopLevelCategories() { 124 125 DotHibernate dh = new DotHibernate(Category.class); 126 dh 127 .setSQLQuery("SELECT {category.*} from category category left join tree tree on category.inode = tree.child, inode category_1_ where tree.child is null and category_1_.inode = category.inode order by category.sort_order"); 128 return dh.list(); 129 130 } 131 132 public static void flushCachedPageCategories() { 133 134 } 135 136 public static java.util.List getChildrenCategories(Inode o) { 137 138 return InodeFactory.getChildrenClassByOrder(o, Category.class, "sort_order"); 139 140 } 141 142 public static java.util.List getChildrenCategories(String o) { 143 144 return getChildrenCategories(InodeFactory.getInode(o, Category.class)); 145 146 } 147 148 public static java.util.List getChildrenCategories(Inode o, String orderby) { 149 150 return InodeFactory.getChildrenClass(o, Category.class, orderby); 151 152 } 153 154 @SuppressWarnings ("unchecked") 155 public static List getCategoryTree(Category cat, List l) { 156 157 try { 158 if (cat.getInode() > 0) { 159 l.add(0, cat); 160 } 161 Category parent = (Category) InodeFactory.getParentsOfClass(cat, Category.class).get(0); 162 return getCategoryTree(parent, l); 163 } catch (Exception e) { 164 Category fakeCat = new Category(); 165 fakeCat.setCategoryName("Top Level"); 166 l.add(0, fakeCat); 167 return l; 168 } 169 } 170 171 public static java.util.List getUserCategories() { 172 Entity entity = EntityFactory.getEntity("UserProxy"); 174 List cats = EntityFactory.getEntityCategories(entity); 175 return cats; 176 } 177 178 public static void AddUserCategoriesToRequest(HttpServletRequest request) { 179 180 182 Entity entity = EntityFactory.getEntity("UserProxy"); 183 List cats = EntityFactory.getEntityCategories(entity); 184 List <Category> newCats = new ArrayList <Category>(); 185 Iterator catsIter = cats.iterator(); 186 187 while (catsIter.hasNext()) { 188 Category category = (Category) catsIter.next(); 189 List children = InodeFactory.getChildrenClassByOrder(category, Category.class, "sort_order"); 190 if (children.size() > 0) { 191 request.setAttribute(String.valueOf(category.getInode()), children); 192 newCats.add(category); 193 } 194 } 195 request.setAttribute("categories", newCats); 196 } 197 198 public static void AddCategoriesToRequest(String entityName, HttpServletRequest request) { 199 200 Entity entity = EntityFactory.getEntity(entityName); 201 List cats = EntityFactory.getEntityCategories(entity); 202 List <Category> newCats = new ArrayList <Category>(); 203 Iterator catsIter = cats.iterator(); 204 205 while (catsIter.hasNext()) { 206 Category category = (Category) catsIter.next(); 207 List children = InodeFactory.getChildrenClassByOrder(category, Category.class, "sort_order"); 208 if (children.size() > 0) { 209 request.setAttribute(String.valueOf(category.getInode()), children); 210 newCats.add(category); 211 } 212 } 213 request.setAttribute(entityName, newCats); 214 } 215 } 216 | Popular Tags |