X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FBasicReader.java;h=0bcfd931e1b505da7e28fb43897a46a839f17ab4;hb=68e370a441d8e6b10bfaa904ecacb29e7d6160d8;hp=eabbe7e4408ddf758c623fd65c835e1a3643a95a;hpb=333f0e7b5e333e8f6222881ce35398f403fc4121;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/BasicReader.java b/src/be/nikiroo/fanfix/reader/BasicReader.java index eabbe7e..0bcfd93 100644 --- a/src/be/nikiroo/fanfix/reader/BasicReader.java +++ b/src/be/nikiroo/fanfix/reader/BasicReader.java @@ -1,6 +1,8 @@ package be.nikiroo.fanfix.reader; +import java.io.File; import java.io.IOException; +import java.net.MalformedURLException; import java.net.URL; import be.nikiroo.fanfix.Instance; @@ -8,6 +10,7 @@ import be.nikiroo.fanfix.Library; import be.nikiroo.fanfix.bundles.Config; import be.nikiroo.fanfix.data.Story; import be.nikiroo.fanfix.supported.BasicSupport; +import be.nikiroo.utils.Progress; /** * The class that handles the different {@link Story} readers you can use. @@ -78,23 +81,16 @@ public abstract class BasicReader { * * @param luid * the {@link Story} ID + * @param pg + * the optional progress reporter + * * @throws IOException * in case of I/O error */ - public void setStory(String luid) throws IOException { - story = Instance.getLibrary().getStory(luid); + public void setStory(String luid, Progress pg) throws IOException { + story = Instance.getLibrary().getStory(luid, pg); if (story == null) { - // if the LUID is wrong and < 3, pad it to 3 chars with "0" then - // retry (since LUIDs are %03d) - if (luid != null && luid.length() < 3) { - while (luid.length() < 3) { - luid = "0" + luid; - } - setStory(luid); - } else { - throw new IOException("Cannot retrieve story from library: " - + luid); - } + throw new IOException("Cannot retrieve story from library: " + luid); } } @@ -103,16 +99,19 @@ public abstract class BasicReader { * * @param source * the {@link Story} {@link URL} + * @param pg + * the optional progress reporter + * * @throws IOException * in case of I/O error */ - public void setStory(URL source) throws IOException { + public void setStory(URL source, Progress pg) throws IOException { BasicSupport support = BasicSupport.getSupport(source); if (support == null) { throw new IOException("URL not supported: " + source.toString()); } - story = support.process(source); + story = support.process(source, pg); if (story == null) { throw new IOException( "Cannot retrieve story from external source: " @@ -193,4 +192,32 @@ public abstract class BasicReader { public static void setDefaultReaderType(ReaderType defaultType) { BasicReader.defaultType = defaultType; } + + /** + * Return an {@link URL} from this {@link String}, be it a file path or an + * actual {@link URL}. + * + * @param sourceString + * the source + * + * @return the corresponding {@link URL} + * + * @throws MalformedURLException + * if this is neither a file nor a conventional {@link URL} + */ + public static URL getUrl(String sourceString) throws MalformedURLException { + if (sourceString == null || sourceString.isEmpty()) { + throw new MalformedURLException("Empty url"); + } + + URL source = null; + try { + source = new URL(sourceString); + } catch (MalformedURLException e) { + File sourceFile = new File(sourceString); + source = sourceFile.toURI().toURL(); + } + + return source; + } }