1 package com.teamkonzept.webman.mainint.db; 2 3 import com.teamkonzept.lib.TKListIterator; 4 import com.teamkonzept.db.TKUnprepQuery; 5 import com.teamkonzept.db.TKDBManager; 6 import com.teamkonzept.db.QueryConstants; 7 import com.teamkonzept.lib.TKTemplate; 8 9 10 24 public class SearchListIterator implements TKListIterator 25 { 26 private java.util.Vector data; 27 private String listname; 28 private TKUnprepQuery query; 29 30 31 32 private static String konvSearchParameter(String search) 33 { 34 if (search == null) 35 return(null); 36 if (search.length() == 0) 37 return(search); 38 39 StringBuffer sb = new StringBuffer (search); 40 41 int i = sb.length() - 1; 42 while (i >= 0) 43 { 44 if ((sb.charAt(i) == '%') || (sb.charAt(i) == '_') || (sb.charAt(i) == '\\')) 45 sb.insert(i,'\\'); 46 47 i--; 48 } 49 return( '%' + sb.toString() + '%'); 50 } 51 52 56 57 private static java.util.Vector getSearchParameter(String search) 58 { 59 if (search == null) 60 return null; 61 62 java.util.Vector back = new java.util.Vector (); 63 String [] stringarray = new String [2]; 64 int pre = 0; 65 int i; 66 for (i = 0;i < search.length();i++) 67 { 68 if (search.startsWith(" OR ",i) || search.startsWith(" AND ",i)) 69 { 70 stringarray[0] = search.substring(pre, i ); 71 if (search.startsWith(" OR ",i)) 72 { 73 pre = i + 4; 74 stringarray[1] = "OR"; 75 } 76 else 77 { 78 pre = i + 5; 79 stringarray[1] = "AND"; 80 } 81 if (stringarray[0] != null) 82 { 83 if (stringarray[0].length() != 0) 84 back.add(new String [] {stringarray[0],stringarray[1]}); 85 } 86 } 87 } 88 if (pre != i) 89 back.add(new String [] {search.substring(pre, i), ""}); 90 91 if (back.isEmpty()) 92 return(null); 93 else 94 return(back); 95 } 96 97 public SearchListIterator(String data, String listname, TKUnprepQuery query) 98 { 99 this.data = getSearchParameter( data ); 100 this.listname = listname; 101 this.query = query; 102 } 103 104 public boolean apply(TKTemplate t, int count, String type) 105 { 106 if ( this.listname.equalsIgnoreCase( type ) ) 107 { 108 if (count >= data.size() ) 109 return(false); 110 111 String [] help = (String [])this.data.elementAt( count ); 112 String h = ""; 113 try 114 { 115 h = query.convert( "SEARCH_UNC", new String (help[0])); 116 t.set( "SEARCH_UNC", h); 117 h = query.convert( "SEARCH", new String (konvSearchParameter(help[0]))); 118 t.set( "SEARCH", h); 119 } 120 catch(Exception e) 121 { 122 h = ""; } 124 t.set("CONN",new String (help[1])); 125 return(true); 126 } 127 return(false); 128 } 129 } 130
| Popular Tags
|