import be.nikiroo.fanfix.supported.InfoReader;
import be.nikiroo.utils.IOUtils;
import be.nikiroo.utils.Image;
-import be.nikiroo.utils.MarkableFileInputStream;
import be.nikiroo.utils.Progress;
/**
this.lastId = 0;
this.stories = null;
- this.sourceCovers = new HashMap<String, Image>();
+ this.sourceCovers = null;
baseDir.mkdirs();
}
@Override
public File getFile(String luid, Progress pg) {
- File[] files = getStories(pg).get(getInfo(luid));
+ Instance.getTraceHandler().trace(
+ this.getClass().getSimpleName() + ": get file for " + luid);
+
+ File file = null;
+ String mess = "no file found for ";
+
+ MetaData meta = getInfo(luid);
+ Instance.getTraceHandler().trace("(info is: " + meta + ")");
+
+ File[] files = getStories(pg).get(meta);
if (files != null) {
- return files[1];
+ mess = "file retrieved for ";
+ file = files[1];
}
- return null;
+ Instance.getTraceHandler().trace(
+ this.getClass().getSimpleName() + ": " + mess + luid);
+
+ return file;
}
@Override
}
@Override
- protected void invalidateInfo(String luid) {
+ protected synchronized void updateInfo(MetaData meta) {
+ deleteInfo();
+ }
+
+ @Override
+ protected void deleteInfo(String luid) {
stories = null;
- sourceCovers = new HashMap<String, Image>();
+ sourceCovers = null;
}
@Override
}
}
- invalidateInfo();
+ deleteInfo();
}
@Override
public Image getSourceCover(String source) {
+ if (sourceCovers == null) {
+ getStories(null);
+ }
+
if (!sourceCovers.containsKey(source)) {
sourceCovers.put(source, super.getSourceCover(source));
}
@Override
public void setSourceCover(String source, String luid) {
+ if (sourceCovers == null) {
+ getStories(null);
+ }
+
sourceCovers.put(source, getCover(luid));
- File cover = new File(getExpectedDir(source), ".cover.png");
+ File cover = new File(getExpectedDir(source), ".cover");
try {
Instance.getCache().saveAsImage(sourceCovers.get(source), cover,
true);
pg.add(1);
}
- invalidateInfo();
+ deleteInfo();
pg.done();
return;
}
}
super.imprt(other, luid, pg);
-
- invalidateInfo();
}
/**
* {@link LocalLibrary#baseDir}.
* <p>
* Will use a cached list when possible (see
- * {@link BasicLibrary#invalidateInfo()}).
+ * {@link BasicLibrary#deleteInfo()}).
*
* @param pg
* the optional {@link Progress}
*
- * @return the list of stories
+ * @return the list of stories (for each item, the first {@link File} is the info file, the
+ * second file is the target {@link File})
*/
private synchronized Map<MetaData, File[]> getStories(Progress pg) {
if (pg == null) {
if (stories == null) {
stories = new HashMap<MetaData, File[]>();
+ sourceCovers = new HashMap<String, Image>();
lastId = 0;
// not normal!!
throw new IOException(
"Cannot understand the LUID of "
- + infoFile
- + ": "
- + (meta == null ? "[meta is NULL]"
- : meta.getLuid()), e);
+ + infoFile + ": "
+ + meta.getLuid(), e);
}
} catch (IOException e) {
// We should not have not-supported files in the
* the cover image
*/
void setSourceCover(String source, Image coverImage) {
+ if (sourceCovers == null) {
+ getStories(null);
+ }
+
sourceCovers.put(source, coverImage);
- File cover = new File(getExpectedDir(source), ".cover.png");
+ File cover = new File(getExpectedDir(source), ".cover");
try {
Instance.getCache().saveAsImage(sourceCovers.get(source), cover,
true);