import java.io.File;
import java.io.IOException;
import java.net.URL;
+import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
* @author niki
*/
abstract public class BasicLibrary {
+ /**
+ * A {@link BasicLibrary} status.
+ *
+ * @author niki
+ */
+ public enum Status {
+ /** The library is ready. */
+ READY,
+ /** The library is invalid (not correctly set up). */
+ INVALID,
+ /** You are not allowed to access this library. */
+ UNAUTORIZED,
+ /** The library is currently out of commission. */
+ UNAVAILABLE,
+ }
+
/**
* Return a name for this library (the UI may display this).
* <p>
return "";
}
+ /**
+ * The library status.
+ *
+ * @return the current status
+ */
+ public Status getStatus() {
+ return Status.READY;
+ }
+
/**
* Retrieve the main {@link File} corresponding to the given {@link Story},
* which can be passed to an external reader or instance.
throws IOException;
/**
- * Refresh the {@link BasicLibrary}, that is, make sure all stories are
+ * Refresh the {@link BasicLibrary}, that is, make sure all metas are
* loaded.
*
- * @param full
- * force the full content of the stories to be loaded, not just
- * the {@link MetaData}
- *
* @param pg
* the optional progress reporter
*/
- public void refresh(boolean full, Progress pg) {
- if (full) {
- // TODO: progress
- List<MetaData> metas = getMetas(pg);
- for (MetaData meta : metas) {
- getStory(meta.getLuid(), null);
- }
- } else {
- getMetas(pg);
- }
+ public void refresh(Progress pg) {
+ getMetas(pg);
}
/**
if (type != null) {
story = BasicSupport.getSupport(type).process(url,
pgProcess);
+ // Because we do not want to clear the meta cache:
+ meta.setCover(story.getMeta().getCover());
story.setMeta(meta);
+ //
} else {
throw new IOException("Unknown type: " + meta.getType());
}
} catch (IOException e) {
// We should not have not-supported files in the
// library
- Instance.getTraceHandler().error(new IOException(
- "Cannot load file from library: " + file, e));
+ Instance.getTraceHandler().error(
+ new IOException("Cannot load file from library: "
+ + file, e));
} finally {
pgProcess.done();
pg.done();
*
* @return the imported {@link Story}
*
+ * @throws UnknownHostException
+ * if the host is not supported
* @throws IOException
* in case of I/O error
*/
public Story imprt(URL url, Progress pg) throws IOException {
BasicSupport support = BasicSupport.getSupport(url);
if (support == null) {
- throw new IOException("URL not supported: " + url.toString());
+ throw new UnknownHostException("" + url);
}
return save(support.process(url, pg), null);
pg.addProgress(pgOut, 1);
}
- BasicOutput out = BasicOutput.getOutput(type, false);
+ BasicOutput out = BasicOutput.getOutput(type, false, false);
if (out == null) {
throw new IOException("Output type not supported: " + type);
}