package be.nikiroo.fanfix.supported;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import be.nikiroo.fanfix.data.Chapter;
import be.nikiroo.fanfix.data.Paragraph;
import be.nikiroo.fanfix.data.Story;
+import be.nikiroo.utils.Image;
import be.nikiroo.utils.Progress;
/**
pg.setMinMax(0, 100);
}
- Story story = processMeta(url, false, true);
+ Progress pgMeta = new Progress();
+ pg.addProgress(pgMeta, 10);
+ Story story = processMeta(url, false, true, pgMeta);
+ pgMeta.done(); // 10%
+
story.setChapters(new ArrayList<Chapter>());
Chapter chap = new Chapter(1, null);
story.getChapters().add(chap);
ZipInputStream zipIn = new ZipInputStream(getInput());
- pg.setProgress(10);
- List<String> images = new ArrayList<String>();
+ Map<String, Image> images = new HashMap<String, Image>();
for (ZipEntry entry = zipIn.getNextEntry(); entry != null; entry = zipIn
.getNextEntry()) {
if (!entry.isDirectory()
if (imageEntry) {
String uuid = meta.getUuid() + "_" + entry.getName();
- images.add(uuid);
try {
- Instance.getCache().addToCache(zipIn, uuid);
+ images.put(uuid, new Image(zipIn));
} catch (Exception e) {
- Instance.syserr(e);
+ Instance.getTraceHandler().error(e);
+ }
+
+ if (pg.getProgress() < 85) {
+ pg.add(1);
}
}
}
}
- pg.setProgress(80);
+ pg.setProgress(85);
+
+ // ZIP order is not correct for us
+ List<String> imagesList = new ArrayList<String>(images.keySet());
+ Collections.sort(imagesList);
- // ZIP order is not sure
- Collections.sort(images);
pg.setProgress(90);
- for (String uuid : images) {
+ for (String uuid : imagesList) {
try {
- chap.getParagraphs().add(
- new Paragraph(new File(uuid).toURI().toURL()));
+ chap.getParagraphs().add(new Paragraph(images.get(uuid)));
} catch (Exception e) {
- Instance.syserr(e);
+ Instance.getTraceHandler().error(e);
}
}
+ if (meta.getCover() == null && !images.isEmpty()) {
+ meta.setCover(images.get(imagesList.get(0)));
+ meta.setFakeCover(true);
+ }
+
pg.setProgress(100);
return story;
}