| 1 package com.daffodilwoods.daffodildb.utils; 2 7 8 13 import java.util.*; 14 import java.io.*; 15 public class QueryUtility { 16 17 File mainFile; 18 19 public QueryUtility(File mainFile) { 20 this.mainFile = mainFile; 21 } 22 23 public void save(String query, Object [] parameters) throws Exception { 24 RandomAccessFile file = new RandomAccessFile(mainFile, "rw"); 25 file.seek(file.length()); 26 file.writeBytes("query:"+query+"\n"); 27 28 if(parameters != null) { 29 int length = parameters.length; 30 String writeableParameters = ""; 31 for(int i = 0 ; i < length ; i++) { 32 if( parameters[i] != null ) 33 writeableParameters += parameters[i].getClass()+"("+parameters[i]+"),"; 34 else 35 writeableParameters += " null ,"; 36 } 37 file.writeBytes("parameters:"+writeableParameters+"\n"); } 38 else 39 file.writeBytes("parameters:\n"); 40 } 41 42 public Object [] getQueriesAndParameters() throws Exception { 43 ArrayList queriesNparameters = new ArrayList(5); 44 RandomAccessFile file = new RandomAccessFile(mainFile, "r"); 45 Object [] both = new Object [2]; 46 String query = file.readLine(); 47 while(query != null) { 48 if(query.startsWith("query:")) { 49 both = new Object [2]; 50 both[0] = query.substring(6); 51 } 52 else { 53 Object parameters = null; 54 query = query.substring(11); 55 StringTokenizer tokenizer = new StringTokenizer(query, ","); 56 int tokenCount = tokenizer.countTokens(); 57 Object [] obj = new Object [tokenCount]; 58 int i = 0; 59 while(tokenizer.hasMoreElements()) { 60 String str = tokenizer.nextToken(); 61 obj[i++] = convertObject(str); 62 } 63 parameters = obj; 64 both[1] = parameters; 65 queriesNparameters.add(both); 66 } 67 query = file.readLine(); 68 } 69 return queriesNparameters.toArray(); 70 } 71 72 private Object convertObject(String str){ 73 int index = str.indexOf('('); 74 if( index == -1 ) return null; 75 76 String classname = str.substring(0,index).trim(); 77 String param = str.substring(index+1,str.length()-1).trim(); 78 79 if( classname.indexOf("java.lang.Integer") != -1) 80 return new Integer (param); 81 if( classname.indexOf("java.lang.Long") != -1) 82 return new Long (param); 83 if( classname.indexOf("java.lang.String") != -1) 84 return param; 85 if( classname.indexOf("java.lang.Double") != -1) 86 return new Double (param); 87 if( classname.indexOf("java.lang.Boolean") != -1) 88 return new Boolean (param); 89 throw new RuntimeException ("Make provision in convert object of QueryUtility for class ::" + classname); 90 } 91 92 111 } 112 | Popular Tags |