View Javadoc

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;
17  
18  import java.io.IOException;
19  import java.io.Serializable;
20  import java.util.List;
21  import java.util.logging.Level;
22  import java.util.logging.Logger;
23  
24  import org.ov4j.data.Item;
25  
26  /**
27   * @author smolloy
28   * 
29   */
30  public class LoadThread<T extends Comparable<? super T> & Cloneable & Serializable, C extends Comparable<? super C>>
31  	extends Thread {
32  	/**
33  	 * Logger for this class
34  	 */
35  	private static final Logger		logger	= Logger.getLogger(LoadThread.class.getName());
36  
37  	/** List in which to add loaded item. */
38  	private final List<Item<T, C>>	list;
39  
40  	/** Container to use for loading. */
41  	private final IContainer		cont;
42  
43  	/** ID to load . */
44  	private final C					id;
45  
46  	/** Whether or not to load all versions. */
47  	private final boolean			allVersions;
48  
49  	/**
50  	 * @param list
51  	 * @param cont
52  	 * @param id
53  	 * @param allVersions
54  	 */
55  	public LoadThread(final List<Item<T, C>> list, final IContainer cont, final C id, final boolean allVersions) {
56  		this.list = list;
57  		this.cont = cont;
58  		this.id = id;
59  		this.allVersions = allVersions;
60  	}
61  
62  	/**
63  	 * @see java.lang.Thread#run()
64  	 */
65  	@Override
66  	public void run() {
67  		if (LoadThread.logger.isLoggable(Level.FINER)) {
68  			LoadThread.logger.entering("LoadThread", "run()", "start");
69  		}
70  
71  		Item<T, C> it = null;
72  		try {
73  			it = cont.load(id, allVersions);
74  		} catch (final IOException e) {
75  			if (LoadThread.logger.isLoggable(Level.FINE)) {
76  				LoadThread.logger.logp(Level.FINE, "LoadThread", "run()", "exception ignored", e);
77  			}
78  		}
79  		if (it != null) {
80  			list.add(it);
81  		}
82  
83  		if (LoadThread.logger.isLoggable(Level.FINER)) {
84  			LoadThread.logger.exiting("LoadThread", "run()", "end");
85  		}
86  	}
87  }