throws IOException {
String format;
if (cover) {
- format = Instance.getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER)
- .toLowerCase();
+ format = Instance.getInstance().getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
} else {
- format = Instance.getConfig()
- .getString(Config.FILE_FORMAT_IMAGE_FORMAT_CONTENT).toLowerCase();
+ format = Instance.getInstance().getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_CONTENT)
+ .toLowerCase();
}
saveAsImage(img, new File(target.toString() + "." + format), format);
}
* @author niki
*/
public class Instance {
- private static ConfigBundle config;
- private static UiConfigBundle uiconfig;
- private static StringIdBundle trans;
- private static DataLoader cache;
- private static StringIdGuiBundle transGui;
- private static BasicLibrary lib;
- private static File coverDir;
- private static File readerTmp;
- private static File remoteDir;
- private static String configDir;
- private static TraceHandler tracer;
- private static TempFiles tempFiles;
-
- private static boolean init;
+ static private Instance instance;
+ static private Object instancelock = new Object();
+
+ private ConfigBundle config;
+ private UiConfigBundle uiconfig;
+ private StringIdBundle trans;
+ private DataLoader cache;
+ private StringIdGuiBundle transGui;
+ private BasicLibrary lib;
+ private File coverDir;
+ private File readerTmp;
+ private File remoteDir;
+ private String configDir;
+ private TraceHandler tracer;
+ private TempFiles tempFiles;
/**
* Initialise the instance -- if already initialised, nothing will happen.
* <p>
- * Before calling this method, you may call
- * {@link Bundles#setDirectory(String)} if wanted.
+ * Before calling this method, you may call {@link Bundles#setDirectory(String)}
+ * if wanted.
*/
static public void init() {
init(false);
}
/**
- * Initialise the instance -- if already initialised, nothing will happen
- * unless you pass TRUE to <tt>force</tt>.
+ * Initialise the instance -- if already initialised, nothing will happen unless
+ * you pass TRUE to <tt>force</tt>.
* <p>
- * Before calling this method, you may call
- * {@link Bundles#setDirectory(String)} if wanted.
+ * Before calling this method, you may call {@link Bundles#setDirectory(String)}
+ * if wanted.
* <p>
- * Note: forcing the initialisation can be dangerous, so make sure to only
- * make it under controlled circumstances -- for instance, at the start of
- * the program, you could call {@link Instance#init()}, change some settings
- * because you want to force those settings (it will also forbid users to
- * change them!) and then call {@link Instance#init(boolean)} with
- * <tt>force</tt> set to TRUE.
+ * Note: forcing the initialisation can be dangerous, so make sure to only make
+ * it under controlled circumstances -- for instance, at the start of the
+ * program, you could call {@link Instance#init()}, change some settings because
+ * you want to force those settings (it will also forbid users to change them!)
+ * and then call {@link Instance#init(boolean)} with <tt>force</tt> set to TRUE.
*
- * @param force
- * force the initialisation even if already initialised
+ * @param force force the initialisation even if already initialised
*/
static public void init(boolean force) {
- if (init && !force) {
- return;
+ synchronized (instancelock) {
+ if (instance == null || force) {
+ instance = new Instance();
+ }
}
- init = true;
+ }
+
+ /**
+ * Force-initialise the {@link Instance} to a known value.
+ * <p>
+ * Usually for DEBUG/Test purposes.
+ *
+ * @param instance the actual Instance to use
+ */
+ static public void init(Instance instance) {
+ Instance.instance = instance;
+ }
+
+ /**
+ * The (mostly unique) instance of this {@link Instance}.
+ *
+ * @return the (mostly unique) instance
+ */
+ public static Instance getInstance() {
+ return instance;
+ }
+ /**
+ * Actually initialise the instance.
+ * <p>
+ * Before calling this method, you may call {@link Bundles#setDirectory(String)}
+ * if wanted.
+ */
+ protected Instance() {
// Before we can configure it:
Boolean debug = checkEnv("DEBUG");
boolean trace = debug != null && debug;
createConfigs(configDir, false);
// Proxy support
- Proxy.use(Instance.getConfig().getString(Config.NETWORK_PROXY));
+ Proxy.use(config.getString(Config.NETWORK_PROXY));
// update tracer:
if (debug == null) {
- debug = Instance.getConfig().getBoolean(Config.DEBUG_ERR, false);
- trace = Instance.getConfig().getBoolean(Config.DEBUG_TRACE, false);
+ debug = config.getBoolean(Config.DEBUG_ERR, false);
+ trace = config.getBoolean(Config.DEBUG_TRACE, false);
}
tracer = new TraceHandler(true, debug, trace);
int hoursLarge = config.getInteger(Config.CACHE_MAX_TIME_STABLE, 0);
cache = new DataLoader(tmp, ua, hours, hoursLarge);
} catch (IOException e) {
- tracer.error(new IOException(
- "Cannot create cache (will continue without cache)", e));
+ tracer.error(new IOException("Cannot create cache (will continue without cache)", e));
cache = new DataLoader(ua);
}
cache.setTraceHandler(tracer);
// readerTmp / coverDir
- readerTmp = getFile(UiConfig.CACHE_DIR_LOCAL_READER, new File(
- configDir, "tmp-reader"));
+ readerTmp = getFile(UiConfig.CACHE_DIR_LOCAL_READER, new File(configDir, "tmp-reader"));
- coverDir = getFile(Config.DEFAULT_COVERS_DIR, new File(configDir,
- "covers"));
+ coverDir = getFile(Config.DEFAULT_COVERS_DIR, new File(configDir, "covers"));
coverDir.mkdirs();
try {
*
* @return the traces handler (never NULL)
*/
- public static TraceHandler getTraceHandler() {
+ public TraceHandler getTraceHandler() {
return tracer;
}
/**
* The traces handler for this {@link Cache}.
*
- * @param tracer
- * the new traces handler or NULL
+ * @param tracer the new traces handler or NULL
*/
- public static void setTraceHandler(TraceHandler tracer) {
+ public void setTraceHandler(TraceHandler tracer) {
if (tracer == null) {
tracer = new TraceHandler(false, false, false);
}
- Instance.tracer = tracer;
+ this.tracer = tracer;
cache.setTraceHandler(tracer);
}
*
* @return the configuration service
*/
- public static ConfigBundle getConfig() {
+ public ConfigBundle getConfig() {
return config;
}
*
* @return the configuration service
*/
- public static UiConfigBundle getUiConfig() {
+ public UiConfigBundle getUiConfig() {
return uiconfig;
}
/**
* Reset the configuration.
*
- * @param resetTrans
- * also reset the translation files
+ * @param resetTrans also reset the translation files
*/
- public static void resetConfig(boolean resetTrans) {
+ public void resetConfig(boolean resetTrans) {
String dir = Bundles.getDirectory();
Bundles.setDirectory(null);
try {
*
* @return the {@link DataLoader}
*/
- public static DataLoader getCache() {
+ public DataLoader getCache() {
return cache;
}
*
* @return the {link StringIdBundle}
*/
- public static StringIdBundle getTrans() {
+ public StringIdBundle getTrans() {
return trans;
}
*
* @return the {link StringIdGuiBundle}
*/
- public static StringIdGuiBundle getTransGui() {
+ public StringIdGuiBundle getTransGui() {
return transGui;
}
*
* @return the {@link LocalLibrary}
*/
- public static BasicLibrary getLibrary() {
+ public BasicLibrary getLibrary() {
if (lib == null) {
throw new NullPointerException("We don't have a library to return");
}
*
* @return the default covers directory
*/
- public static File getCoverDir() {
+ public File getCoverDir() {
return coverDir;
}
*
* @return the directory
*/
- public static File getReaderDir() {
+ public File getReaderDir() {
return readerTmp;
}
* Return the directory where to store temporary files for the remote
* {@link LocalLibrary}.
*
- * @param host
- * the remote for this host
+ * @param host the remote for this host
*
* @return the directory
*/
- public static File getRemoteDir(String host) {
+ public File getRemoteDir(String host) {
return getRemoteDir(remoteDir, host);
}
* Return the directory where to store temporary files for the remote
* {@link LocalLibrary}.
*
- * @param remoteDir
- * the base remote directory
- * @param host
- * the remote for this host
+ * @param remoteDir the base remote directory
+ * @param host the remote for this host
*
* @return the directory
*/
- private static File getRemoteDir(File remoteDir, String host) {
+ private File getRemoteDir(File remoteDir, String host) {
remoteDir.mkdirs();
if (host != null) {
*
* @return TRUE if we need to
*/
- public static boolean isVersionCheckNeeded() {
+ public boolean isVersionCheckNeeded() {
try {
- long wait = config.getInteger(Config.NETWORK_UPDATE_INTERVAL, 0)
- * 24 * 60 * 60 * 1000;
+ long wait = config.getInteger(Config.NETWORK_UPDATE_INTERVAL, 0) * 24 * 60 * 60 * 1000;
if (wait >= 0) {
- String lastUpString = IOUtils.readSmallFile(new File(configDir,
- "LAST_UPDATE"));
- long delay = new Date().getTime()
- - Long.parseLong(lastUpString);
+ String lastUpString = IOUtils.readSmallFile(new File(configDir, "LAST_UPDATE"));
+ long delay = new Date().getTime() - Long.parseLong(lastUpString);
if (delay > wait) {
return true;
}
/**
* Notify that we checked for a new version of Fanfix.
*/
- public static void setVersionChecked() {
+ public void setVersionChecked() {
try {
- IOUtils.writeSmallFile(new File(configDir), "LAST_UPDATE",
- Long.toString(new Date().getTime()));
+ IOUtils.writeSmallFile(new File(configDir), "LAST_UPDATE", Long.toString(new Date().getTime()));
} catch (IOException e) {
tracer.error(e);
}
*
* @return the facility
*/
- public static TempFiles getTempFiles() {
+ public TempFiles getTempFiles() {
return tempFiles;
}
/**
- * The configuration directory (will check, in order of preference, the
- * system properties, the environment and then defaults to
+ * The configuration directory (will check, in order of preference, the system
+ * properties, the environment and then defaults to
* {@link Instance#getHome()}/.fanfix).
*
* @return the config directory
*/
- private static String getConfigDir() {
+ private String getConfigDir() {
String configDir = System.getProperty("CONFIG_DIR");
if (configDir == null) {
* {@link Instance#uiconfig}, {@link Instance#trans} and
* {@link Instance#transGui}).
*
- * @param configDir
- * the directory where to find the configuration files
- * @param refresh
- * TRUE to reset the configuration files from the default
- * included ones
+ * @param configDir the directory where to find the configuration files
+ * @param refresh TRUE to reset the configuration files from the default
+ * included ones
*/
- private static void createConfigs(String configDir, boolean refresh) {
+ private void createConfigs(String configDir, boolean refresh) {
if (!refresh) {
Bundles.setDirectory(configDir);
}
/**
* Create the default library as specified by the config.
*
- * @param remoteDir
- * the base remote directory if needed
+ * @param remoteDir the base remote directory if needed
*
* @return the default {@link BasicLibrary}
*/
- private static BasicLibrary createDefaultLibrary(File remoteDir) {
+ private BasicLibrary createDefaultLibrary(File remoteDir) {
BasicLibrary lib = null;
- boolean useRemote = config.getBoolean(Config.REMOTE_LIBRARY_ENABLED,
- false);
+ boolean useRemote = config.getBoolean(Config.REMOTE_LIBRARY_ENABLED, false);
if (useRemote) {
String host = null;
tracer.trace("Selecting remote library " + host + ":" + port);
lib = new RemoteLibrary(key, host, port);
- lib = new CacheLibrary(getRemoteDir(remoteDir, host), lib);
+ lib = new CacheLibrary(getRemoteDir(remoteDir, host), lib, uiconfig);
} catch (Exception e) {
- tracer.error(new IOException(
- "Cannot create remote library for: " + host + ":"
- + port, e));
+ tracer.error(new IOException("Cannot create remote library for: " + host + ":" + port, e));
}
} else {
String libDir = System.getenv("BOOKS_DIR");
}
}
try {
- lib = new LocalLibrary(getFile(libDir));
+ lib = new LocalLibrary(getFile(libDir), config);
} catch (Exception e) {
- tracer.error(new IOException(
- "Cannot create library for directory: "
- + getFile(libDir), e));
+ tracer.error(new IOException("Cannot create library for directory: " + getFile(libDir), e));
}
}
/**
* Return a path, but support the special $HOME variable.
*
- * @return the path
+ * @param id the key for the path, which may contain "$HOME"
+ * @param def the default value if none
+ * @return the path, with expanded "$HOME" if needed
*/
- private static File getFile(Config id, File def) {
+ protected File getFile(Config id, File def) {
String path = config.getString(id, def.getPath());
return getFile(path);
}
/**
* Return a path, but support the special $HOME variable.
*
- * @return the path
+ * @param id the key for the path, which may contain "$HOME"
+ * @param def the default value if none
+ * @return the path, with expanded "$HOME" if needed
*/
- private static File getFile(UiConfig id, File def) {
+ protected File getFile(UiConfig id, File def) {
String path = uiconfig.getString(id, def.getPath());
return getFile(path);
}
/**
* Return a path, but support the special $HOME variable.
*
- * @return the path
+ * @param path the path, which may contain "$HOME"
+ * @return the path, with expanded "$HOME" if needed
*/
- private static File getFile(String path) {
+ protected File getFile(String path) {
File file = null;
if (path != null && !path.isEmpty()) {
path = path.replace('/', File.separatorChar);
* properties.
* <p>
* The environment variable is tested first. Then, the custom property
- * "fanfix.home" is tried, followed by the usual "user.home" then
- * "java.io.tmp" if nothing else is found.
+ * "fanfix.home" is tried, followed by the usual "user.home" then "java.io.tmp"
+ * if nothing else is found.
*
* @return the home
*/
- private static String getHome() {
+ protected String getHome() {
String home = System.getenv("FANFIX_DIR");
if (home != null && new File(home).isFile()) {
home = null;
*
* @return the language
*/
- private static String getLang() {
+ protected String getLang() {
String lang = config.getString(Config.LANG);
if (lang == null || lang.isEmpty()) {
- if (System.getenv("LANG") != null
- && !System.getenv("LANG").isEmpty()) {
+ if (System.getenv("LANG") != null && !System.getenv("LANG").isEmpty()) {
lang = System.getenv("LANG");
}
}
/**
* Check that the given environment variable is "enabled".
*
- * @param key
- * the variable to check
+ * @param key the variable to check
*
* @return TRUE if it is
*/
- private static Boolean checkEnv(String key) {
+ protected Boolean checkEnv(String key) {
String value = System.getenv(key);
if (value != null) {
value = value.trim().toLowerCase();
- if ("yes".equals(value) || "true".equals(value)
- || "on".equals(value) || "1".equals(value)
+ if ("yes".equals(value) || "true".equals(value) || "on".equals(value) || "1".equals(value)
|| "y".equals(value)) {
return true;
}
import javax.net.ssl.SSLException;
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.data.Chapter;
import be.nikiroo.fanfix.data.MetaData;
import be.nikiroo.fanfix.data.Story;
import be.nikiroo.fanfix.supported.SupportType;
import be.nikiroo.utils.Progress;
import be.nikiroo.utils.Version;
-import be.nikiroo.utils.resources.Bundles;
-import be.nikiroo.utils.resources.TransBundle;
import be.nikiroo.utils.serial.server.ServerObject;
/**
action = MainAction.valueOf(args[i].substring(2)
.toUpperCase().replace("-", "_"));
} catch (Exception e) {
- Instance.getTraceHandler().error(
- new IllegalArgumentException("Unknown action: "
- + args[i], e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IllegalArgumentException("Unknown action: " + args[i], e));
exitCode = 255;
}
}
searchOn = SupportType.valueOfAllOkUC(args[i]);
if (searchOn == null) {
- Instance.getTraceHandler().error(
- "Website not known: <" + args[i] + ">");
+ Instance.getInstance().getTraceHandler().error("Website not known: <" + args[i] + ">");
exitCode = 41;
break;
}
if (BasicSearchable.getSearchable(searchOn) == null) {
- Instance.getTraceHandler().error(
- "Website not supported: " + searchOn);
+ Instance.getInstance().getTraceHandler().error("Website not supported: " + searchOn);
exitCode = 42;
break;
}
searchOn = SupportType.valueOfAllOkUC(args[i]);
if (searchOn == null) {
- Instance.getTraceHandler().error(
- "Website not known: <" + args[i] + ">");
+ Instance.getInstance().getTraceHandler().error("Website not known: <" + args[i] + ">");
exitCode = 255;
}
if (BasicSearchable.getSearchable(searchOn) == null) {
- Instance.getTraceHandler().error(
- "Website not supported: " + searchOn);
+ Instance.getInstance().getTraceHandler().error("Website not supported: " + searchOn);
exitCode = 255;
}
} else if (page == null && item == null) {
int index = Integer.parseInt(args[i]);
tags.add(index);
} catch (NumberFormatException e) {
- Instance.getTraceHandler().error(
- "Invalid tag index: " + args[i]);
+ Instance.getInstance().getTraceHandler().error("Invalid tag index: " + args[i]);
exitCode = 255;
}
}
port = Integer.parseInt(args[i]);
BasicLibrary lib = new RemoteLibrary(key, host, port);
- lib = new CacheLibrary(Instance.getRemoteDir(host), lib);
+ lib = new CacheLibrary(Instance.getInstance().getRemoteDir(host), lib,
+ Instance.getInstance().getUiConfig());
BasicReader.setDefaultLibrary(lib);
break;
case LIST:
if (BasicReader.getReader() == null) {
- Instance.getTraceHandler()
- .error(new Exception(
- "No reader type has been configured"));
+ Instance.getInstance().getTraceHandler().error(new Exception("No reader type has been configured"));
exitCode = 10;
break;
}
break;
case SET_SOURCE:
try {
- Instance.getLibrary().changeSource(luid, sourceString, pg);
+ Instance.getInstance().getLibrary().changeSource(luid, sourceString, pg);
} catch (IOException e1) {
- Instance.getTraceHandler().error(e1);
+ Instance.getInstance().getTraceHandler().error(e1);
exitCode = 21;
}
break;
case SET_TITLE:
try {
- Instance.getLibrary().changeTitle(luid, titleString, pg);
+ Instance.getInstance().getLibrary().changeTitle(luid, titleString, pg);
} catch (IOException e1) {
- Instance.getTraceHandler().error(e1);
+ Instance.getInstance().getTraceHandler().error(e1);
exitCode = 22;
}
break;
case SET_AUTHOR:
try {
- Instance.getLibrary().changeAuthor(luid, authorString, pg);
+ Instance.getInstance().getLibrary().changeAuthor(luid, authorString, pg);
} catch (IOException e1) {
- Instance.getTraceHandler().error(e1);
+ Instance.getInstance().getTraceHandler().error(e1);
exitCode = 23;
}
break;
case READ:
if (BasicReader.getReader() == null) {
- Instance.getTraceHandler()
- .error(new Exception(
- "No reader type has been configured"));
+ Instance.getInstance().getTraceHandler().error(new Exception("No reader type has been configured"));
exitCode = 10;
break;
}
break;
case READ_URL:
if (BasicReader.getReader() == null) {
- Instance.getTraceHandler()
- .error(new Exception(
- "No reader type has been configured"));
+ Instance.getInstance().getTraceHandler().error(new Exception("No reader type has been configured"));
exitCode = 10;
break;
}
case SEARCH:
page = page == null ? 1 : page;
if (page < 0) {
- Instance.getTraceHandler().error("Incorrect page number");
+ Instance.getInstance().getTraceHandler().error("Incorrect page number");
exitCode = 255;
break;
}
item = item == null ? 0 : item;
if (item < 0) {
- Instance.getTraceHandler().error("Incorrect item number");
+ Instance.getInstance().getTraceHandler().error("Incorrect item number");
exitCode = 255;
break;
}
if (BasicReader.getReader() == null) {
- Instance.getTraceHandler()
- .error(new Exception(
- "No reader type has been configured"));
+ Instance.getInstance().getTraceHandler().error(new Exception("No reader type has been configured"));
exitCode = 10;
break;
}
exitCode = 255;
}
} catch (IOException e1) {
- Instance.getTraceHandler().error(e1);
+ Instance.getInstance().getTraceHandler().error(e1);
exitCode = 20;
}
page = page == null ? 1 : page;
if (page < 0) {
- Instance.getTraceHandler().error("Incorrect page number");
+ Instance.getInstance().getTraceHandler().error("Incorrect page number");
exitCode = 255;
break;
}
item = item == null ? 0 : item;
if (item < 0) {
- Instance.getTraceHandler().error("Incorrect item number");
+ Instance.getInstance().getTraceHandler().error("Incorrect item number");
exitCode = 255;
break;
}
if (BasicReader.getReader() == null) {
- Instance.getTraceHandler()
- .error(new Exception(
- "No reader type has been configured"));
+ Instance.getInstance().getTraceHandler().error(new Exception("No reader type has been configured"));
exitCode = 10;
break;
}
BasicReader.getReader().searchTag(searchOn, page, item,
true, tags.toArray(new Integer[] {}));
} catch (IOException e1) {
- Instance.getTraceHandler().error(e1);
+ Instance.getInstance().getTraceHandler().error(e1);
}
break;
break;
case START:
if (BasicReader.getReader() == null) {
- Instance.getTraceHandler()
- .error(new Exception(
- "No reader type has been configured"));
+ Instance.getInstance().getTraceHandler().error(new Exception("No reader type has been configured"));
exitCode = 10;
break;
}
try {
BasicReader.getReader().browse(null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
exitCode = 66;
}
break;
case SERVER:
- key = Instance.getConfig().getString(Config.SERVER_KEY);
- port = Instance.getConfig().getInteger(Config.SERVER_PORT);
+ key = Instance.getInstance().getConfig().getString(Config.SERVER_KEY);
+ port = Instance.getInstance().getConfig().getInteger(Config.SERVER_PORT);
if (port == null) {
System.err.println("No port configured in the config file");
exitCode = 15;
}
try {
ServerObject server = new RemoteLibraryServer(key, port);
- server.setTraceHandler(Instance.getTraceHandler());
+ server.setTraceHandler(Instance.getInstance().getTraceHandler());
server.run();
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
return;
case STOP_SERVER:
// Can be given via "--remote XX XX XX"
if (key == null)
- key = Instance.getConfig().getString(Config.SERVER_KEY);
+ key = Instance.getInstance().getConfig().getString(Config.SERVER_KEY);
if (port == null)
- port = Instance.getConfig().getInteger(Config.SERVER_PORT);
+ port = Instance.getInstance().getConfig().getInteger(Config.SERVER_PORT);
if (port == null) {
System.err.println("No port given nor configured in the config file");
try {
new RemoteLibrary(key, host, port).exit();
} catch (SSLException e) {
- Instance.getTraceHandler().error(
+ Instance.getInstance().getTraceHandler().error(
"Bad access key for remote library");
exitCode = 43;
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
exitCode = 44;
}
}
try {
- Instance.getTempFiles().close();
+ Instance.getInstance().getTempFiles().close();
} catch (IOException e) {
- Instance.getTraceHandler()
- .error(new IOException(
- "Cannot dispose of the temporary files", e));
+ Instance.getInstance().getTraceHandler().error(new IOException("Cannot dispose of the temporary files", e));
}
if (exitCode == 255) {
*/
public static int imprt(String urlString, Progress pg) {
try {
- MetaData meta = Instance.getLibrary().imprt(
- BasicReader.getUrl(urlString), pg);
- System.out.println(meta.getLuid() + ": \"" + meta.getTitle()
- + "\" imported.");
+ MetaData meta = Instance.getInstance().getLibrary().imprt(BasicReader.getUrl(urlString), pg);
+ System.out.println(meta.getLuid() + ": \"" + meta.getTitle() + "\" imported.");
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
return 1;
}
Progress pg) {
OutputType type = OutputType.valueOfNullOkUC(typeString, null);
if (type == null) {
- Instance.getTraceHandler().error(
- new Exception(trans(StringId.OUTPUT_DESC, typeString)));
+ Instance.getInstance().getTraceHandler().error(new Exception(trans(StringId.OUTPUT_DESC, typeString)));
return 1;
}
try {
- Instance.getLibrary().export(luid, type, target, pg);
+ Instance.getInstance().getLibrary().export(luid, type, target, pg);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
return 4;
}
try {
BasicReader.getReader().browse(source);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
return 66;
}
reader.setChapter(Integer.parseInt(chapString));
reader.read(true);
} catch (NumberFormatException e) {
- Instance.getTraceHandler().error(
- new IOException("Chapter number cannot be parsed: "
- + chapString, e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Chapter number cannot be parsed: " + chapString, e));
return 2;
}
} else {
reader.read(true);
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
return 1;
}
String target, boolean infoCover, Progress pg) {
int exitCode = 0;
- Instance.getTraceHandler().trace("Convert: " + urlString);
+ Instance.getInstance().getTraceHandler().trace("Convert: " + urlString);
String sourceName = urlString;
try {
URL source = BasicReader.getUrl(urlString);
OutputType type = OutputType.valueOfAllOkUC(typeString, null);
if (type == null) {
- Instance.getTraceHandler().error(
- new IOException(trans(StringId.ERR_BAD_OUTPUT_TYPE,
- typeString)));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException(trans(StringId.ERR_BAD_OUTPUT_TYPE, typeString)));
exitCode = 2;
} else {
BasicSupport support = BasicSupport.getSupport(source);
if (support != null) {
- Instance.getTraceHandler().trace(
- "Support found: " + support.getClass());
+ Instance.getInstance().getTraceHandler().trace("Support found: " + support.getClass());
Progress pgIn = new Progress();
Progress pgOut = new Progress();
if (pg != null) {
Story story = support.process(pgIn);
try {
target = new File(target).getAbsolutePath();
- BasicOutput.getOutput(type, infoCover, infoCover)
- .process(story, target, pgOut);
+ BasicOutput.getOutput(type, infoCover, infoCover).process(story, target, pgOut);
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException(trans(StringId.ERR_SAVING,
- target), e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException(trans(StringId.ERR_SAVING, target), e));
exitCode = 5;
}
} else {
- Instance.getTraceHandler().error(
- new IOException(trans(
- StringId.ERR_NOT_SUPPORTED, source)));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException(trans( StringId.ERR_NOT_SUPPORTED, source)));
exitCode = 4;
}
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException(trans(StringId.ERR_LOADING,
- sourceName), e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException(trans(StringId.ERR_LOADING, sourceName), e));
exitCode = 3;
}
}
} catch (MalformedURLException e) {
- Instance.getTraceHandler()
- .error(new IOException(trans(StringId.ERR_BAD_URL,
- sourceName), e));
+ Instance.getInstance().getTraceHandler().error(new IOException(trans(StringId.ERR_BAD_URL, sourceName), e));
exitCode = 1;
}
* @return the translated result
*/
private static String trans(StringId id, Object... params) {
- return Instance.getTrans().getString(id, params);
+ return Instance.getInstance().getTrans().getString(id, params);
}
/**
BasicReader.setDefaultReaderType(readerType);
return 0;
} catch (IllegalArgumentException e) {
- Instance.getTraceHandler().error(
- new IOException("Unknown reader type: " + readerTypeString,
- e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Unknown reader type: " + readerTypeString, e));
return 1;
}
}
* time has elapsed.
*/
public void ok() {
- Instance.setVersionChecked();
+ Instance.getInstance().setVersionChecked();
}
/**
List<Version> newer = new ArrayList<Version>();
Map<Version, List<String>> changes = new HashMap<Version, List<String>>();
- if (Instance.isVersionCheckNeeded()) {
+ if (Instance.getInstance().isVersionCheckNeeded()) {
try {
// Prepare the URLs according to the user's language
- Locale lang = Instance.getTrans().getLocale();
+ Locale lang = Instance.getInstance().getTrans().getLocale();
String fr = lang.getLanguage();
String BE = lang.getCountry().replace(".UTF8", "");
String urlFrBE = base.replace("${LANG}", "-" + fr + "_" + BE);
InputStream in = null;
for (String url : new String[] { urlFrBE, urlFr, urlDefault }) {
try {
- in = Instance.getCache()
- .open(new URL(url), null, false);
+ in = Instance.getInstance().getCache().open(new URL(url), null, false);
break;
} catch (IOException e) {
}
reader.close();
}
} catch (IOException e) {
- Instance.getTraceHandler()
- .error(new IOException(
- "Cannot download latest changelist on github.com",
- e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot download latest changelist on github.com", e));
}
}
} catch (IOException e) {
// We should not have not-supported files in the
// library
- Instance.getTraceHandler().error(
- new IOException(String.format(
- "Cannot load file of type '%s' from library: %s",
- meta.getType(), file), e));
+ Instance.getInstance().getTraceHandler().error(new IOException(
+ String.format("Cannot load file of type '%s' from library: %s", meta.getType(), file), e));
} finally {
pgProcess.done();
pg.done();
public synchronized Story save(Story story, String luid, Progress pg)
throws IOException {
- Instance.getTraceHandler().trace(
- this.getClass().getSimpleName() + ": saving story " + luid);
+ Instance.getInstance().getTraceHandler().trace(this.getClass().getSimpleName() + ": saving story " + luid);
// Do not change the original metadata, but change the original story
MetaData meta = story.getMeta().clone();
updateInfo(story.getMeta());
- Instance.getTraceHandler().trace(
- this.getClass().getSimpleName() + ": story saved (" + luid
- + ")");
+ Instance.getInstance().getTraceHandler()
+ .trace(this.getClass().getSimpleName() + ": story saved (" + luid + ")");
return story;
}
* in case of I/O error
*/
public synchronized void delete(String luid) throws IOException {
- Instance.getTraceHandler().trace(
- this.getClass().getSimpleName() + ": deleting story " + luid);
+ Instance.getInstance().getTraceHandler().trace(this.getClass().getSimpleName() + ": deleting story " + luid);
doDelete(luid);
invalidateInfo(luid);
- Instance.getTraceHandler().trace(
- this.getClass().getSimpleName() + ": story deleted (" + luid
+ Instance.getInstance().getTraceHandler()
+ .trace(this.getClass().getSimpleName() + ": story deleted (" + luid
+ ")");
}
import be.nikiroo.fanfix.Instance;
import be.nikiroo.fanfix.bundles.UiConfig;
+import be.nikiroo.fanfix.bundles.UiConfigBundle;
import be.nikiroo.fanfix.data.MetaData;
import be.nikiroo.fanfix.data.Story;
+import be.nikiroo.fanfix.output.BasicOutput.OutputType;
import be.nikiroo.utils.Image;
import be.nikiroo.utils.Progress;
/**
* Create a cache library around the given one.
* <p>
- * It will return the same result, but those will be saved to disk at the
- * same time to be fetched quicker the next time.
+ * It will return the same result, but those will be saved to disk at the same
+ * time to be fetched quicker the next time.
*
- * @param cacheDir
- * the cache directory where to save the files to disk
- * @param lib
- * the original library to wrap
+ * @param cacheDir the cache directory where to save the files to disk
+ * @param lib the original library to wrap
+ * @param config the configuration used to know which kind of default
+ * {@link OutputType} to use for images and non-images stories
*/
- public CacheLibrary(File cacheDir, BasicLibrary lib) {
- this.cacheLib = new LocalLibrary(cacheDir, Instance.getUiConfig()
- .getString(UiConfig.GUI_NON_IMAGES_DOCUMENT_TYPE), Instance
- .getUiConfig().getString(UiConfig.GUI_IMAGES_DOCUMENT_TYPE),
- true);
+ public CacheLibrary(File cacheDir, BasicLibrary lib, UiConfigBundle config) {
+ this.cacheLib = new LocalLibrary(cacheDir, //
+ config.getString(UiConfig.GUI_NON_IMAGES_DOCUMENT_TYPE),
+ config.getString(UiConfig.GUI_IMAGES_DOCUMENT_TYPE), true);
this.lib = lib;
}
updateInfo(cacheLib.getInfo(luid));
pgImport.done();
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
pgImport.done();
import be.nikiroo.fanfix.Instance;
import be.nikiroo.fanfix.bundles.Config;
+import be.nikiroo.fanfix.bundles.ConfigBundle;
+import be.nikiroo.fanfix.bundles.UiConfigBundle;
import be.nikiroo.fanfix.data.MetaData;
import be.nikiroo.fanfix.data.Story;
import be.nikiroo.fanfix.output.BasicOutput;
/**
* Create a new {@link LocalLibrary} with the given back-end directory.
*
- * @param baseDir
- * the directory where to find the {@link Story} objects
+ * @param baseDir the directory where to find the {@link Story} objects
+ * @param config the configuration used to know which kind of default
+ * {@link OutputType} to use for images and non-images stories
*/
- public LocalLibrary(File baseDir) {
- this(baseDir, Instance.getConfig().getString(
- Config.FILE_FORMAT_NON_IMAGES_DOCUMENT_TYPE), Instance.getConfig()
- .getString(Config.FILE_FORMAT_IMAGES_DOCUMENT_TYPE), false);
+ public LocalLibrary(File baseDir, ConfigBundle config) {
+ this(baseDir, //
+ config.getString(Config.FILE_FORMAT_NON_IMAGES_DOCUMENT_TYPE),
+ config.getString(Config.FILE_FORMAT_IMAGES_DOCUMENT_TYPE), false);
}
/**
@Override
public File getFile(String luid, Progress pg) throws IOException {
- Instance.getTraceHandler().trace(
- this.getClass().getSimpleName() + ": get file for " + luid);
+ Instance.getInstance().getTraceHandler().trace(this.getClass().getSimpleName() + ": get file for " + luid);
File file = null;
String mess = "no file found for ";
file = files[1];
}
- Instance.getTraceHandler().trace(
- this.getClass().getSimpleName() + ": " + mess + luid + " ("
- + meta.getTitle() + ")");
+ Instance.getInstance().getTraceHandler()
+ .trace(this.getClass().getSimpleName() + ": " + mess + luid + " (" + meta.getTitle() + ")");
return file;
}
meta = InfoReader.readMeta(infoFile, true);
return meta.getCover();
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
}
InfoCover.writeInfo(newDir, name, meta);
relatedFile.getParentFile().delete();
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
} else {
relatedFile.renameTo(new File(newDir, relatedFile.getName()));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException(
- "Cannot load the existing custom source cover: "
- + cover, e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot load the existing custom source cover: " + cover, e));
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException(
- "Cannot load the existing custom author cover: "
- + cover, e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot load the existing custom author cover: " + cover, e));
}
}
dir.mkdirs();
File cover = new File(dir, ".cover");
try {
- Instance.getCache().saveAsImage(coverImage, cover, true);
+ Instance.getInstance().getCache().saveAsImage(coverImage, cover, true);
if (sourceCovers != null) {
sourceCovers.put(source, coverImage);
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
File cover = getAuthorCoverFile(author);
cover.getParentFile().mkdirs();
try {
- Instance.getCache().saveAsImage(coverImage, cover, true);
+ Instance.getInstance().getCache().saveAsImage(coverImage, cover, true);
if (authorCovers != null) {
authorCovers.put(author, coverImage);
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
private File getAuthorCoverFile(String author) {
File aDir = new File(baseDir, "_AUTHORS");
String hash = StringUtils.getMd5Hash(author);
- String ext = Instance.getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER);
+ String ext = Instance.getInstance().getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER);
return new File(aDir, hash + "." + ext.toLowerCase());
}
}
String coverExt = "."
- + Instance.getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER)
- .toLowerCase();
+ + Instance.getInstance().getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
File coverFile = new File(path + coverExt);
if (!coverFile.exists()) {
coverFile = new File(path.substring(0,
} catch (IOException e) {
// We should not have not-supported files in the
// library
- Instance.getTraceHandler().error(
- new IOException("Cannot load file from library: "
- + infoFileOrSubdir, e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot load file from library: " + infoFileOrSubdir, e));
}
}
@Override
public Status getStatus() {
- Instance.getTraceHandler().trace("Getting remote lib status...");
+ Instance.getInstance().getTraceHandler().trace("Getting remote lib status...");
Status status = getStatusDo();
- Instance.getTraceHandler().trace("Remote lib status: " + status);
+ Instance.getInstance().getTraceHandler().trace("Remote lib status: " + status);
return status;
}
@Override
protected void onError(Exception e) {
if (!(e instanceof IOException)) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
return;
}
*/
public RemoteLibraryServer(String key, int port) throws IOException {
super("Fanfix remote library", port, key);
- setTraceHandler(Instance.getTraceHandler());
+ setTraceHandler(Instance.getInstance().getTraceHandler());
}
@Override
}
}
- List<String> whitelist = Instance.getConfig().getList(
- Config.SERVER_WHITELIST);
+ List<String> whitelist = Instance.getInstance().getConfig().getList(Config.SERVER_WHITELIST);
if (whitelist == null) {
whitelist = new ArrayList<String>();
}
wl = false;
}
- rw = Instance.getConfig().getBoolean(Config.SERVER_RW, rw);
+ rw = Instance.getInstance().getConfig().getBoolean(Config.SERVER_RW, rw);
if (!subkey.isEmpty()) {
- List<String> allowed = Instance.getConfig().getList(
- Config.SERVER_ALLOWED_SUBKEYS);
+ List<String> allowed = Instance.getInstance().getConfig().getList(Config.SERVER_ALLOWED_SUBKEYS);
if (allowed.contains(subkey)) {
if ((subkey + "|").contains("|rw|")) {
rw = true;
if ("*".equals(args[0])) {
Progress pg = createPgForwarder(action);
- for (MetaData meta : Instance.getLibrary().getMetas(pg)) {
+ for (MetaData meta : Instance.getInstance().getLibrary().getMetas(pg)) {
MetaData light;
if (meta.getCover() == null) {
light = meta;
forcePgDoneSent(pg);
} else {
- MetaData meta = Instance.getLibrary().getInfo((String) args[0]);
+ MetaData meta = Instance.getInstance().getLibrary().getInfo((String) args[0]);
MetaData light;
if (meta.getCover() == null) {
light = meta;
return metas.toArray(new MetaData[0]);
} else if ("GET_STORY".equals(command)) {
- MetaData meta = Instance.getLibrary().getInfo((String) args[0]);
+ MetaData meta = Instance.getInstance().getLibrary().getInfo((String) args[0]);
if (meta == null) {
return null;
}
action.send(meta);
action.rec();
- Story story = Instance.getLibrary()
- .getStory((String) args[0], null);
+ Story story = Instance.getInstance().getLibrary().getStory((String) args[0], null);
for (Object obj : breakStory(story)) {
action.send(obj);
action.rec();
}
Story story = rebuildStory(list);
- Instance.getLibrary().save(story, (String) args[0], null);
+ Instance.getInstance().getLibrary().save(story, (String) args[0], null);
return story.getMeta().getLuid();
} else if ("IMPORT".equals(command)) {
if (!rw) {
}
Progress pg = createPgForwarder(action);
- MetaData meta = Instance.getLibrary().imprt(
- new URL((String) args[0]), pg);
+ MetaData meta = Instance.getInstance().getLibrary().imprt(new URL((String) args[0]), pg);
forcePgDoneSent(pg);
return meta.getLuid();
} else if ("DELETE_STORY".equals(command)) {
+ args[0], false);
}
- Instance.getLibrary().delete((String) args[0]);
+ Instance.getInstance().getLibrary().delete((String) args[0]);
} else if ("GET_COVER".equals(command)) {
- return Instance.getLibrary().getCover((String) args[0]);
+ return Instance.getInstance().getLibrary().getCover((String) args[0]);
} else if ("GET_CUSTOM_COVER".equals(command)) {
if ("SOURCE".equals(args[0])) {
- return Instance.getLibrary().getCustomSourceCover(
- (String) args[1]);
+ return Instance.getInstance().getLibrary().getCustomSourceCover((String) args[1]);
} else if ("AUTHOR".equals(args[0])) {
- return Instance.getLibrary().getCustomAuthorCover(
- (String) args[1]);
+ return Instance.getInstance().getLibrary().getCustomAuthorCover((String) args[1]);
} else {
return null;
}
}
if ("SOURCE".equals(args[0])) {
- Instance.getLibrary().setSourceCover((String) args[1],
- (String) args[2]);
+ Instance.getInstance().getLibrary().setSourceCover((String) args[1], (String) args[2]);
} else if ("AUTHOR".equals(args[0])) {
- Instance.getLibrary().setAuthorCover((String) args[1],
- (String) args[2]);
+ Instance.getInstance().getLibrary().setAuthorCover((String) args[1], (String) args[2]);
}
} else if ("CHANGE_STA".equals(command)) {
if (!rw) {
- throw new RemoteLibraryException("Read-Only remote library: "
- + args[0] + ", " + args[1], false);
+ throw new RemoteLibraryException("Read-Only remote library: " + args[0] + ", " + args[1], false);
}
Progress pg = createPgForwarder(action);
- Instance.getLibrary().changeSTA((String) args[0], (String) args[1],
- (String) args[2], (String) args[3], pg);
+ Instance.getInstance().getLibrary().changeSTA((String) args[0], (String) args[1], (String) args[2],
+ (String) args[3], pg);
forcePgDoneSent(pg);
} else if ("EXIT".equals(command)) {
if (!rw) {
StringId id = longDesc ? StringId.OUTPUT_DESC
: StringId.OUTPUT_DESC_SHORT;
- String desc = Instance.getTrans().getStringX(id, this.name());
+ String desc = Instance.getInstance().getTrans().getStringX(id, this.name());
if (desc == null) {
- desc = Instance.getTrans().getString(id, this.toString());
+ desc = Instance.getInstance().getTrans().getString(id, this.toString());
}
if (desc == null || desc.isEmpty()) {
File target = new File(targetDir, targetName);
- dir = Instance.getTempFiles().createTempDir("fanfic-reader-cbz-dir");
+ dir = Instance.getInstance().getTempFiles().createTempDir("fanfic-reader-cbz-dir");
try {
// will also save the images! (except the cover -> false)
BasicOutput
String targetNameOrig = targetName;
targetName += getDefaultExtension(false);
- tmpDir = Instance.getTempFiles().createTempDir("fanfic-reader-epub");
+ tmpDir = Instance.getInstance().getTempFiles().createTempDir("fanfic-reader-epub");
tmpDir.delete();
if (!tmpDir.mkdir()) {
if (story.getMeta() != null && story.getMeta().getCover() != null) {
File file = new File(images, "cover");
try {
- Instance.getCache().saveAsImage(story.getMeta().getCover(),
- file, true);
+ Instance.getInstance().getCache().saveAsImage(story.getMeta().getCover(), file, true);
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
break;
case IMAGE:
File file = new File(images, getCurrentImageBestName(false));
- Instance.getCache().saveAsImage(para.getContentImage(), file,
- nextParaIsCover);
+ Instance.getInstance().getCache().saveAsImage(para.getContentImage(), file, nextParaIsCover);
writer.write(" <img alt='page image' class='page-image' src='images/"
+ getCurrentImageBestName(false) + "'/>");
break;
private void generateNcx(Chapter chap, StringBuilder builder, int navPoint) {
String name;
if (chap.getName() != null && !chap.getName().isEmpty()) {
- name = Instance.getTrans().getString(StringId.CHAPTER_NAMED,
- chap.getNumber(), chap.getName());
+ name = Instance.getInstance().getTrans().getString(StringId.CHAPTER_NAMED, chap.getNumber(),
+ chap.getName());
} else {
- name = Instance.getTrans().getString(StringId.CHAPTER_UNNAMED,
- chap.getNumber());
+ name = Instance.getInstance().getTrans().getString(StringId.CHAPTER_UNNAMED, chap.getNumber());
}
String nnn = String.format("%03d", (navPoint - 2));
builder.append("\n <!-- Images -->");
if (story.getMeta() != null && story.getMeta().getCover() != null) {
- String format = Instance.getConfig()
+ String format = Instance.getInstance().getConfig()
.getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER)
.toLowerCase();
builder.append("\n <item id=\"cover\" href=\"images/cover."
author = meta.getAuthor();
}
- String format = Instance.getConfig()
+ String format = Instance.getInstance().getConfig()
.getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
builder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
.process(story, dir, targetNameOrig);
if (story.getMeta().getCover() != null) {
- Instance.getCache().saveAsImage(story.getMeta().getCover(),
- new File(dir, "cover"), true);
+ Instance.getInstance().getCache().saveAsImage(story.getMeta().getCover(), new File(dir, "cover"), true);
}
return target;
author = meta.getAuthor();
}
- String format = Instance.getConfig()
+ String format = Instance.getInstance().getConfig()
.getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
InputStream inStyle = getClass().getResourceAsStream("html.style.css");
meta.isImageDocument() ? "true" : "false");
writeMeta(infoWriter, "TYPE", meta.getType());
if (meta.getCover() != null) {
- String format = Instance.getConfig()
+ String format = Instance.getInstance().getConfig()
.getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
writeMeta(infoWriter, "COVER", targetName + "." + format);
} else {
MetaData meta) {
if (meta != null && meta.getCover() != null) {
try {
- Instance.getCache().saveAsImage(meta.getCover(),
- new File(targetDir, targetName), true);
+ Instance.getInstance().getCache().saveAsImage(meta.getCover(), new File(targetDir, targetName), true);
} catch (IOException e) {
// Allow to continue without cover
- Instance.getTraceHandler().error(
- new IOException("Failed to save the cover image", e));
+ Instance.getInstance().getTraceHandler().error(new IOException("Failed to save the cover image", e));
}
}
}
class InfoText extends Text {
// quote chars
- private char openQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_SINGLE_QUOTE);
- private char closeQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_SINGLE_QUOTE);
- private char openDoubleQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_DOUBLE_QUOTE);
- private char closeDoubleQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_DOUBLE_QUOTE);
+ private char openQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_SINGLE_QUOTE);
+ private char closeQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_SINGLE_QUOTE);
+ private char openDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_DOUBLE_QUOTE);
+ private char closeDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
@Override
public String getDefaultExtension(boolean readerTarget) {
writer.write("\n");
if (chap.getName() != null && !chap.getName().isEmpty()) {
- writer.write(Instance.getTrans().getString(StringId.CHAPTER_NAMED,
- chap.getNumber(), chap.getName()));
+ writer.write(Instance.getInstance().getTrans().getString(StringId.CHAPTER_NAMED, chap.getNumber(),
+ chap.getName()));
} else {
- writer.write(Instance.getTrans().getString(
- StringId.CHAPTER_UNNAMED, chap.getNumber()));
+ writer.write(Instance.getInstance().getTrans().getString(StringId.CHAPTER_UNNAMED, chap.getNumber()));
}
writer.write("\n\n");
private boolean lastWasQuote = false;
// quote chars
- private char openQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_SINGLE_QUOTE);
- private char closeQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_SINGLE_QUOTE);
- private char openDoubleQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_DOUBLE_QUOTE);
- private char closeDoubleQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_DOUBLE_QUOTE);
+ private char openQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_SINGLE_QUOTE);
+ private char closeQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_SINGLE_QUOTE);
+ private char openDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_DOUBLE_QUOTE);
+ private char closeDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
@Override
public File process(Story story, File targetDir, String targetName)
author = "\\author{" + latexEncode(meta.getAuthor()) + "}";
lang = meta.getLang().toLowerCase();
if (lang != null && !lang.isEmpty()) {
- lang = Instance.getConfig().getStringX(Config.CONF_LATEX_LANG, lang);
+ lang = Instance.getInstance().getConfig().getStringX(Config.CONF_LATEX_LANG, lang);
if (lang == null) {
- System.err.println(Instance.getTrans().getString(
- StringId.LATEX_LANG_UNKNOWN, lang));
+ System.err.println(Instance.getInstance().getTrans().getString(StringId.LATEX_LANG_UNKNOWN, lang));
}
}
}
writer.write(title);
writer.write("\n");
if (author != null && !author.isEmpty()) {
- writer.write(Instance.getTrans().getString(StringId.BY) + " "
- + author);
+ writer.write(Instance.getInstance().getTrans().getString(StringId.BY) + " " + author);
}
if (date != null && !date.isEmpty()) {
writer.write(" (");
protected void writeChapterHeader(Chapter chap) throws IOException {
String txt;
if (chap.getName() != null && !chap.getName().isEmpty()) {
- txt = Instance.getTrans().getString(StringId.CHAPTER_NAMED,
- chap.getNumber(), chap.getName());
+ txt = Instance.getInstance().getTrans().getString(StringId.CHAPTER_NAMED, chap.getNumber(), chap.getName());
} else {
- txt = Instance.getTrans().getString(StringId.CHAPTER_UNNAMED,
- chap.getNumber());
+ txt = Instance.getInstance().getTrans().getString(StringId.CHAPTER_UNNAMED, chap.getNumber());
}
writer.write("\n" + txt + "\n");
if (para.getType() == ParagraphType.IMAGE) {
File file = new File(targetDir, getCurrentImageBestName(true));
try {
- Instance.getCache().saveAsImage(para.getContentImage(), file,
- nextParaIsCover);
+ Instance.getInstance().getCache().saveAsImage(para.getContentImage(), file, nextParaIsCover);
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException("Cannot save an image", e));
+ Instance.getInstance().getTraceHandler().error(new IOException("Cannot save an image", e));
}
}
* @author niki
*/
public abstract class BasicReader implements Reader {
- private static BasicLibrary defaultLibrary = Instance.getLibrary();
+ private static BasicLibrary defaultLibrary = Instance.getInstance().getLibrary();
private static ReaderType defaultType = ReaderType.GUI;
private BasicLibrary lib;
* Take the default reader type configuration from the config file.
*/
static {
- String typeString = Instance.getConfig().getString(Config.READER_TYPE);
+ String typeString = Instance.getInstance().getConfig().getString(Config.READER_TYPE);
if (typeString != null && !typeString.isEmpty()) {
try {
ReaderType type = ReaderType.valueOf(typeString.toUpperCase());
.getTypeName());
}
} catch (Exception e) {
- Instance.getTraceHandler().error(
- new Exception("Cannot create a reader of type: "
- + defaultType + " (Not compiled in?)", e));
+ Instance.getInstance().getTraceHandler()
+ .error(new Exception("Cannot create a reader of type: " + defaultType + " (Not compiled in?)", e));
}
return null;
throws IOException {
String program = null;
if (meta.isImageDocument()) {
- program = Instance.getUiConfig().getString(
- UiConfig.IMAGES_DOCUMENT_READER);
+ program = Instance.getInstance().getUiConfig().getString(UiConfig.IMAGES_DOCUMENT_READER);
} else {
- program = Instance.getUiConfig().getString(
- UiConfig.NON_IMAGES_DOCUMENT_READER);
+ program = Instance.getInstance().getUiConfig().getString(UiConfig.NON_IMAGES_DOCUMENT_READER);
}
if (program != null && program.trim().isEmpty()) {
for (String starter : new String[] { "xdg-open", "open", "see",
"start", "run" }) {
try {
- Instance.getTraceHandler().trace(
- "starting external program");
- proc = Runtime.getRuntime().exec(
- new String[] { starter, target.getAbsolutePath() });
+ Instance.getInstance().getTraceHandler().trace("starting external program");
+ proc = Runtime.getRuntime().exec(new String[] { starter, target.getAbsolutePath() });
ok = true;
break;
} catch (IOException e) {
throw new IOException("Cannot find a program to start the file");
}
} else {
- Instance.getTraceHandler().trace("starting external program");
+ Instance.getInstance().getTraceHandler().trace("starting external program");
proc = Runtime.getRuntime().exec(
new String[] { program, target.getAbsolutePath() });
}
// TODO: progress?
for (Chapter chap : getStory(null)) {
if (chap.getName() != null && !chap.getName().isEmpty()) {
- System.out.println(Instance.getTrans().getString(
- StringId.CHAPTER_NAMED, chap.getNumber(),
+ System.out.println(Instance.getInstance().getTrans().getString(StringId.CHAPTER_NAMED, chap.getNumber(),
chap.getName()));
} else {
- System.out.println(Instance.getTrans().getString(
- StringId.CHAPTER_UNNAMED, chap.getNumber()));
+ System.out.println(
+ Instance.getInstance().getTrans().getString(StringId.CHAPTER_UNNAMED, chap.getNumber()));
}
}
}
guessBackendType());
app.run();
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
guessBackendType());
app.run();
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
reader.browse(source);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
this.reader = reader;
// TODO: traces/errors?
- Instance.setTraceHandler(null);
+ Instance.getInstance().setTraceHandler(null);
// Add the menus TODO: i18n
TMenu fileMenu = addMenu("&File");
* the exception to log if any (can be NULL)
*/
private void error(String message, String title, Exception e) {
- Instance.getTraceHandler().error(title + ": " + message);
+ Instance.getInstance().getTraceHandler().error(title + ": " + message);
if (e != null) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
if (e != null) {
selectTargets.add(source);
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
showTarget = true;
selectTargets.add(author);
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
showTarget = true;
metas = reader.getLibrary().getList();
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
metas = new ArrayList<MetaData>();
}
reader.setMeta(meta);
reader.read(false);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
class TuiReaderOptionWindow extends TOptionWindow {
public TuiReaderOptionWindow(TuiReaderApplication reader, boolean uiOptions) {
super(reader, uiOptions ? UiConfig.class : Config.class,
- uiOptions ? Instance.getUiConfig() : Instance.getConfig(),
- "Options");
+ uiOptions ? Instance.getInstance().getUiConfig() : Instance.getInstance().getConfig(), "Options");
TStatusBar statusBar = reader.setStatusBar(this, "Options");
}
nativeLookLoaded = true;
}
- cacheDir = Instance.getReaderDir();
+ cacheDir = Instance.getInstance().getReaderDir();
cacheDir.mkdirs();
if (!cacheDir.exists()) {
throw new IOException(
if (lib instanceof CacheLibrary) {
cacheLib = (CacheLibrary) lib;
} else {
- cacheLib = new CacheLibrary(cacheDir, lib);
+ cacheLib = new CacheLibrary(cacheDir, lib, Instance.getInstance().getUiConfig());
}
}
try {
Desktop.getDesktop().browse(e.getURL().toURI());
} catch (IOException ee) {
- Instance.getTraceHandler().error(ee);
+ Instance.getInstance().getTraceHandler().error(ee);
} catch (URISyntaxException ee) {
- Instance.getTraceHandler().error(ee);
+ Instance.getInstance().getTraceHandler().error(ee);
}
}
});
GuiReader.this, typeFinal);
sync(gui);
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
} finally {
done[0] = true;
}
try {
tag = searchable.getTag(tags);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
search.searchTag(searchOn, page, item, tag);
try {
cacheLib.clearFromCache(luid);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
cacheLib.delete(luid);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
void read(String luid, boolean sync, Progress pg) throws IOException {
MetaData meta = cacheLib.getInfo(luid);
- boolean textInternal = Instance.getUiConfig().getBoolean(
- UiConfig.NON_IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
- boolean imageInternal = Instance.getUiConfig().getBoolean(
- UiConfig.IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
+ boolean textInternal = Instance.getInstance().getUiConfig()
+ .getBoolean(UiConfig.NON_IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
+ boolean imageInternal = Instance.getInstance().getUiConfig()
+ .getBoolean(UiConfig.IMAGES_DOCUMENT_USE_INTERNAL_READER, true);
boolean useInternalViewer = true;
if (meta.isImageDocument() && !imageInternal) {
try {
cacheLib.changeSource(luid, newSource, null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
cacheLib.changeTitle(luid, newTitle, null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
cacheLib.changeAuthor(luid, newAuthor, null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
* @return the translated result
*/
static String trans(StringIdGui id, Object... params) {
- return Instance.getTransGui().getString(id, params);
+ return Instance.getInstance().getTransGui().getString(id, params);
}
/**
EventQueue.invokeLater(run);
}
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
done[0] = true;
}
BufferedImage resizedImage = null;
String id = getIconId(info);
- InputStream in = Instance.getCache().getFromCache(id);
+ InputStream in = Instance.getInstance().getCache().getFromCache(id);
if (in != null) {
try {
resizedImage = ImageUtilsAwt.fromImage(new Image(in));
in.close();
in = null;
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
ImageIO.write(resizedImage, "png", out);
byte[] imageBytes = out.toByteArray();
in = new ByteArrayInputStream(imageBytes);
- Instance.getCache().addToCache(in, id);
+ Instance.getInstance().getCache().addToCache(in, id);
in.close();
in = null;
}
} catch (MalformedURLException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
*/
static public void clearIcon(GuiReaderBookInfo info) {
String id = getIconId(info);
- Instance.getCache().removeFromCache(id);
+ Instance.getInstance().getCache().removeFromCache(id);
}
/**
@Override
public void actionPerformed(ActionEvent e) {
ConfigEditor<Config> ed = new ConfigEditor<Config>(
- Config.class, Instance.getConfig(), GuiReader
- .trans(StringIdGui.SUBTITLE_CONFIG));
+ Config.class, Instance.getInstance().getConfig(), GuiReader.trans(StringIdGui.SUBTITLE_CONFIG));
JFrame frame = new JFrame(title);
frame.add(ed);
frame.setSize(850, 600);
@Override
public void actionPerformed(ActionEvent e) {
ConfigEditor<UiConfig> ed = new ConfigEditor<UiConfig>(
- UiConfig.class, Instance.getUiConfig(), GuiReader
- .trans(StringIdGui.SUBTITLE_CONFIG_UI));
+ UiConfig.class, Instance.getInstance().getUiConfig(),
+ GuiReader.trans(StringIdGui.SUBTITLE_CONFIG_UI));
JFrame frame = new JFrame(title);
frame.add(ed);
frame.setSize(800, 600);
selectedBook.getInfo().getMeta()
.getLuid(), type, path, pg);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
});
* the exception to log if any
*/
public void error(final String message, final String title, Exception e) {
- Instance.getTraceHandler().error(title + ": " + message);
+ Instance.getInstance().getTraceHandler().error(title + ": " + message);
if (e != null) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
SwingUtilities.invokeLater(new Runnable() {
pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS));
JScrollPane scroll = new JScrollPane(pane);
- Integer icolor = Instance.getUiConfig().getColor(
- UiConfig.BACKGROUND_COLOR);
+ Integer icolor = Instance.getInstance().getUiConfig().getColor(UiConfig.BACKGROUND_COLOR);
if (icolor != null) {
color = new Color(icolor);
setBackground(color);
helper.createMenu(status);
validate();
- String desc = Instance.getTransGui().getStringX(
- StringIdGui.ERROR_LIB_STATUS,
+ String desc = Instance.getInstance().getTransGui().getStringX(StringIdGui.ERROR_LIB_STATUS,
status.toString());
if (desc == null) {
desc = GuiReader
}
});
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
error(GuiReader.trans(StringIdGui.ERROR_CANNOT_OPEN),
GuiReader.trans(StringIdGui.TITLE_ERROR), e);
}
break;
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
final Progress pg = new Progress();
});
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
error(GuiReader.trans(StringIdGui.ERROR_CANNOT_OPEN),
GuiReader.trans(StringIdGui.TITLE_ERROR), e);
}
try {
EventQueue.invokeAndWait(run);
} catch (InterruptedException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
} catch (InvocationTargetException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
}
* the exception to log if any
*/
private void error(final String message, final String title, Exception e) {
- Instance.getTraceHandler().error(title + ": " + message);
+ Instance.getInstance().getTraceHandler().error(title + ": " + message);
if (e != null) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
SwingUtilities.invokeLater(new Runnable() {
listener.actionPerformed(new ActionEvent(this,
ActionEvent.ACTION_FIRST, "page changed"));
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
}
try {
lib.imprt(new URL(info.getMeta().getUrl()), null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
pg.done();
* the error
*/
static void error(Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
/**
* the error message
*/
static void error(String e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
/**
}
});
} catch (Exception e) {
- Instance.getTraceHandler().error(
+ Instance.getInstance().getTraceHandler().error(
new Exception("Failed to load image into label", e));
EventQueue.invokeLater(new Runnable() {
@Override
fakeStory.setChapters(Arrays.asList(chap));
output.process(fakeStory, null, null);
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
return builder.toString();
}
* in case of I/O error
*/
protected Document load(URL url, boolean stable) throws IOException {
- return DataUtil.load(Instance.getCache().open(url, support, stable),
- "UTF-8", url.toString());
+ return DataUtil.load(Instance.getInstance().getCache().open(url, support, stable), "UTF-8", url.toString());
}
/**
String coverUrl = cover.absUrl("src");
try {
- InputStream in = Instance.getCache().open(
- new URL(coverUrl), getSupport(), true);
+ InputStream in = Instance.getInstance().getCache().open(new URL(coverUrl), getSupport(), true);
try {
meta.setCover(new Image(in));
} finally {
}
} catch (Exception e) {
// Should not happen on Fanfiction.net
- Instance.getTraceHandler().error(
- new Exception(
- "Cannot download cover for Fanfiction story in search mode: "
- + meta.getTitle(), e));
+ Instance.getInstance().getTraceHandler().error(new Exception(
+ "Cannot download cover for Fanfiction story in search mode: " + meta.getTitle(), e));
}
}
}
}
meta.setResume(getSupport().makeChapter(new URL(sourceUrl), 0,
- Instance.getTrans().getString(StringId.DESCRIPTION),
- resume));
+ Instance.getInstance().getTrans().getString(StringId.DESCRIPTION), resume));
}
// How are the tags ordered?
private List<MetaData> getResults(String sourceUrl) throws IOException {
List<MetaData> metas = new ArrayList<MetaData>();
- Document doc = DataUtil.load(
- Instance.getCache().open(new URL(sourceUrl), getSupport(),
- false), "UTF-8", sourceUrl);
+ Document doc = DataUtil.load(Instance.getInstance().getCache().open(new URL(sourceUrl), getSupport(), false),
+ "UTF-8", sourceUrl);
for (Element result : doc.getElementsByClass("rechercheAffichage")) {
Element a = result.getElementsByTag("a").first();
meta.setAuthor(getVal(tab, 1));
meta.setTags(Arrays.asList(getVal(tab, 2).split(" ")));
- meta.setResume(getSupport()
- .makeChapter(
- new URL(sourceUrl),
- 0,
- Instance.getTrans().getString(
- StringId.DESCRIPTION),
- getVal(tab, 5)));
+ meta.setResume(getSupport().makeChapter(new URL(sourceUrl), 0,
+ Instance.getInstance().getTrans().getString(StringId.DESCRIPTION), getVal(tab, 5)));
}
Element img = result.getElementsByTag("img").first();
String coverUrl = img.absUrl("src");
try {
- InputStream in = Instance.getCache().open(
- new URL(coverUrl), getSupport(), true);
+ InputStream in = Instance.getInstance().getCache().open(new URL(coverUrl), getSupport(),
+ true);
try {
meta.setCover(new Image(in));
} finally {
}
} catch (Exception e) {
// Happen often on MangaLEL...
- Instance.getTraceHandler().trace(
- "Cannot download cover for MangaLEL story in search mode: "
- + meta.getTitle());
+ Instance.getInstance().getTraceHandler().trace(
+ "Cannot download cover for MangaLEL story in search mode: " + meta.getTitle());
}
} catch (Exception e) {
// no project id... cannot use the story :(
- Instance.getTraceHandler().error(
- "Cannot find ProjectId for MangaLEL story in search mode: "
- + meta.getTitle());
+ Instance.getInstance().getTraceHandler()
+ .error("Cannot find ProjectId for MangaLEL story in search mode: " + meta.getTitle());
}
}
*/
protected Document loadDocument(URL source) throws IOException {
String url = getCanonicalUrl(source).toString();
- return DataUtil.load(Instance.getCache().open(source, this, false),
- "UTF-8", url.toString());
+ return DataUtil.load(Instance.getInstance().getCache().open(source, this, false), "UTF-8", url.toString());
}
/**
pg.setProgress(60);
if (getDesc) {
- String descChapterName = Instance.getTrans().getString(
- StringId.DESCRIPTION);
- story.getMeta().setResume(
- bsPara.makeChapter(this, source, 0,
- descChapterName, //
- getDesc(), isHtml(), null));
+ String descChapterName = Instance.getInstance().getTrans().getString(StringId.DESCRIPTION);
+ story.getMeta().setResume(bsPara.makeChapter(this, source, 0, descChapterName, //
+ getDesc(), isHtml(), null));
}
pg.done();
* @return the cover if any, or NULL
*/
public Image getDefaultCover(String subject) {
- if (subject != null && !subject.isEmpty()
- && Instance.getCoverDir() != null) {
+ if (subject != null && !subject.isEmpty() && Instance.getInstance().getCoverDir() != null) {
try {
- File fileCover = new File(Instance.getCoverDir(), subject);
+ File fileCover = new File(Instance.getInstance().getCoverDir(), subject);
return getImage(null, fileCover.toURI().toURL(), subject);
} catch (MalformedURLException e) {
}
}
InputStream in = null;
try {
- in = Instance.getCache().open(url, support, true);
+ in = Instance.getInstance().getCache().open(url, support, true);
return new Image(in);
} catch (IOException e) {
} finally {
// try for URLs
try {
for (String ext : getImageExt(true)) {
- if (Instance.getCache()
- .check(new URL(line + ext), true)) {
+ if (Instance.getInstance().getCache().check(new URL(line + ext), true)) {
url = new URL(line + ext);
break;
}
for (String ext : getImageExt(true)) {
try {
url = new URL(line + ext);
- Instance.getCache().refresh(url, support, true);
+ Instance.getInstance().getCache().refresh(url, support, true);
break;
} catch (IOException e) {
// no image with this ext
// refresh the cached file
if (url != null) {
try {
- Instance.getCache().refresh(url, support, true);
+ Instance.getInstance().getCache().refresh(url, support, true);
} catch (IOException e) {
// woops, broken image
url = null;
public String fixAuthor(String author) {
if (author != null) {
for (String suffix : new String[] { " ", ":" }) {
- for (String byString : Instance.getConfig().getList(Config.CONF_BYS)) {
+ for (String byString : Instance.getInstance().getConfig().getList(Config.CONF_BYS)) {
byString += suffix;
if (author.toUpperCase().startsWith(byString.toUpperCase())) {
author = author.substring(byString.length()).trim();
}
InputStream in = null;
try {
- in = Instance.getCache().open(url, support, true);
+ in = Instance.getInstance().getCache().open(url, support, true);
return new Image(in);
} catch (IOException e) {
} finally {
// try for URLs
try {
for (String ext : getImageExt(true)) {
- if (Instance.getCache()
+ if (Instance.getInstance().getCache()
.check(new URL(line + ext), true)) {
url = new URL(line + ext);
break;
for (String ext : getImageExt(true)) {
try {
url = new URL(line + ext);
- Instance.getCache().refresh(url, support, true);
+ Instance.getInstance().getCache().refresh(url, support, true);
break;
} catch (IOException e) {
// no image with this ext
// refresh the cached file
if (url != null) {
try {
- Instance.getCache().refresh(url, support, true);
+ Instance.getInstance().getCache().refresh(url, support, true);
} catch (IOException e) {
// woops, broken image
url = null;
*/
public class BasicSupportPara {
// quote chars
- private static char openQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_SINGLE_QUOTE);
- private static char closeQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_SINGLE_QUOTE);
- private static char openDoubleQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_DOUBLE_QUOTE);
- private static char closeDoubleQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_DOUBLE_QUOTE);
+ private static char openQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_SINGLE_QUOTE);
+ private static char closeQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_SINGLE_QUOTE);
+ private static char openDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_DOUBLE_QUOTE);
+ private static char closeDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
// used by this class:
BasicSupportHelper bsHelper;
// "Chapter 5: - Fun!" after the ": " was automatically added)
String chapterName = processPara(name, false)
.getContent().trim();
- for (String lang : Instance.getConfig().getList(Config.CONF_CHAPTER)) {
- String chapterWord = Instance.getConfig().getStringX(
- Config.CONF_CHAPTER, lang);
+ for (String lang : Instance.getInstance().getConfig().getList(Config.CONF_CHAPTER)) {
+ String chapterWord = Instance.getInstance().getConfig().getStringX(Config.CONF_CHAPTER, lang);
if (chapterName.startsWith(chapterWord)) {
chapterName = chapterName.substring(chapterWord.length())
.trim();
private InputStream in;
// quote chars
- private char openQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_SINGLE_QUOTE);
- private char closeQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_SINGLE_QUOTE);
- private char openDoubleQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_DOUBLE_QUOTE);
- private char closeDoubleQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_DOUBLE_QUOTE);
+ private char openQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_SINGLE_QUOTE);
+ private char closeQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_SINGLE_QUOTE);
+ private char openDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_DOUBLE_QUOTE);
+ private char closeDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
// New methods not used in Deprecated mode
@Override
pg.setProgress(60);
if (getDesc) {
- String descChapterName = Instance.getTrans().getString(
- StringId.DESCRIPTION);
- story.getMeta().setResume(
- makeChapter(url, 0, descChapterName,
- getDesc(url, getInput()), null));
+ String descChapterName = Instance.getInstance().getTrans().getString(StringId.DESCRIPTION);
+ story.getMeta().setResume(makeChapter(url, 0, descChapterName, getDesc(url, getInput()), null));
}
pg.setProgress(100);
InputStream chapIn = null;
if (chap.getValue() != null) {
setCurrentReferer(chap.getValue());
- chapIn = Instance.getCache().open(chap.getValue(),
- this, false);
+ chapIn = Instance.getInstance().getCache().open(chap.getValue(), this, false);
}
pgChaps.setProgress(i * 100);
try {
// redundant "Chapter x: " in front of it, or "-" (as in
// "Chapter 5: - Fun!" after the ": " was automatically added)
String chapterName = processPara(name).getContent().trim();
- for (String lang : Instance.getConfig().getList(Config.CONF_CHAPTER)) {
- String chapterWord = Instance.getConfig().getStringX(
- Config.CONF_CHAPTER, lang);
+ for (String lang : Instance.getInstance().getConfig().getList(Config.CONF_CHAPTER)) {
+ String chapterWord = Instance.getInstance().getConfig().getStringX(Config.CONF_CHAPTER, lang);
if (chapterName.startsWith(chapterWord)) {
chapterName = chapterName.substring(chapterWord.length())
.trim();
* @return the cover if any, or NULL
*/
static Image getDefaultCover(String subject) {
- if (subject != null && !subject.isEmpty()
- && Instance.getCoverDir() != null) {
+ if (subject != null && !subject.isEmpty() && Instance.getInstance().getCoverDir() != null) {
try {
- File fileCover = new File(Instance.getCoverDir(), subject);
+ File fileCover = new File(Instance.getInstance().getCoverDir(), subject);
return getImage(null, fileCover.toURI().toURL(), subject);
} catch (MalformedURLException e) {
}
}
InputStream in = null;
try {
- in = Instance.getCache().open(url, getSupport(url), true);
+ in = Instance.getInstance().getCache().open(url, getSupport(url), true);
return new Image(in);
} catch (IOException e) {
} finally {
// try for URLs
try {
for (String ext : getImageExt(true)) {
- if (Instance.getCache()
- .check(new URL(line + ext), true)) {
+ if (Instance.getInstance().getCache().check(new URL(line + ext), true)) {
url = new URL(line + ext);
break;
}
for (String ext : getImageExt(true)) {
try {
url = new URL(line + ext);
- Instance.getCache().refresh(url, support, true);
+ Instance.getInstance().getCache().refresh(url, support, true);
break;
} catch (IOException e) {
// no image with this ext
// refresh the cached file
if (url != null) {
try {
- Instance.getCache().refresh(url, support, true);
+ Instance.getInstance().getCache().refresh(url, support, true);
} catch (IOException e) {
// woops, broken image
url = null;
* in case of I/O error
*/
protected InputStream openInput(URL source) throws IOException {
- return Instance.getCache().open(source, this, false);
+ return Instance.getInstance().getCache().open(source, this, false);
}
/**
pgMeta.done(); // 10%
- File tmpDir = Instance.getTempFiles().createTempDir("info-text");
+ File tmpDir = Instance.getInstance().getTempFiles().createTempDir("info-text");
String basename = null;
Map<String, Image> images = new HashMap<String, Image>();
try {
images.put(uuid, new Image(zipIn));
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
if (pg.getProgress() < 85) {
}
String ext = "."
- + Instance.getConfig()
- .getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER)
- .toLowerCase();
+ + Instance.getInstance().getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
String coverName = meta.getUuid() + "_" + basename + ext;
Image cover = images.get(coverName);
images.remove(coverName);
chap.getParagraphs().add(
new Paragraph(images.get(uuid)));
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
}
for (int i = 1; true; i++) {
URL url = new URL(baseUrl + i + parameters);
try {
- InputStream pageI = Instance.getCache().open(url, this, false);
+ InputStream pageI = Instance.getInstance().getCache().open(url, this, false);
try {
if (IOUtils.readSmallStream(pageI).contains("Nobody here but us chickens!")) {
break;
protected URL getCanonicalUrl(URL source) {
if (isSetOriginalUrl(source)) {
try {
- Document doc = DataUtil.load(Instance.getCache().open(source, this, false), "UTF-8", source.toString());
+ Document doc = DataUtil.load(Instance.getInstance().getCache().open(source, this, false), "UTF-8", source.toString());
for (Element shortname : doc.getElementsByClass("set-shortname")) {
for (Element el : shortname.getElementsByTag("a")) {
if (!el.attr("href").isEmpty())
}
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
pages.add(new URL(line));
} catch (MalformedURLException e) {
- Instance.getTraceHandler().error(
- new IOException(
- "Parsing error, a link is not correctly parsed: "
- + line, e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Parsing error, a link is not correctly parsed: " + line, e));
}
}
}
StringBuilder builder = new StringBuilder();
for (URL page : pages) {
- InputStream pageIn = Instance.getCache().open(page, this, false);
+ InputStream pageIn = Instance.getInstance().getCache().open(page, this, false);
try {
String link = getKeyLine(pageIn, "id=\"img\"", "src=\"", "\"");
if (link != null && !link.isEmpty()) {
try {
return new File(fakeSource.toURI());
} catch (URISyntaxException e) {
- Instance.getTraceHandler()
- .error(new IOException(
- "Cannot get the source file from the info-text URL",
- e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot get the source file from the info-text URL", e));
}
return null;
try {
fakeIn.reset();
} catch (IOException e) {
- Instance.getTraceHandler()
- .error(new IOException(
- "Cannot reset the Epub Text stream", e));
+ Instance.getInstance().getTraceHandler().error(new IOException("Cannot reset the Epub Text stream", e));
}
return fakeIn;
ZipInputStream zipIn = null;
try {
zipIn = new ZipInputStream(in);
- tmpDir = Instance.getTempFiles().createTempDir(
- "fanfic-reader-parser");
+ tmpDir = Instance.getInstance().getTempFiles().createTempDir("fanfic-reader-parser");
File tmp = new File(tmpDir, "file.txt");
File tmpInfo = new File(tmpDir, "file.info");
try {
cover = new Image(zipIn);
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
} else if (entry.getName().equals(getDataPrefix() + "URL")) {
return sdf
.format(new Date(1000 * Long.parseLong(line)));
} catch (NumberFormatException e) {
- Instance.getTraceHandler().error(
- new IOException(
- "Cannot convert publication date: "
- + line, e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot convert publication date: " + line, e));
}
}
}
urls.add(new AbstractMap.SimpleEntry<String, URL>(
name.trim(), new URL(base + i + suffix)));
} catch (MalformedURLException e) {
- Instance.getTraceHandler()
- .error(new IOException(
- "Cannot parse chapter " + i
- + " url: "
- + (base + i + suffix), e));
+ Instance.getInstance().getTraceHandler().error(
+ new IOException("Cannot parse chapter " + i + " url: " + (base + i + suffix), e));
}
}
}
int pos = line.indexOf("<hr");
if (pos >= 0) {
boolean chaptered = false;
- for (String lang : Instance.getConfig().getList(
- Config.CONF_CHAPTER)) {
- String chapterWord = Instance.getConfig()
- .getStringX(Config.CONF_CHAPTER, lang);
+ for (String lang : Instance.getInstance().getConfig().getList(Config.CONF_CHAPTER)) {
+ String chapterWord = Instance.getInstance().getConfig().getStringX(Config.CONF_CHAPTER,
+ lang);
int posChap = line.indexOf(chapterWord + " ");
if (posChap < pos) {
chaptered = true;
urls.add(new AbstractMap.SimpleEntry<String, URL>(name,
new URL("http://www.fimfiction.net" + line)));
} catch (MalformedURLException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
}
private Map<Integer, String> chapterContents;
public FimfictionApi() throws IOException {
- if (Instance.getConfig().getBoolean(
- Config.LOGIN_FIMFICTION_APIKEY_FORCE_HTML, false)) {
- throw new IOException(
- "Configuration is set to force HTML scrapping");
+ if (Instance.getInstance().getConfig().getBoolean(Config.LOGIN_FIMFICTION_APIKEY_FORCE_HTML, false)) {
+ throw new IOException("Configuration is set to force HTML scrapping");
}
- String oauth = Instance.getConfig().getString(
- Config.LOGIN_FIMFICTION_APIKEY_TOKEN);
+ String oauth = Instance.getInstance().getConfig().getString(Config.LOGIN_FIMFICTION_APIKEY_TOKEN);
if (oauth == null || oauth.isEmpty()) {
- String clientId = Instance.getConfig().getString(
- Config.LOGIN_FIMFICTION_APIKEY_CLIENT_ID)
- + "";
- String clientSecret = Instance.getConfig().getString(
- Config.LOGIN_FIMFICTION_APIKEY_CLIENT_SECRET)
+ String clientId = Instance.getInstance().getConfig().getString(Config.LOGIN_FIMFICTION_APIKEY_CLIENT_ID)
+ "";
+ String clientSecret = Instance.getInstance().getConfig()
+ .getString(Config.LOGIN_FIMFICTION_APIKEY_CLIENT_SECRET) + "";
if (clientId.trim().isEmpty() || clientSecret.trim().isEmpty()) {
throw new IOException("API key required for the beta API v2");
oauth = generateOAuth(clientId, clientSecret);
- Instance.getConfig().setString(
- Config.LOGIN_FIMFICTION_APIKEY_TOKEN, oauth);
- Instance.getConfig().updateFile();
+ Instance.getInstance().getConfig().setString(Config.LOGIN_FIMFICTION_APIKEY_TOKEN, oauth);
+ Instance.getInstance().getConfig().updateFile();
}
this.oauth = oauth;
urlString = urlString.replace("[", "%5B").replace("]", "%5D");
URL url = new URL(urlString);
- InputStream jsonIn = Instance.getCache().open(url, this, false);
+ InputStream jsonIn = Instance.getInstance().getCache().open(url, this, false);
try {
return IOUtils.readSmallStream(jsonIn);
} finally {
// No need to use the oauth, cookies... for the cover
// Plus: it crashes on Android because of the referer
try {
- InputStream in = Instance.getCache().open(coverImageUrl, null,
- true);
+ InputStream in = Instance.getInstance().getCache().open(coverImageUrl, null, true);
try {
meta.setCover(new Image(in));
} finally {
in.close();
}
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException(
- "Cannot get the story cover, ignoring...", e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot get the story cover, ignoring...", e));
}
}
params.put("client_id", clientId);
params.put("client_secret", clientSecret);
params.put("grant_type", "client_credentials");
- InputStream in = Instance.getCache().openNoCache(url, null, params,
- null, null);
+ InputStream in = Instance.getInstance().getCache().openNoCache(url, null, params, null, null);
String jsonToken = IOUtils.readSmallStream(in);
in.close();
try {
source = txt.toURI().toURL();
} catch (MalformedURLException e) {
- Instance.getTraceHandler().error(
- new IOException("Cannot convert the right URL for "
- + source, e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot convert the right URL for " + source, e));
}
}
File basefile = new File(sourceInfoFile.getFile());
String ext = "."
- + Instance.getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER)
- .toLowerCase();
+ + Instance.getInstance().getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
// Without removing ext
cover = bsHelper.getImage(null, sourceInfoFile,
try {
return bsImages.getImage(this, new URL(cover.absUrl("src")));
} catch (MalformedURLException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
try {
urls.add(new AbstractMap.SimpleEntry<String, URL>(title, new URL(url)));
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
try {
conn.setRequestMethod("HEAD");
- conn.setRequestProperty("User-Agent", Instance.getConfig().getString(Config.NETWORK_USER_AGENT));
+ conn.setRequestProperty("User-Agent", Instance.getInstance().getConfig().getString(Config.NETWORK_USER_AGENT));
conn.setRequestProperty("Accept-Encoding", "gzip");
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Charset", "utf-8");
InputStream coverIn;
try {
- coverIn = Instance.getCache().open(new URL(coverUrl), this,
- true);
+ coverIn = Instance.getInstance().getCache().open(new URL(coverUrl), this, true);
try {
return new Image(coverIn);
} finally {
coverIn.close();
}
} catch (IOException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
}
}
StringBuilder builder = new StringBuilder();
- InputStream in = Instance.getCache().open(chapUrl, this, false);
+ InputStream in = Instance.getInstance().getCache().open(chapUrl, this, false);
try {
Element pageDoc = DataUtil.load(in, "UTF-8", chapUrl.toString());
Element content = pageDoc.getElementById("content");
* @return the description
*/
public String getDesc() {
- String desc = Instance.getTrans().getStringX(StringId.INPUT_DESC,
- this.name());
+ String desc = Instance.getInstance().getTrans().getStringX(StringId.INPUT_DESC, this.name());
if (desc == null) {
- desc = Instance.getTrans().getString(StringId.INPUT_DESC, this);
+ desc = Instance.getInstance().getTrans().getString(StringId.INPUT_DESC, this);
}
return desc;
try {
in.reset();
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException("Cannot reset the Text stream", e));
+ Instance.getInstance().getTraceHandler().error(new IOException("Cannot reset the Text stream", e));
}
return in;
Image cover = bsImages.getImage(this, sourceFile.getParentFile(), path);
if (cover != null) {
try {
- File tmp = Instance.getTempFiles().createTempFile(
- "test_cover_image");
+ File tmp = Instance.getInstance().getTempFiles().createTempFile("test_cover_image");
ImageUtils.getInstance().saveAsImage(cover, tmp, "png");
tmp.delete();
} catch (IOException e) {
try {
in.close();
} catch (IOException e) {
- Instance.getTraceHandler().error(
- new IOException(
- "Cannot close the text source file input", e));
+ Instance.getInstance().getTraceHandler()
+ .error(new IOException("Cannot close the text source file input", e));
}
}
file = assureNoTxt(file);
file = new File(file.getPath() + ".info");
} catch (URISyntaxException e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
file = null;
}
*/
static private String detectChapter(String line, int number) {
line = line.toUpperCase();
- for (String lang : Instance.getConfig().getList(Config.CONF_CHAPTER)) {
- String chapter = Instance.getConfig().getStringX(
- Config.CONF_CHAPTER, lang);
+ for (String lang : Instance.getInstance().getConfig().getList(Config.CONF_CHAPTER)) {
+ String chapter = Instance.getInstance().getConfig().getStringX(Config.CONF_CHAPTER, lang);
if (chapter != null && !chapter.isEmpty()) {
chapter = chapter.toUpperCase() + " ";
if (line.startsWith(chapter)) {
public void login() throws IOException {
// Note: this should not be necessary anymore
// (the "/guest" trick is enough)
- String login = Instance.getConfig().getString(
- Config.LOGIN_YIFFSTAR_USER);
- String password = Instance.getConfig().getString(
- Config.LOGIN_YIFFSTAR_PASS);
+ String login = Instance.getInstance().getConfig().getString(Config.LOGIN_YIFFSTAR_USER);
+ String password = Instance.getInstance().getConfig().getString(Config.LOGIN_YIFFSTAR_PASS);
if (login != null && !login.isEmpty() && password != null
&& !password.isEmpty()) {
// Cookies will actually be retained by the cache manager once
// logged in
- Instance.getCache()
- .openNoCache(new URL("https://www.sofurry.com/user/login"),
- this, post, null, null).close();
+ Instance.getInstance().getCache()
+ .openNoCache(new URL("https://www.sofurry.com/user/login"), this, post, null, null).close();
}
}
if (source.getPath().startsWith("/view")) {
source = guest(source.toString());
// NO CACHE because we don't want the NotLoggedIn message later
- InputStream in = Instance.getCache().openNoCache(source, this,
- null, null, null);
+ InputStream in = Instance.getInstance().getCache().openNoCache(source, this, null, null, null);
String line = getLine(in, "/browse/folder/", 0);
if (line != null) {
String[] tab = line.split("\"");
}
}
} catch (Exception e) {
- Instance.getTraceHandler().error(e);
+ Instance.getInstance().getTraceHandler().error(e);
}
return super.getCanonicalUrl(source);
List<Entry<String, URL>> chaps = getChapters(source, in, null);
if (!chaps.isEmpty()) {
- in = Instance.getCache().open(chaps.get(0).getValue(), this, true);
+ in = Instance.getInstance().getCache().open(chaps.get(0).getValue(), this, true);
String line = getLine(in, " name=\"og:image\"", 0);
if (line != null) {
int pos = -1;
class BasicSupportDeprecatedTest extends TestLauncher {
// quote chars
- private char openQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_SINGLE_QUOTE);
- private char closeQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_SINGLE_QUOTE);
- private char openDoubleQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_DOUBLE_QUOTE);
- private char closeDoubleQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_DOUBLE_QUOTE);
+ private char openQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_SINGLE_QUOTE);
+ private char closeQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_SINGLE_QUOTE);
+ private char openDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_DOUBLE_QUOTE);
+ private char closeDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
public BasicSupportDeprecatedTest(String[] args) {
super("BasicSupportDeprecated", args);
public void test() throws Exception {
BasicSupportEmpty support = new BasicSupportEmpty();
- char openDoubleQuote = Instance.getTrans()
+ char openDoubleQuote = Instance.getInstance().getTrans()
.getCharacter(StringId.OPEN_DOUBLE_QUOTE);
- char closeDoubleQuote = Instance.getTrans()
+ char closeDoubleQuote = Instance.getInstance().getTrans()
.getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
String content = null;
class BasicSupportUtilitiesTest extends TestLauncher {
// quote chars
- private char openQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_SINGLE_QUOTE);
- private char closeQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_SINGLE_QUOTE);
- private char openDoubleQuote = Instance.getTrans().getCharacter(
- StringId.OPEN_DOUBLE_QUOTE);
- private char closeDoubleQuote = Instance.getTrans().getCharacter(
- StringId.CLOSE_DOUBLE_QUOTE);
+ private char openQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_SINGLE_QUOTE);
+ private char closeQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_SINGLE_QUOTE);
+ private char openDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.OPEN_DOUBLE_QUOTE);
+ private char closeDoubleQuote = Instance.getInstance().getTrans().getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
public BasicSupportUtilitiesTest(String[] args) {
super("BasicSupportUtilities", args);
public void test() throws Exception {
BasicSupportParaPublic support = new BasicSupportParaPublic();
- char openDoubleQuote = Instance.getTrans()
+ char openDoubleQuote = Instance.getInstance().getTrans()
.getCharacter(StringId.OPEN_DOUBLE_QUOTE);
- char closeDoubleQuote = Instance.getTrans()
+ char closeDoubleQuote = Instance.getInstance().getTrans()
.getCharacter(StringId.CLOSE_DOUBLE_QUOTE);
String content = null;
BasicOutput.OutputType type) throws Exception {
final List<String> errors = new ArrayList<String>();
- TraceHandler previousTraceHandler = Instance.getTraceHandler();
- Instance.setTraceHandler(new TraceHandler(true, true, 0) {
+ TraceHandler previousTraceHandler = Instance.getInstance().getTraceHandler();
+ Instance.getInstance().setTraceHandler(new TraceHandler(true, true, 0) {
@Override
public void error(String message) {
errors.add(message);
return target;
} finally {
- Instance.setTraceHandler(previousTraceHandler);
+ Instance.getInstance().setTraceHandler(previousTraceHandler);
}
}
*/
public Test(String[] args, boolean urlsAllowed) throws IOException {
super("Fanfix", args);
- Instance.setTraceHandler(null);
+ Instance.getInstance().setTraceHandler(null);
addSeries(new BasicSupportUtilitiesTest(args));
addSeries(new BasicSupportDeprecatedTest(args));
addSeries(new LibraryTest(args));
// Only download files if allowed:
boolean offline = new File("test/OFFLINE").exists();
- Instance.getCache().setOffline(offline);
+ Instance.getInstance().getCache().setOffline(offline);
System.setProperty("CONFIG_DIR", tmpConfig.getAbsolutePath());
Instance.init(true);
- Instance.getCache().setOffline(offline);
+ Instance.getInstance().getCache().setOffline(offline);
TestLauncher tests = new Test(args, urlsAllowed);
tests.setDetails(verbose);
tempFiles.close();
// This is usually done in Fanfix.Main:
- Instance.getTempFiles().close();
+ Instance.getInstance().getTempFiles().close();
}
System.exit(result);