1 package com.dotmarketing.factories; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 7 import net.sf.hibernate.HibernateException; 8 9 import com.dotmarketing.beans.Inode; 10 import com.dotmarketing.beans.Tree; 11 import com.dotmarketing.db.DotHibernate; 12 import com.dotmarketing.util.Logger; 13 14 18 public class TreeFactory { 19 20 public static Tree getTree(String x) { 21 try { 22 return (Tree) new DotHibernate(Tree.class).load(Long.parseLong(x)); 23 } catch (Exception e) { 24 return (Tree) new DotHibernate(Tree.class).load(x); 25 } 26 } 27 28 public static Tree getTree(Inode parent, Inode child) { 29 String relationType = "child"; 30 return getTree(parent, child, relationType); 31 } 32 33 public static Tree getTree(long parent, long child) { 34 String relationType = "child"; 35 return getTree(parent, child, relationType); 36 } 37 38 public static Tree getTree(long parent, long child, String relationType) { 39 try { 40 DotHibernate dh = new DotHibernate(Tree.class); 41 dh 42 .setQuery("from tree in class com.dotmarketing.beans.Tree where parent = ? and child = ? and relation_type = ?"); 43 dh.setParam(parent); 44 dh.setParam(child); 45 dh.setParam(relationType); 46 47 return (Tree) dh.load(); 48 } catch (Exception e) { 49 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 50 } 51 52 return new Tree(); 53 } 54 55 public static Tree getTree(Inode parent, Inode child, String relationType) { 56 return getTree(parent.getInode(), child.getInode(), relationType); 57 } 58 59 public static Tree getTreeByChildAndRelationType(Inode child, String relationType) { 60 try { 61 DotHibernate dh = new DotHibernate(Tree.class); 62 dh.setQuery("from tree in class com.dotmarketing.beans.Tree where child = ? and relation_type = ?"); 63 dh.setParam(child.getInode()); 64 dh.setParam(relationType); 65 66 return (Tree) dh.load(); 67 } catch (Exception e) { 68 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 69 } 70 71 return new Tree(); 72 } 73 74 public static Tree getTreeByParentAndRelationType(Inode parent, String relationType) { 75 try { 76 DotHibernate dh = new DotHibernate(Tree.class); 77 dh.setQuery("from tree in class com.dotmarketing.beans.Tree where parent = ? and relation_type = ?"); 78 dh.setParam(parent.getInode()); 79 dh.setParam(relationType); 80 81 return (Tree) dh.load(); 82 } catch (Exception e) { 83 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 84 } 85 86 return new Tree(); 87 } 88 89 @SuppressWarnings ("unchecked") 90 public static List <Tree> getTreesByParentAndRelationType(Inode parent, String relationType) { 91 try { 92 DotHibernate dh = new DotHibernate(Tree.class); 93 dh 94 .setQuery("from tree in class com.dotmarketing.beans.Tree where parent = ? and relation_type = ? order by tree_order asc"); 95 dh.setParam(parent.getInode()); 96 dh.setParam(relationType); 97 98 return dh.list(); 99 } catch (Exception e) { 100 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 101 } 102 103 return new ArrayList <Tree>(); 104 } 105 106 @SuppressWarnings ("unchecked") 107 public static List <Tree> getTreesByChildAndRelationType(Inode child, String relationType) { 108 try { 109 DotHibernate dh = new DotHibernate(Tree.class); 110 dh 111 .setQuery("from tree in class com.dotmarketing.beans.Tree where child = ? and relation_type = ? order by tree_order asc"); 112 dh.setParam(child.getInode()); 113 dh.setParam(relationType); 114 115 return dh.list(); 116 } catch (Exception e) { 117 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 118 } 119 120 return new ArrayList <Tree>(); 121 } 122 123 @SuppressWarnings ("unchecked") 124 public static List <Tree> getTreesByRelationType(String relationType) { 125 try { 126 DotHibernate dh = new DotHibernate(Tree.class); 127 dh.setQuery("from tree in class com.dotmarketing.beans.Tree where relation_type = ?"); 128 dh.setParam(relationType); 129 130 return dh.list(); 131 } catch (Exception e) { 132 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 133 } 134 135 return new ArrayList <Tree>(); 136 } 137 138 @SuppressWarnings ("unchecked") 139 public static List <Tree> getTreesByParent(Inode inode) { 140 try { 141 DotHibernate dh = new DotHibernate(Tree.class); 142 dh.setQuery("from tree in class com.dotmarketing.beans.Tree where parent = ?"); 143 dh.setParam(inode.getInode()); 144 145 return dh.list(); 146 } catch (Exception e) { 147 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 148 } 149 150 return new ArrayList <Tree>(); 151 } 152 153 public static List getTreesByChild(Inode inode) { 154 try { 155 DotHibernate dh = new DotHibernate(Tree.class); 156 dh.setQuery("from tree in class com.dotmarketing.beans.Tree where child = ?"); 157 dh.setParam(inode.getInode()); 158 159 return dh.list(); 160 } catch (Exception e) { 161 Logger.warn(TreeFactory.class, "getTree failed:" + e, e); 162 } 163 164 return new ArrayList (); 165 } 166 167 public static void swapTrees(Inode i1, Inode i2) throws HibernateException { 168 169 List <Tree> newTrees = new ArrayList <Tree>(); 170 171 Iterator it = getTreesByParent(i1).iterator(); 173 while (it.hasNext()) { 174 Tree tree = (Tree) it.next(); 175 newTrees.add(new Tree(i2.getInode(), tree.getChild(), tree.getRelationType(), tree.getTreeOrder())); 176 deleteTree(tree); 177 } 178 179 it = getTreesByChild(i1).iterator(); 180 while (it.hasNext()) { 181 Tree tree = (Tree) it.next(); 182 newTrees.add(new Tree(tree.getParent(), i2.getInode(), tree.getRelationType(), tree.getTreeOrder())); 183 deleteTree(tree); 184 } 185 186 it = getTreesByParent(i2).iterator(); 187 while (it.hasNext()) { 188 Tree tree = (Tree) it.next(); 189 newTrees.add(new Tree(i1.getInode(), tree.getChild(), tree.getRelationType(), tree.getTreeOrder())); 190 deleteTree(tree); 191 } 192 193 it = getTreesByChild(i2).iterator(); 194 while (it.hasNext()) { 195 Tree tree = (Tree) it.next(); 196 newTrees.add(new Tree(tree.getParent(), i1.getInode(), tree.getRelationType(), tree.getTreeOrder())); 197 deleteTree(tree); 198 } 199 200 it = newTrees.iterator(); 202 while (it.hasNext()) { 203 Tree tree = (Tree) it.next(); 204 saveTree(tree); 205 } 206 DotHibernate.flush(); 207 DotHibernate.getSession().refresh(i1); 208 DotHibernate.getSession().refresh(i2); 209 210 } 211 212 public static void deleteTree(Tree tree) { 213 DotHibernate.delete(tree); 214 } 215 216 public static void deleteTreesByParent(Inode parent) { 217 DotHibernate.delete("from tree in class com.dotmarketing.beans.Tree where tree.parent = " + parent.getInode()); 218 } 219 220 public static void deleteTreesByChild(Inode child) { 221 DotHibernate.delete("from tree in class com.dotmarketing.beans.Tree where tree.child = " + child.getInode()); 222 } 223 224 public static void deleteTreesByRelationType(String relationType) { 225 DotHibernate 226 .delete("from tree in class com.dotmarketing.beans.Tree where tree.relation_type = " + relationType); 227 } 228 229 public static void saveTree(Tree tree) { 230 DotHibernate.saveOrUpdate(tree); 231 } 232 233 } 234 | Popular Tags |