View Javadoc

1   /***
2    *     Ambient - A music player for the Android platform
3    Copyright (C) 2007 Martin Vysny
4    
5    This program is free software: you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation, either version 3 of the License, or
8    (at your option) any later version.
9    
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14  
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17   */
18  
19  package sk.baka.ambient.library;
20  
21  import java.util.concurrent.Callable;
22  
23  import sk.baka.ambient.collection.TrackOriginEnum;
24  
25  /***
26   * Scans for files in a background thread. When
27   * {@link Thread#isInterrupted() interrupted}, it should end ASAP. The
28   * {@link Runnable#run()} may throw {@link RuntimeException}.
29   * 
30   * @author Martin Vysny
31   */
32  public interface IFileScanner extends Callable<Void> {
33  	/***
34  	 * Initializes the scanner.
35  	 * 
36  	 * @param library
37  	 *            the library instance.
38  	 * @param genreCache
39  	 *            the genre cache.
40  	 */
41  	void init(final Library library, final GenreCache genreCache);
42  
43  	/***
44  	 * Returns the storage type.
45  	 * 
46  	 * @return storage type, must not be <code>null</code>.
47  	 */
48  	TrackOriginEnum getOrigin();
49  
50  	/***
51  	 * Invoked when the scan finishes. Checks if the scanner already provided
52  	 * the user with some kind of notification.
53  	 * 
54  	 * @return <code>true</code> if user was notified about the scan being
55  	 *         finished, <code>false</code> otherwise.
56  	 */
57  	boolean isUserNotified();
58  }