1 package org.apache.jcs.servlet; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import javax.servlet.http.HttpServlet; 23 24 /*** 25 * Description of the Class 26 * 27 */ 28 public class ListTestCacheServlet 29 extends HttpServlet 30 { 31 32 private static final long serialVersionUID = 1L; 33 34 // /*** Description of the Field */ 35 // protected static CacheHub cacheMgr; 36 // /*** Description of the Field */ 37 // protected static ICache zipListCache; 38 // /*** Description of the Field */ 39 // protected static ICache zipToCityCache; 40 // // you can also access via the access classes 41 // // these provide some useful methods, They are necessary for groups. 42 // /*** Description of the Field */ 43 // protected static IGroupCacheAccess cityGroupCache; 44 // 45 // private static int numToShow = 1000; 46 // 47 // 48 // /*** Description of the Method */ 49 // public void init( ServletConfig config ) 50 // throws ServletException 51 // { 52 // cacheMgr = GroupCacheHub.getInstance(); 53 // // use deafult cattr 54 // zipListCache = cacheMgr.getCache( "zipListCache" ); 55 // 56 // // I want to modify the defualts so I will get the 57 // // cattr and modify it. Otherwise I could call 58 // // zipToCityCache = cacheMgr.getCache( "zipToCityCache" ); 59 // ICompositeCacheAttributes cattr = cacheMgr.getDefaultCacheAttributes(); 60 // cattr.setMaxObjects( 10000 ); 61 // zipToCityCache = cacheMgr.getCache( "zipToCityCache", cattr ); 62 // // get another copy of the cattr 63 // cattr = cacheMgr.getDefaultCacheAttributes(); 64 // cattr.setMaxObjects( 10000 ); 65 // try 66 // { 67 // cityGroupCache = GroupCacheAccess.getGroupAccess( "cityGroupCache", cattr 68 // ); 69 // } 70 // catch ( Exception e ) 71 // { 72 // log.error( e ); 73 // } 74 // } 75 // // end init 76 // 77 // /*** Description of the Method */ 78 // public void service( HttpServletRequest req, HttpServletResponse res ) 79 // throws ServletException, 80 // IOException 81 // { 82 // 83 // Hashtable params = new Hashtable(); 84 // res.setContentType( "text/html" ); 85 // PrintWriter out = res.getWriter(); 86 // 87 // try 88 // { 89 // 90 // out.println( "<html><body bgcolor=#FFFFFF>" ); 91 // out.println( "<a href=?task=zipList>List of Zip Codes</a><br>" ); 92 // 93 // out.println( "<br>" ); 94 // out.println( "<form method=get action=\"\">" ); 95 // out.println( "<input type=hidden name=task value=cityForZip>" ); 96 // out.println( "<input type=text name=zip value=>" ); 97 // out.println( "<input type=submit value='Find City'>" ); 98 // out.println( "</form>" ); 99 // out.println( "<br>" ); 100 // out.println( "<br>" ); 101 // 102 // String paramName; 103 // String paramValue; 104 // // GET PARAMETERS INTO HASHTABLE 105 // for ( Enumeration e = req.getParameterNames(); e.hasMoreElements(); ) 106 // { 107 // paramName = ( String ) e.nextElement(); 108 // paramValue = req.getParameter( paramName ); 109 // params.put( paramName, paramValue ); 110 // if ( log.isDebugEnabled() ) 111 // { 112 // log.debug( paramName + "=" + paramValue ); 113 // } 114 // } 115 // 116 // String task = ( String ) params.get( "task" ); 117 // if ( task == null ) 118 // { 119 // task = "zipList"; 120 // } 121 // 122 // if ( task.equals( "cityForZip" ) ) 123 // { 124 // getCity( params, out ); 125 // } 126 // else if ( task.equals( "zipList" ) ) 127 // { 128 // out.println( "Showing first " + numToShow + " <br>" ); 129 // getList( params, out ); 130 // } 131 // else if ( task.equals( "zipForCity" ) ) 132 // { 133 // getZipForCity( params, out ); 134 // } 135 // } 136 // //CATCH EXCEPTIONS 137 // catch ( Exception e ) 138 // { 139 // log.error( e ); 140 // } 141 // // end try{ 142 // finally 143 // { 144 // String isRedirect = ( String ) params.get( "isRedirect" ); 145 // if ( isRedirect == null ) 146 // { 147 // isRedirect = "N"; 148 // } 149 // if ( log.isDebugEnabled() ) 150 // { 151 // log.debug( "isRedirect = " + isRedirect ); 152 // } 153 // String url; 154 // if ( isRedirect.equals( "Y" ) ) 155 // { 156 // url = ( String ) params.get( "url" ); 157 // if ( log.isDebugEnabled() ) 158 // { 159 // log.debug( "url = " + url ); 160 // } 161 // res.sendRedirect( url ); 162 // // will not work if there's a previously sent header 163 // out.println( "<br>\n" ); 164 // out.println( " <script>" ); 165 // out.println( " location.href='" + url + "'; " ); 166 // out.println( " </script> " ); 167 // out.flush(); 168 // } 169 // else 170 // { 171 // url = ""; 172 // } 173 // out.println( "</body></html>" ); 174 // } 175 // 176 // } 177 // //end service() 178 // 179 // /*** Gets the city attribute of the ListTestCacheServlet object */ 180 // private void getCity( Hashtable params, PrintWriter out ) 181 // { 182 // 183 // try 184 // { 185 // String zip = ( String ) params.get( "zip" ); 186 // 187 // String city = ( String ) zipToCityCache.get( zip ); 188 // if ( city == null ) 189 // { 190 // out.println( "<br>The city is NOT in the cache.<br>" ); 191 // out.println( "<br>looking in file.<br>" ); 192 // city = findCity( zip ); 193 // if ( city == null ) 194 // { 195 // out.println( "<br>Couldn't find city.<br>" ); 196 // } 197 // else 198 // { 199 // out.println( "Zip code " + zip + " is in <b>" ); 200 // out.println( "<a href=\"?task=zipForCity&city=" + city + "\">" + city + 201 // "</a>" ); 202 // out.println( "</b> city. <br>" ); 203 // } 204 // } 205 // else 206 // { 207 // out.println( "Zip code " + zip + " is in <b>" ); 208 // out.println( "<a href=\"?task=zipForCity&city=" + city + "\">" + city + 209 // "</a>" ); 210 // out.println( "</b> city. <br>" ); 211 // } 212 // } 213 // catch ( Exception e ) 214 // { 215 // log.error( e ); 216 // } 217 // 218 // } 219 // // end getCity 220 // 221 // /*** Gets the list attribute of the ListTestCacheServlet object */ 222 // private void getList( Hashtable params, PrintWriter out ) 223 // { 224 // 225 // try 226 // { 227 // ArrayList zipList = ( ArrayList ) zipListCache.get( "zipList" ); 228 // 229 // // counter 230 // long counter = 0; 231 // 232 // if ( zipList == null ) 233 // { 234 // out.println( "<br>The list was not in the cache.<br>" ); 235 // 236 // zipList = new ArrayList(); 237 // 238 // // use some od the data from jisp examples 239 // 240 // String s_nameInput = "zipcodes.txt"; 241 // // open text file 242 // BufferedReader reader = null; 243 // 244 // try 245 // { 246 // reader = new BufferedReader( new FileReader( s_nameInput ) ); 247 // } 248 // catch ( FileNotFoundException not_found ) 249 // { 250 // System.err.println( "ERROR: file " + s_nameInput + " was not found" ); 251 // return; 252 // } 253 // 254 // // flag to break out of loops if an exception is thrown 255 // boolean broken = false; 256 // 257 // while ( reader.ready() ) 258 // { 259 // 260 // // read a line 261 // String line = reader.readLine(); 262 // 263 // if ( line.length() < 1 ) 264 // { 265 // break; 266 // } 267 // 268 // // count it 269 // ++counter; 270 // 271 // //if ((counter % 100) == 0) 272 // // System.out.println(" finished line #" + counter); 273 // 274 // int i; 275 // 276 // // extract ZIP 277 // String textZIP = ""; 278 // 279 // for ( i = 0; ( line.charAt( i ) != ',' ); ++i ) 280 // { 281 // textZIP += line.charAt( i ); 282 // } 283 // 284 // String zip = textZIP; 285 // 286 // // extract city name 287 // ++i; 288 // 289 // String city = line.substring( i ); 290 // 291 // zipToCityCache.put( zip, city ); 292 // 293 // // key, group, value 294 // // could create a group if we need to retrieve the list of elements 295 // cityGroupCache.putInGroup( city + ":" + zip, city, zip ); 296 // // or you could just use the : for partial removal if all you need 297 // // to do is remove, can't do partial lookup like this 298 // // if you wanted to store info instead of the zip this would 299 // // be usefule 300 // //cityGroupCache.put( city + ":" + zip, zip); 301 // 302 // zipList.add( zip ); 303 // if ( counter < numToShow ) 304 // { 305 // out.println( "<a href=?task=cityForZip&zip=" + zip + ">" + zip + "<br>" 306 // ); 307 // } 308 // } 309 // out.println( "<br>Finished creating list of " + counter + ".<br>" ); 310 // 311 // zipListCache.put( "zipList", zipList ); 312 // 313 // } 314 // else 315 // { 316 // Iterator it = zipList.iterator(); 317 // while ( it.hasNext() && counter < numToShow ) 318 // { 319 // counter++; 320 // String zip = ( String ) it.next(); 321 // out.println( "<a href=?task=cityForZip&zip=" + zip + ">" + zip + 322 // "</a><br>" ); 323 // } 324 // 325 // } 326 // 327 // } 328 // catch ( Exception e ) 329 // { 330 // log.error( e ); 331 // } 332 // 333 // } 334 // // end zipList 335 // 336 // /*** Description of the Method */ 337 // private String findCity( String zip2Find ) 338 // { 339 // 340 // try 341 // { 342 // 343 // // use some od the data from jisp examples 344 // 345 // String s_nameInput = "zipcodes.txt"; 346 // // open text file 347 // BufferedReader reader = null; 348 // 349 // try 350 // { 351 // reader = new BufferedReader( new FileReader( s_nameInput ) ); 352 // } 353 // catch ( FileNotFoundException not_found ) 354 // { 355 // System.err.println( "ERROR: file " + s_nameInput + " was not found" ); 356 // return null; 357 // } 358 // 359 // // flag to break out of loops if an exception is thrown 360 // boolean broken = false; 361 // 362 // // counter 363 // long counter = 0; 364 // while ( reader.ready() ) 365 // { 366 // 367 // // read a line 368 // String line = reader.readLine(); 369 // 370 // if ( line.length() < 1 ) 371 // { 372 // break; 373 // } 374 // 375 // // count it 376 // ++counter; 377 // 378 // //if ((counter % 100) == 0) 379 // // System.out.println(" finished line #" + counter); 380 // 381 // int i; 382 // 383 // // extract ZIP 384 // String textZIP = ""; 385 // 386 // for ( i = 0; ( line.charAt( i ) != ',' ); ++i ) 387 // { 388 // textZIP += line.charAt( i ); 389 // } 390 // 391 // String zip = textZIP; 392 // 393 // // extract city name 394 // ++i; 395 // 396 // String city = line.substring( i ); 397 // 398 // if ( zip2Find.equals( zip ) ) 399 // { 400 // zipToCityCache.put( zip, city ); 401 // return city; 402 // } 403 // } 404 // 405 // } 406 // catch ( Exception e ) 407 // { 408 // log.error( e ); 409 // } 410 // 411 // return null; 412 // } 413 // // end findCity 414 // 415 // /*** 416 // * Gets the zipForCity attribute of the ListTestCacheServlet object 417 // */ 418 // private void getZipForCity( Hashtable params, PrintWriter out ) 419 // { 420 // 421 // try 422 // { 423 // String city = ( String ) params.get( "city" ); 424 // 425 // // providing this feature adds a significant burden to the cache, 426 // // but it makes it able to completely implement the seesion api 427 // Enumeration en = this.cityGroupCache.getAttributeNames( city ); 428 // if ( en == null ) 429 // { 430 // out.println( "<br>There is no info for this city. <br>" ); 431 // } 432 // else 433 // { 434 // while ( en.hasMoreElements() ) 435 // { 436 // out.println( "Zip code " + ( String ) en.nextElement() + " is in <b>" ); 437 // out.println( "<a href=\"?task=zipForCity&city=" + city + "\">" + city + 438 // "</a>" ); 439 // out.println( "</b> city. <br>" ); 440 // } 441 // } 442 // 443 // } 444 // catch ( Exception e ) 445 // { 446 // log.error( e ); 447 // } 448 // 449 // } 450 // // end getZipForCity 451 452 } 453 // end class