1 19 20 package za.org.coefficient.util.common; 21 22 import org.apache.commons.lang.StringUtils; 23 24 import net.sf.hibernate.HibernateException; 25 import net.sf.hibernate.Query; 26 import net.sf.hibernate.Session; 27 import net.sf.hibernate.util.HibernateUtil; 28 29 import za.org.coefficient.util.ejb.*; 30 31 import java.util.ArrayList ; 32 33 46 public class Search { 47 49 public int getPage(String query, int pageSize, int startElement, 50 Object [] vals, ArrayList page) { 51 52 int retVal = 0; 53 Session sess = null; 54 page.clear(); 55 56 try { 57 sess = HibernateUtil.getUniqueSession(); 58 net.sf.hibernate.Query quer = sess.createQuery(query); 59 60 for (int j = 0; j < vals.length; j++) { 61 quer.setParameter(j, vals[j]); 62 } 63 quer.setMaxResults(pageSize); 64 quer.setFirstResult(startElement); 65 page.addAll(quer.list()); 66 67 int idx = query.indexOf("order by"); 69 String temp = null; 70 if (idx != -1) { 71 temp = query.substring(0, query.indexOf("order by")); 72 } else { 73 temp = query; 74 } 75 76 String name = "*"; 79 String [] qryWords = StringUtils.split(query); 80 int word = 0; 81 if(!qryWords[0].trim().equalsIgnoreCase("from")) { 82 if(qryWords[word].trim().equalsIgnoreCase("select")) { 83 word++; 84 } 85 if(qryWords[word].trim().equalsIgnoreCase("distinct")) { 86 word++; 87 } 88 name = "distinct " + qryWords[word]; 89 } 90 91 temp = temp.replaceFirst("[Ff][Rr][Oo][Mm]", "from"); 92 int fromIdx = temp.indexOf("from"); 93 int commaIdx = temp.indexOf(","); 94 int replaceIdx = 0; 95 if ((fromIdx > commaIdx) && (commaIdx != -1)) { 96 replaceIdx = commaIdx; 97 } else { 98 replaceIdx = fromIdx; 99 } 100 String countQuery = 101 "select count(" + name + ") " 102 + temp.substring(replaceIdx, temp.length()); 103 104 net.sf.hibernate.Query quer2 = sess.createQuery(countQuery); 105 System.arraycopy(vals, 0, vals, 0, vals.length); 106 for (int j = 0; j < vals.length; j++) { 107 quer2.setParameter(j, vals[j]); 108 } 109 retVal = ((Integer ) quer2.iterate() 110 .next()).intValue(); 111 } catch (HibernateException he) { 112 he.printStackTrace(); 113 } finally { 114 try { 115 HibernateUtil.closeSession(sess); 116 } catch (HibernateException hee) { 117 hee.printStackTrace(); 118 } 119 } 120 121 return retVal; 122 } 123 } 124 | Popular Tags |