1 /** 2 * Copyright 2005 Steve Molloy 3 * 4 * This file is part of OV4J. 5 * 6 * OV4J is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as 7 * published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. 8 * 9 * OV4J is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty 10 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 11 * 12 * You should have received a copy of the GNU General Public License along with OV4J; if not, write to the Free Software 13 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 14 * 15 */ 16 package org.ov4j.cache; 17 18 import java.io.IOException; 19 import java.util.TreeMap; 20 import java.util.logging.Level; 21 import java.util.logging.Logger; 22 23 import org.ov4j.Controler; 24 import org.ov4j.data.ClassComparable; 25 import org.ov4j.data.Version; 26 27 /** 28 * @author smolloy 29 * 30 */ 31 public class ResultFetcher extends Thread { 32 /** 33 * Logger for this class 34 */ 35 private static final Logger logger = 36 Logger.getLogger(ResultFetcher.class 37 .getName()); 38 39 /** Map in which to add loaded item. */ 40 private final TreeMap<CachedResultId, Version<ClassComparable>> map; 41 42 /** Controler to use for loading. */ 43 private final Controler<ClassComparable, CachedResultId> ctrl; 44 45 /** ID to load . */ 46 private final CachedResultId id; 47 48 /** 49 * @param list 50 * @param cont 51 * @param id 52 * @param allVersions 53 */ 54 public ResultFetcher(final TreeMap<CachedResultId, Version<ClassComparable>> map, 55 final Controler<ClassComparable, CachedResultId> ctrl, final CachedResultId id) { 56 this.map = map; 57 this.ctrl = ctrl; 58 this.id = id; 59 } 60 61 /** 62 * @see java.lang.Thread#run() 63 */ 64 @Override 65 public void run() { 66 if (ResultFetcher.logger.isLoggable(Level.FINER)) { 67 ResultFetcher.logger.entering("ResultFetcher", "run()", "start"); 68 } 69 70 Version<ClassComparable> res = null; 71 try { 72 res = ctrl.latest(id); 73 } catch (final IOException e) { 74 if (ResultFetcher.logger.isLoggable(Level.FINE)) { 75 ResultFetcher.logger.logp(Level.FINE, "ResultFetcher", "run()", "exception ignored", e); 76 } 77 } 78 map.put(id, res); 79 80 if (ResultFetcher.logger.isLoggable(Level.FINER)) { 81 ResultFetcher.logger.exiting("ResultFetcher", "run()", "end"); 82 } 83 } 84 }