import java.io.File;
import java.io.IOException;
+import java.util.Date;
import be.nikiroo.fanfix.bundles.Config;
import be.nikiroo.fanfix.bundles.ConfigBundle;
import be.nikiroo.fanfix.bundles.StringIdBundle;
import be.nikiroo.fanfix.bundles.UiConfig;
import be.nikiroo.fanfix.bundles.UiConfigBundle;
+import be.nikiroo.fanfix.library.BasicLibrary;
+import be.nikiroo.fanfix.library.LocalLibrary;
import be.nikiroo.fanfix.output.BasicOutput.OutputType;
+import be.nikiroo.utils.IOUtils;
import be.nikiroo.utils.resources.Bundles;
/**
private static UiConfigBundle uiconfig;
private static StringIdBundle trans;
private static Cache cache;
- private static Library lib;
+ private static LocalLibrary lib;
private static boolean debug;
private static File coverDir;
private static File readerTmp;
+ private static File remoteDir;
+ private static String configDir;
static {
// Most of the rest is dependent upon this:
config = new ConfigBundle();
- String configDir = System.getProperty("CONFIG_DIR");
+ configDir = System.getProperty("CONFIG_DIR");
if (configDir == null) {
configDir = System.getenv("CONFIG_DIR");
}
+
if (configDir == null) {
configDir = new File(System.getProperty("user.home"), ".fanfix")
.getPath();
}
- if (configDir != null) {
- if (!new File(configDir).exists()) {
- new File(configDir).mkdirs();
- } else {
- Bundles.setDirectory(configDir);
- }
-
- try {
- config = new ConfigBundle();
- config.updateFile(configDir);
- } catch (IOException e) {
- syserr(e);
- }
- try {
- uiconfig = new UiConfigBundle();
- uiconfig.updateFile(configDir);
- } catch (IOException e) {
- syserr(e);
- }
- try {
- trans = new StringIdBundle(getLang());
- trans.updateFile(configDir);
- } catch (IOException e) {
- syserr(e);
- }
-
+ if (!new File(configDir).exists()) {
+ new File(configDir).mkdirs();
+ } else {
Bundles.setDirectory(configDir);
}
+ try {
+ config = new ConfigBundle();
+ config.updateFile(configDir);
+ } catch (IOException e) {
+ syserr(e);
+ }
+ try {
+ uiconfig = new UiConfigBundle();
+ uiconfig.updateFile(configDir);
+ } catch (IOException e) {
+ syserr(e);
+ }
+ try {
+ trans = new StringIdBundle(getLang());
+ trans.updateFile(configDir);
+ } catch (IOException e) {
+ syserr(e);
+ }
+
+ Bundles.setDirectory(configDir);
+
uiconfig = new UiConfigBundle();
trans = new StringIdBundle(getLang());
try {
- lib = new Library(getFile(Config.LIBRARY_DIR),
+ lib = new LocalLibrary(getFile(Config.LIBRARY_DIR),
OutputType.INFO_TEXT, OutputType.CBZ);
} catch (Exception e) {
syserr(new IOException("Cannot create library for directory: "
coverDir = getFile(Config.DEFAULT_COVERS_DIR);
File tmp = getFile(Config.CACHE_DIR);
readerTmp = getFile(UiConfig.CACHE_DIR_LOCAL_READER);
+ remoteDir = new File(getFile(Config.LIBRARY_DIR), "remote");
if (checkEnv("NOUTF")) {
trans.setUnicode(false);
}
/**
- * Get the (unique) {@link Library} for the program.
+ * Get the (unique) {@link LocalLibrary} for the program.
*
- * @return the {@link Library}
+ * @return the {@link LocalLibrary}
*/
- public static Library getLibrary() {
+ public static BasicLibrary getLibrary() {
return lib;
}
return readerTmp;
}
+ /**
+ * Return the directory where to store temporary files for the remote
+ * {@link LocalLibrary}.
+ *
+ * @param host
+ * the remote for this host
+ *
+ * @return the directory
+ */
+ public static File getRemoteDir(String host) {
+ remoteDir.mkdirs();
+
+ if (host != null) {
+ return new File(remoteDir, host);
+ }
+
+ return remoteDir;
+ }
+
+ /**
+ * Check if we need to check that a new version of Fanfix is available.
+ *
+ * @return TRUE if we need to
+ */
+ public static boolean isVersionCheckNeeded() {
+ try {
+ long wait = config.getInteger(Config.UPDATE_INTERVAL, 1) * 24 * 60
+ * 60 * 1000;
+ if (wait >= 0) {
+ String lastUpString = IOUtils.readSmallFile(new File(configDir,
+ "LAST_UPDATE"));
+ long delay = new Date().getTime()
+ - Long.parseLong(lastUpString);
+ if (delay > wait) {
+ return true;
+ }
+ } else {
+ return false;
+ }
+ } catch (Exception e) {
+ // No file or bad file:
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Notify that we checked for a new version of Fanfix.
+ */
+ public static void setVersionChecked() {
+ try {
+ IOUtils.writeSmallFile(new File(configDir), "LAST_UPDATE",
+ Long.toString(new Date().getTime()));
+ } catch (IOException e) {
+ syserr(e);
+ }
+ }
+
/**
* Report an error to the user
*
}
}
+ /**
+ * The program is in DEBUG mode (more verbose).
+ *
+ * @return TRUE if it is
+ */
+ public static boolean isDebug() {
+ return debug;
+ }
+
/**
* Return a path, but support the special $HOME variable.
*