Merge branch 'subtree'
authorNiki Roo <niki@nikiroo.be>
Fri, 1 May 2020 09:09:34 +0000 (11:09 +0200)
committerNiki Roo <niki@nikiroo.be>
Fri, 1 May 2020 09:09:34 +0000 (11:09 +0200)
src/be/nikiroo/fanfix/library/BasicLibrary.java
src/be/nikiroo/fanfix/library/LocalLibrary.java
src/be/nikiroo/fanfix/library/RemoteLibraryServer.java
src/be/nikiroo/fanfix/supported/BasicSupport.java
src/be/nikiroo/fanfix/supported/BasicSupport_Deprecated.java
src/be/nikiroo/fanfix/supported/Cbz.java

index 82f3fa28a0f53c6c94671e86ef491670f871145c..d435f8d7ec7fd3e2f09242339eefb9ff6fa74d93 100644 (file)
@@ -587,7 +587,6 @@ abstract public class BasicLibrary {
                }
 
                Story story = save(support.process(pgProcess), pgSave);
-               pg.setName(story.getMeta().getTitle());
                pg.done();
 
                return story.getMeta();
index aec89721753252783a6b3f9c3468e4afd4b7f9d1..6720972682939785226de86a201ef2c4c4c7d68f 100644 (file)
@@ -718,10 +718,6 @@ public class LocalLibrary extends BasicLibrary {
                }
 
                for (File infoFileOrSubdir : infoFilesAndSubdirs) {
-                       if (pgFiles != null) {
-                               pgFiles.setName(infoFileOrSubdir.getName());
-                       }
-
                        if (infoFileOrSubdir.isDirectory()) {
                                addToStories(stories, null, infoFileOrSubdir);
                        } else {
index 4f89a1fa19263c9d4bedf513274442660d3a023f..4ee3f74d221c3497978cc57d70fc935fd466579f 100644 (file)
@@ -202,15 +202,7 @@ public class RemoteLibraryServer extends ServerObject {
                                Progress pg = createPgForwarder(action);
 
                                for (MetaData meta : Instance.getInstance().getLibrary().getMetas(pg)) {
-                                       MetaData light;
-                                       if (meta.getCover() == null) {
-                                               light = meta;
-                                       } else {
-                                               light = meta.clone();
-                                               light.setCover(null);
-                                       }
-
-                                       metas.add(light);
+                                       metas.add(removeCover(meta));
                                }
 
                                forcePgDoneSent(pg);
@@ -413,16 +405,19 @@ public class RemoteLibraryServer extends ServerObject {
         * @return TRUE if it was a progress event, FALSE if not
         */
        static boolean updateProgress(Progress pg, Object rep) {
-               if (rep instanceof Integer[]) {
-                       Integer[] a = (Integer[]) rep;
-                       if (a.length == 3) {
-                               int min = a[0];
-                               int max = a[1];
-                               int progress = a[2];
+               if (rep instanceof Object[]) {
+                       Object[] a = (Object[]) rep;
+                       if (a.length >= 3) {
+                               int min = (Integer)a[0];
+                               int max = (Integer)a[1];
+                               int progress = (Integer)a[2];
 
                                if (min >= 0 && min <= max) {
                                        pg.setMinMax(min, max);
                                        pg.setProgress(progress);
+                                       if (a.length >= 4) {
+                                               pg.put("meta", a[3]);
+                                       }
 
                                        return true;
                                }
@@ -451,27 +446,36 @@ public class RemoteLibraryServer extends ServerObject {
                };
 
                final Integer[] p = new Integer[] { -1, -1, -1 };
+               final Object[] pMeta = new MetaData[1];
                final Long[] lastTime = new Long[] { new Date().getTime() };
                pg.addProgressListener(new ProgressListener() {
                        @Override
                        public void progress(Progress progress, String name) {
+                               Object meta = pg.get("meta");
+                               if (meta instanceof MetaData) {
+                                       meta = removeCover((MetaData)meta);
+                               }
+                               
                                int min = pg.getMin();
                                int max = pg.getMax();
-                               int relativeProgress = min
+                               int rel = min
                                                + (int) Math.round(pg.getRelativeProgress()
                                                                * (max - min));
-
+                               
+                               boolean samePg = p[0] == min && p[1] == max && p[2] == rel;
+                               
                                // Do not re-send the same value twice over the wire,
                                // unless more than 2 seconds have elapsed (to maintain the
                                // connection)
-                               if ((p[0] != min || p[1] != max || p[2] != relativeProgress)
+                               if (!samePg || !same(pMeta[0], meta) //
                                                || (new Date().getTime() - lastTime[0] > 2000)) {
                                        p[0] = min;
                                        p[1] = max;
-                                       p[2] = relativeProgress;
+                                       p[2] = rel;
+                                       pMeta[0] = meta;
 
                                        try {
-                                               action.send(new Integer[] { min, max, relativeProgress });
+                                               action.send(new Object[] { min, max, rel, meta });
                                                action.rec();
                                        } catch (Exception e) {
                                                getTraceHandler().error(e);
@@ -486,6 +490,13 @@ public class RemoteLibraryServer extends ServerObject {
 
                return pg;
        }
+       
+       private boolean same(Object obj1, Object obj2) {
+               if (obj1 == null || obj2 == null)
+                       return obj1 == null && obj2 == null;
+
+               return obj1.equals(obj2);
+       }
 
        // with 30 seconds timeout
        private void forcePgDoneSent(Progress pg) {
@@ -499,4 +510,16 @@ public class RemoteLibraryServer extends ServerObject {
                        }
                }
        }
+       
+       private MetaData removeCover(MetaData meta) {
+               MetaData light;
+               if (meta.getCover() == null) {
+                       light = meta;
+               } else {
+                       light = meta.clone();
+                       light.setCover(null);
+               }
+               
+               return light;
+       }
 }
index ba2164cacac6f077ab1f4d1c97e23b9d9a56f31d..35a6ac353be34fe8c52607fdb9f963d895c2603b 100644 (file)
@@ -273,6 +273,7 @@ public abstract class BasicSupport {
                        meta.setCreationDate(StringUtils.fromTime(new Date().getTime()));
                }
                story.setMeta(meta);
+               pg.put("meta", meta);
 
                pg.setProgress(50);
 
@@ -344,8 +345,7 @@ public abstract class BasicSupport {
                pg.addProgress(pgMeta, 10);
                Story story = processMeta(true, pgMeta);
                pgMeta.done(); // 10%
-
-               pg.setName(story.getMeta().getTitle());
+               pg.put("meta", story.getMeta());
 
                Progress pgGetChapters = new Progress();
                pg.addProgress(pgGetChapters, 10);
@@ -392,7 +392,6 @@ public abstract class BasicSupport {
                        pgChaps.done();
                }
 
-               pg.setName(story.getMeta().getTitle());
                pg.done();
 
                return story;
index 4a7b65b93d66c1899853888a759842e49e92ff9f..47cb7a2c94ed2b965e865e398638d683a8967898 100644 (file)
@@ -209,6 +209,7 @@ public abstract class BasicSupport_Deprecated extends BasicSupport {
                                meta.setCreationDate(StringUtils.fromTime(new Date().getTime()));
                        }
                        story.setMeta(meta);
+                       pg.put("meta", meta);
 
                        pg.setProgress(50);
 
@@ -263,12 +264,11 @@ public abstract class BasicSupport_Deprecated extends BasicSupport {
                        Progress pgMeta = new Progress();
                        pg.addProgress(pgMeta, 10);
                        Story story = processMeta(url, false, true, pgMeta);
+                       pg.put("meta", story.getMeta());
                        if (!pgMeta.isDone()) {
                                pgMeta.setProgress(pgMeta.getMax()); // 10%
                        }
 
-                       pg.setName("Retrieving " + story.getMeta().getTitle());
-
                        setCurrentReferer(url);
 
                        Progress pgGetChapters = new Progress();
index cf6033523a05cbb509ebab2052c2d285cfdffd4d..a6188ec55085467b1306f5a9ac91e0083bdf014d 100644 (file)
@@ -73,8 +73,6 @@ class Cbz extends Epub {
 
                pgMeta.done(); // 10%
                
-               pg.setName(meta.getTitle());
-
                File tmpDir = Instance.getInstance().getTempFiles().createTempDir("info-text");
                String basename = null;
 
@@ -197,9 +195,7 @@ class Cbz extends Epub {
                        }
                }
 
-               pg.setName(meta.getTitle());
                pg.done();
-               
                return story;
        }