X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FText.java;h=fb4a0ad2a7d97c73dcbe37a025df58a0e8f931c4;hb=86d49dbc7c3eca665b7823b5de49bb73a31c7722;hp=67156956ee14d1389197d02b888b02b1f4a34336;hpb=ed08c17162aa8cbdb0cbe6a6045815b987236b9f;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/supported/Text.java b/src/be/nikiroo/fanfix/supported/Text.java index 6715695..fb4a0ad 100644 --- a/src/be/nikiroo/fanfix/supported/Text.java +++ b/src/be/nikiroo/fanfix/supported/Text.java @@ -1,6 +1,5 @@ package be.nikiroo.fanfix.supported; -import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -14,6 +13,7 @@ import java.util.Scanner; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.bundles.Config; import be.nikiroo.fanfix.data.MetaData; +import be.nikiroo.utils.Image; import be.nikiroo.utils.Progress; /** @@ -28,12 +28,12 @@ import be.nikiroo.utils.Progress; * number *
  • A description of the story must be given as chapter number 0
  • *
  • A cover may be present, with the same filename but a PNG, JPEG or JPG - * extension * * * @author niki */ -class Text extends BasicSupport { +class Text extends BasicSupport_Deprecated { @Override protected boolean isHtml() { return false; @@ -57,7 +57,7 @@ class Text extends BasicSupport { meta.setPublisher(""); meta.setUuid(source.toString()); meta.setLuid(""); - meta.setLang(getLang(source, reset(in))); // default is EN + meta.setLang(getLang(reset(in))); // default is EN meta.setSubject(getSubject(source)); meta.setType(getType().toString()); meta.setImageDocument(false); @@ -77,7 +77,7 @@ class Text extends BasicSupport { } - private String getLang(URL source, InputStream in) throws IOException { + private String getLang(InputStream in) { @SuppressWarnings("resource") Scanner scan = new Scanner(in, "UTF-8"); scan.useDelimiter("\\n"); @@ -103,14 +103,14 @@ class Text extends BasicSupport { return lang; } - private String getTitle(InputStream in) throws IOException { + private String getTitle(InputStream in) { @SuppressWarnings("resource") Scanner scan = new Scanner(in, "UTF-8"); scan.useDelimiter("\\n"); return scan.next(); } - private String getAuthor(InputStream in) throws IOException { + private String getAuthor(InputStream in) { @SuppressWarnings("resource") Scanner scan = new Scanner(in, "UTF-8"); scan.useDelimiter("\\n"); @@ -123,10 +123,10 @@ class Text extends BasicSupport { author = authorDate.substring(0, pos); } - return fixAuthor(author); + return BasicSupportHelper.fixAuthor(author); } - private String getDate(InputStream in) throws IOException { + private String getDate(InputStream in) { @SuppressWarnings("resource") Scanner scan = new Scanner(in, "UTF-8"); scan.useDelimiter("\\n"); @@ -151,12 +151,12 @@ class Text extends BasicSupport { return getChapterContent(source, in, 0, null); } - private BufferedImage getCover(URL source) throws IOException { + private Image getCover(URL source) { String path; try { path = new File(source.toURI()).getPath(); } catch (URISyntaxException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); path = null; } @@ -188,14 +188,17 @@ class Text extends BasicSupport { final URL value = source; final String key = chapName; chaps.add(new Entry() { + @Override public URL setValue(URL value) { return null; } + @Override public URL getValue() { return value; } + @Override public String getKey() { return key; } @@ -233,20 +236,55 @@ class Text extends BasicSupport { @Override protected boolean supports(URL url) { + return supports(url, false); + } + + /** + * Check if we supports this {@link URL}, that is, if the info file can be + * found OR not found. + * + * @param url + * the {@link URL} to check + * @param info + * TRUE to require the info file, FALSE to forbid the info file + * + * @return TRUE if it is supported + */ + protected boolean supports(URL url, boolean info) { + boolean infoPresent = false; if ("file".equals(url.getProtocol())) { File file; try { file = new File(url.toURI()); + file = assureNoTxt(file); file = new File(file.getPath() + ".info"); } catch (URISyntaxException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); file = null; } - return file == null || !file.exists(); + infoPresent = (file != null && file.exists()); } - return false; + return infoPresent == info; + } + + /** + * Remove the ".txt" extension if it is present. + * + * @param file + * the file to process + * + * @return the same file or a copy of it without the ".txt" extension if it + * was present + */ + protected File assureNoTxt(File file) { + if (file.getName().endsWith(".txt")) { + file = new File(file.getPath().substring(0, + file.getPath().length() - 4)); + } + + return file; } /**