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.output.BasicOutput.OutputType;
import be.nikiroo.utils.resources.Bundles;
/**
*/
public class Instance {
private static ConfigBundle config;
+ private static UiConfigBundle uiconfig;
private static StringIdBundle trans;
private static Cache cache;
private static Library lib;
// Most of the rest is dependent upon this:
config = new ConfigBundle();
- trans = new StringIdBundle(getLang());
- lib = new Library(getFile(Config.LIBRARY_DIR));
- debug = Instance.getConfig().getBoolean(Config.DEBUG_ERR, false);
- coverDir = getFile(Config.DEFAULT_COVERS_DIR);
- File tmp = getFile(Config.CACHE_DIR);
- readerTmp = getFile(Config.CACHE_DIR_LOCAL_READER);
-
- if (checkEnv("NOUTF")) {
- trans.setUnicode(false);
- }
-
- if (checkEnv("DEBUG")) {
- debug = true;
- }
-
- if (tmp == null || readerTmp == null) {
- String tmpDir = System.getProperty("java.io.tmpdir");
- if (tmpDir != null) {
- if (tmp == null) {
- tmp = new File(tmpDir, "fanfic-tmp");
- }
- if (readerTmp == null) {
- readerTmp = new File(tmpDir, "fanfic-reader");
- }
- } else {
- syserr(new IOException(
- "The system does not have a default temporary directory"));
- }
- }
-
- if (coverDir != null && !coverDir.exists()) {
- syserr(new IOException(
- "The 'default covers' directory does not exists: "
- + coverDir));
- coverDir = null;
+ String configDir = System.getProperty("CONFIG_DIR");
+ if (configDir == null) {
+ configDir = System.getenv("CONFIG_DIR");
}
-
- String 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();
} 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);
Bundles.setDirectory(configDir);
}
+ uiconfig = new UiConfigBundle();
+ trans = new StringIdBundle(getLang());
+ try {
+ lib = new Library(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);
+ coverDir = getFile(Config.DEFAULT_COVERS_DIR);
+ File tmp = getFile(Config.CACHE_DIR);
+ readerTmp = getFile(UiConfig.CACHE_DIR_LOCAL_READER);
+
+ if (checkEnv("NOUTF")) {
+ trans.setUnicode(false);
+ }
+
+ if (checkEnv("DEBUG")) {
+ debug = true;
+ }
+
+ // Could have used: System.getProperty("java.io.tmpdir")
+ if (tmp == null) {
+ tmp = new File(configDir, "tmp");
+ }
+ if (readerTmp == null) {
+ readerTmp = new File(configDir, "tmp-reader");
+ }
+ //
+
+ if (coverDir != null && !coverDir.exists()) {
+ syserr(new IOException(
+ "The 'default covers' directory does not exists: "
+ + coverDir));
+ coverDir = null;
+ }
+
try {
String ua = config.getString(Config.USER_AGENT);
int hours = config.getInteger(Config.CACHE_MAX_TIME_CHANGING, -1);
return config;
}
+ /**
+ * Get the (unique) UI configuration service for the program.
+ *
+ * @return the configuration service
+ */
+ public static UiConfigBundle getUiConfig() {
+ return uiconfig;
+ }
+
/**
* Get the (unique) {@link Cache} for the program.
*
/**
* Get the (unique) {link StringIdBundle} for the program.
- *
+ *
* @return the {link StringIdBundle}
*/
public static StringIdBundle getTrans() {
* @return the path
*/
private static File getFile(Config id) {
+ return getFile(config.getString(id));
+ }
+
+ /**
+ * Return a path, but support the special $HOME variable.
+ *
+ * @return the path
+ */
+ private static File getFile(UiConfig id) {
+ return getFile(uiconfig.getString(id));
+ }
+
+ /**
+ * Return a path, but support the special $HOME variable.
+ *
+ * @return the path
+ */
+ private static File getFile(String path) {
File file = null;
- String path = config.getString(id);
if (path != null && !path.isEmpty()) {
path = path.replace('/', File.separatorChar);
if (path.contains("$HOME")) {