tests: fix NPE, add BasicSupportUtilities tests
[nikiroo-utils.git] / src / be / nikiroo / fanfix / supported / Epub.java
index 5a1fe43ce1e87929ee70e11e43c4d461f4ba3fc1..82af11855fdc299226fe2f52ca536f17a07d1d00 100644 (file)
@@ -1,7 +1,6 @@
 package be.nikiroo.fanfix.supported;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URISyntaxException;
@@ -17,8 +16,8 @@ import be.nikiroo.fanfix.Instance;
 import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.utils.IOUtils;
 import be.nikiroo.utils.Image;
-import be.nikiroo.utils.MarkableFileInputStream;
 import be.nikiroo.utils.StringUtils;
+import be.nikiroo.utils.streams.MarkableFileInputStream;
 
 /**
  * Support class for EPUB files created with this program (as we need some
@@ -34,11 +33,6 @@ class Epub extends InfoText {
        private URL fakeSource;
        private InputStream fakeIn;
 
-       @Override
-       public String getSourceName() {
-               return "epub";
-       }
-
        public File getSourceFileOriginal() {
                return super.getSourceFile();
        }
@@ -117,7 +111,7 @@ class Epub extends InfoText {
                                        String entryLName = entry.getName().toLowerCase();
 
                                        boolean imageEntry = false;
-                                       for (String ext : BasicSupportImages.getImageExt(false)) {
+                                       for (String ext : bsImages.getImageExt(false)) {
                                                if (entryLName.endsWith(ext)) {
                                                        imageEntry = true;
                                                }
@@ -179,15 +173,11 @@ class Epub extends InfoText {
                        }
 
                        if (tmp.exists()) {
-                               this.fakeIn = new MarkableFileInputStream(new FileInputStream(
-                                               tmp));
+                               this.fakeIn = new MarkableFileInputStream(tmp);
                        }
 
                        if (tmpInfo.exists()) {
                                meta = InfoReader.readMeta(tmpInfo, true);
-                               if (cover != null) {
-                                       meta.setCover(cover);
-                               }
                                tmpInfo.delete();
                        } else {
                                if (title == null || title.isEmpty()) {
@@ -201,13 +191,23 @@ class Epub extends InfoText {
                                meta = new MetaData();
                                meta.setLang("en");
                                meta.setTags(new ArrayList<String>());
-                               meta.setSource(getSourceName());
+                               meta.setSource(getType().getSourceName());
                                meta.setUuid(url);
                                meta.setUrl(url);
                                meta.setTitle(title);
                                meta.setAuthor(author);
                                meta.setImageDocument(isImagesDocumentByDefault());
                        }
+
+                       if (meta.getCover() == null) {
+                               if (cover != null) {
+                                       meta.setCover(cover);
+                               } else {
+                                       meta.setCover(InfoReader
+                                                       .getCoverByName(getSourceFileOriginal().toURI()
+                                                                       .toURL()));
+                               }
+                       }
                } finally {
                        if (zipIn != null) {
                                zipIn.close();