import be.nikiroo.fanfix.bundles.Config;
import be.nikiroo.fanfix.bundles.ConfigBundle;
+import be.nikiroo.fanfix.bundles.StringId;
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.Cache;
import be.nikiroo.utils.IOUtils;
+import be.nikiroo.utils.TraceHandler;
import be.nikiroo.utils.resources.Bundles;
/**
private static ConfigBundle config;
private static UiConfigBundle uiconfig;
private static StringIdBundle trans;
- private static Cache cache;
+ private static DataLoader cache;
private static LocalLibrary lib;
- private static boolean debug;
private static File coverDir;
private static File readerTmp;
private static File remoteDir;
private static String configDir;
+ private static TraceHandler tracer;
static {
+ // Before we can configure it:
+ tracer = new TraceHandler(true, checkEnv("DEBUG"), false);
+
// Most of the rest is dependent upon this:
config = new ConfigBundle();
config = new ConfigBundle();
config.updateFile(configDir);
} catch (IOException e) {
- syserr(e);
+ tracer.error(e);
}
try {
uiconfig = new UiConfigBundle();
uiconfig.updateFile(configDir);
} catch (IOException e) {
- syserr(e);
+ tracer.error(e);
}
- try {
- trans = new StringIdBundle(getLang());
- trans.updateFile(configDir);
- } catch (IOException e) {
- syserr(e);
+
+ // No updateFile for this one! (we do not want the user to have custom
+ // translations that won't accept updates from newer versions)
+ trans = new StringIdBundle(getLang());
+
+ // Fix an old bug (we used to store custom translation files by
+ // default):
+ if (trans.getString(StringId.INPUT_DESC_CBZ) == null) {
+ // TODO: create the deleteFile method
+ // trans.deleteFile(configDir);
}
Bundles.setDirectory(configDir);
uiconfig = new UiConfigBundle();
trans = new StringIdBundle(getLang());
- try {
- lib = new LocalLibrary(getFile(Config.LIBRARY_DIR),
- OutputType.INFO_TEXT, OutputType.CBZ);
- } catch (Exception e) {
- syserr(new IOException("Cannot create library for directory: "
- + getFile(Config.LIBRARY_DIR), e));
- }
- debug = Instance.getConfig().getBoolean(Config.DEBUG_ERR, false);
+ boolean debug = Instance.getConfig()
+ .getBoolean(Config.DEBUG_ERR, false);
+ boolean trace = Instance.getConfig().getBoolean(Config.DEBUG_TRACE,
+ false);
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");
+ remoteDir = new File(configDir, "remote");
if (checkEnv("NOUTF")) {
trans.setUnicode(false);
debug = true;
}
+ tracer = new TraceHandler(true, debug, trace);
+
+ try {
+ lib = new LocalLibrary(getFile(Config.LIBRARY_DIR));
+ } catch (Exception e) {
+ tracer.error(new IOException(
+ "Cannot create library for directory: "
+ + getFile(Config.LIBRARY_DIR), e));
+ }
+
// Could have used: System.getProperty("java.io.tmpdir")
if (tmp == null) {
tmp = new File(configDir, "tmp");
//
if (coverDir != null && !coverDir.exists()) {
- syserr(new IOException(
+ tracer.error(new IOException(
"The 'default covers' directory does not exists: "
+ coverDir));
coverDir = null;
int hoursLarge = config
.getInteger(Config.CACHE_MAX_TIME_STABLE, -1);
- cache = new Cache(tmp, ua, hours, hoursLarge);
+ cache = new DataLoader(tmp, ua, hours, hoursLarge);
} catch (IOException e) {
- syserr(new IOException(
+ tracer.error(new IOException(
"Cannot create cache (will continue without cache)", e));
}
}
+ /**
+ * The traces handler for this {@link Cache}.
+ * <p>
+ * It is never NULL.
+ *
+ * @return the traces handler (never NULL)
+ */
+ public static TraceHandler getTraceHandler() {
+ return tracer;
+ }
+
+ /**
+ * The traces handler for this {@link Cache}.
+ *
+ * @param tracer
+ * the new traces handler or NULL
+ */
+ public static void setTraceHandler(TraceHandler tracer) {
+ if (tracer == null) {
+ tracer = new TraceHandler(false, false, false);
+ }
+
+ Instance.tracer = tracer;
+ }
+
/**
* Get the (unique) configuration service for the program.
*
}
/**
- * Get the (unique) {@link Cache} for the program.
+ * Get the (unique) {@link DataLoader} for the program.
*
- * @return the {@link Cache}
+ * @return the {@link DataLoader}
*/
- public static Cache getCache() {
+ public static DataLoader getCache() {
return cache;
}
* @return the {@link LocalLibrary}
*/
public static BasicLibrary getLibrary() {
+ if (lib == null) {
+ throw new NullPointerException("We don't have a library to return");
+ }
+
return lib;
}
IOUtils.writeSmallFile(new File(configDir), "LAST_UPDATE",
Long.toString(new Date().getTime()));
} catch (IOException e) {
- syserr(e);
- }
- }
-
- /**
- * Report an error to the user
- *
- * @param e
- * the {@link Exception} to report
- */
- public static void syserr(Exception e) {
- if (debug) {
- e.printStackTrace();
- } else {
- System.err.println(e.getMessage());
+ tracer.error(e);
}
}