gui: change name, author
[fanfix.git] / src / be / nikiroo / fanfix / library / RemoteLibraryServer.java
index 0378723a403da3942f02322fa0454c5b2c4a63e2..aa5f3056a2536981850498c17fb5a6e560bd1f4f 100644 (file)
@@ -41,7 +41,7 @@ import be.nikiroo.utils.serial.server.ServerObject;
  * the LUID</li>
  * <li>[md5] DELETE_STORY [luid]: delete the story of LUID luid</li>
  * <li>[md5] GET_COVER [luid]: return the cover of the story</li>
- * <li>[md5] GET_SOURCE_COVER [source]: return the cover for this source</li>
+ * <li>[md5] GET_CUSTOM_SOURCE_COVER [source]: return the cover for this source</li>
  * <li>[md5] SET_SOURCE_COVER [source], [luid]: set the default cover for the
  * given source to the cover of the story denoted by luid</li>
  * <li>[md5] CHANGE_SOURCE [luid] [new source]: change the source of the story
@@ -92,7 +92,7 @@ public class RemoteLibraryServer extends ServerObject {
                        }
                }
 
-               String trace = "[" + command + "] ";
+               String trace = "[ " + command + "] ";
                for (Object arg : args) {
                        trace += arg + " ";
                }
@@ -103,12 +103,39 @@ public class RemoteLibraryServer extends ServerObject {
                        return null;
                }
 
+               long start = new Date().getTime();
+               Object rep = doRequest(action, command, args);
+
+               getTraceHandler().trace(
+                               String.format("[>%s]: %d ms", command,
+                                               (new Date().getTime() - start)));
+
+               return rep;
+       }
+
+       private Object doRequest(ConnectActionServerObject action, String command,
+                       Object[] args) throws NoSuchFieldException, NoSuchMethodException,
+                       ClassNotFoundException, IOException {
                if ("PING".equals(command)) {
                        return "PONG";
                } else if ("GET_METADATA".equals(command)) {
                        if ("*".equals(args[0])) {
                                Progress pg = createPgForwarder(action);
-                               List<MetaData> metas = Instance.getLibrary().getMetas(pg);
+
+                               List<MetaData> metas = new ArrayList<MetaData>();
+
+                               for (MetaData meta : Instance.getLibrary().getMetas(pg)) {
+                                       MetaData light;
+                                       if (meta.getCover() == null) {
+                                               light = meta;
+                                       } else {
+                                               light = meta.clone();
+                                               light.setCover(null);
+                                       }
+
+                                       metas.add(light);
+                               }
+
                                forcePgDoneSent(pg);
                                return metas.toArray(new MetaData[] {});
                        }
@@ -153,15 +180,15 @@ public class RemoteLibraryServer extends ServerObject {
                        Instance.getLibrary().delete((String) args[0]);
                } else if ("GET_COVER".equals(command)) {
                        return Instance.getLibrary().getCover((String) args[0]);
-               } else if ("GET_SOURCE_COVER".equals(command)) {
-                       return Instance.getLibrary().getSourceCover((String) args[0]);
+               } else if ("GET_CUSTOM_SOURCE_COVER".equals(command)) {
+                       return Instance.getLibrary().getCustomSourceCover((String) args[0]);
                } else if ("SET_SOURCE_COVER".equals(command)) {
                        Instance.getLibrary().setSourceCover((String) args[0],
                                        (String) args[1]);
-               } else if ("CHANGE_SOURCE".equals(command)) {
+               } else if ("CHANGE_STA".equals(command)) {
                        Progress pg = createPgForwarder(action);
-                       Instance.getLibrary().changeSource((String) args[0],
-                                       (String) args[1], pg);
+                       Instance.getLibrary().changeSTA((String) args[0], (String) args[1],
+                                       (String) args[2], (String) args[3], pg);
                        forcePgDoneSent(pg);
                } else if ("EXIT".equals(command)) {
                        stop(0, false);
@@ -304,9 +331,10 @@ public class RemoteLibraryServer extends ServerObject {
                                                Instance.getTraceHandler().error(e);
                                        }
 
-                                       isDoneForwarded[0] = pg.isDone();
                                        lastTime[0] = new Date().getTime();
                                }
+
+                               isDoneForwarded[0] = (pg.getProgress() >= pg.getMax());
                        }
                });