* @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());
}
@Override
- public synchronized Story getStory(Progress pg) {
+ public synchronized Story getStory(Progress pg) throws IOException {
if (story == null) {
story = getLibrary().getStory(meta.getLuid(), pg);
}
.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;
tags.append(tag);
}
+ // TODO: i18n
metaDesc.put("Author", meta.getAuthor());
metaDesc.put("Publication date", formatDate(meta.getDate()));
metaDesc.put("Published on", meta.getPublisher());
metaDesc.put("URL", meta.getUrl());
- metaDesc.put("Word count", format(meta.getWords()));
+ String count = "";
+ if (meta.getWords() > 0) {
+ count = StringUtils.formatNumber(meta.getWords());
+ }
+ if (meta.isImageDocument()) {
+ metaDesc.put("Number of images", count);
+ } else {
+ metaDesc.put("Number of words", count);
+ }
metaDesc.put("Source", meta.getSource());
metaDesc.put("Subject", meta.getSubject());
metaDesc.put("Language", meta.getLang());
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() });
}
if (proc != null && sync) {
- while (proc.isAlive()) {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- }
- }
- }
- }
-
- static private String format(long value) {
- String display = "";
-
- while (value > 0) {
- if (!display.isEmpty()) {
- display = "." + display;
+ try {
+ proc.waitFor();
+ } catch (InterruptedException e) {
}
- display = (value % 1000) + display;
- value = value / 1000;
}
-
- return display;
}
static private String formatDate(String date) {
long ms = 0;
- try {
- ms = StringUtils.toTime(date);
- } catch (ParseException e) {
- }
-
- if (ms <= 0) {
- SimpleDateFormat sdf = new SimpleDateFormat(
- "yyyy-MM-dd'T'HH:mm:ssXXX");
+ if (date != null && !date.isEmpty()) {
try {
- ms = sdf.parse(date).getTime();
+ ms = StringUtils.toTime(date);
} catch (ParseException e) {
}
+
+ if (ms <= 0) {
+ SimpleDateFormat sdf = new SimpleDateFormat(
+ "yyyy-MM-dd'T'HH:mm:ssSSS");
+ try {
+ ms = sdf.parse(date).getTime();
+ } catch (ParseException e) {
+ }
+ }
+
+ if (ms > 0) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ return sdf.format(new Date(ms));
+ }
}
- if (ms > 0) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- return sdf.format(new Date(ms));
+ if (date == null) {
+ date = "";
}
// :(