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 }