CoolReader Engine class. Only one instance is allowed.
| 30 | * Only one instance is allowed. |
| 31 | */ |
| 32 | public class Engine { |
| 33 | |
| 34 | public static final Logger log = L.create("en"); |
| 35 | |
| 36 | private final CoolReader mActivity; |
| 37 | private final BackgroundThread mBackgroundThread; |
| 38 | private File[] mountedRootsList; |
| 39 | private Map<String, String> mountedRootsMap; |
| 40 | |
| 41 | static final private String LIBRARY_NAME = "cr3engine-45-15"; |
| 42 | |
| 43 | // private final View mMainView; |
| 44 | // private final ExecutorService mExecutor = |
| 45 | // Executors.newFixedThreadPool(1); |
| 46 | |
| 47 | /** |
| 48 | * Get storage root directories. |
| 49 | * |
| 50 | * @return array of r/w storage roots |
| 51 | */ |
| 52 | public File[] getStorageDirectories(boolean writableOnly) { |
| 53 | Collection<File> res = new HashSet<File>(2); |
| 54 | for (File dir : mountedRootsList) { |
| 55 | if (dir.isDirectory() && (!writableOnly || dir.canWrite())) |
| 56 | res.add(dir); |
| 57 | } |
| 58 | return res.toArray(new File[res.size()]); |
| 59 | } |
| 60 | |
| 61 | public Map<String, String> getMountedRootsMap() { |
| 62 | return mountedRootsMap; |
| 63 | } |
| 64 | |
| 65 | /** |
| 66 | * Get or create writable subdirectory for specified base directory |
| 67 | * |
| 68 | * @param dir |
| 69 | * is base directory |
| 70 | * @param subdir |
| 71 | * is subdirectory name, null to use base directory |
| 72 | * @param createIfNotExists |
| 73 | * is true to force directory creation |
| 74 | * @return writable directory, null if not exist or not writable |
| 75 | */ |
| 76 | public static File getSubdir(File dir, String subdir, |
| 77 | boolean createIfNotExists, boolean writableOnly) { |
| 78 | if (dir == null) |
| 79 | return null; |
| 80 | File dataDir = dir; |
| 81 | if (subdir != null) { |
| 82 | dataDir = new File(dataDir, subdir); |
| 83 | if (!dataDir.isDirectory() && createIfNotExists) |
| 84 | dataDir.mkdir(); |
| 85 | } |
| 86 | if (dataDir.isDirectory() && (!writableOnly || dataDir.canWrite())) |
| 87 | return dataDir; |
| 88 | return null; |
| 89 | } |