update nikiroo-utils, remote lib errors need some work
authorNiki Roo <niki@nikiroo.be>
Tue, 30 Apr 2019 20:38:24 +0000 (22:38 +0200)
committerNiki Roo <niki@nikiroo.be>
Tue, 30 Apr 2019 20:38:24 +0000 (22:38 +0200)
libs/nikiroo-utils-4.7.2-dev-sources.jar
src/be/nikiroo/fanfix/library/BasicLibrary.java
src/be/nikiroo/fanfix/library/RemoteLibrary.java
src/be/nikiroo/fanfix/library/RemoteLibraryServer.java

index de706762501896f25a59e0ea9adabb3e9287d001..1e960e954c8d031ad642643fbb52d1058330cb0a 100644 (file)
Binary files a/libs/nikiroo-utils-4.7.2-dev-sources.jar and b/libs/nikiroo-utils-4.7.2-dev-sources.jar differ
index 7f7a09dd528d63ce0322150de77c1c4bf683c4a8..f96506d9f43bc42feef62460947543487430861f 100644 (file)
@@ -44,7 +44,7 @@ abstract public class BasicLibrary {
                /** The library is invalid (not correctly set up). */
                INVALID,
                /** You are not allowed to access this library. */
-               UNAUTORIZED,
+               UNAUTHORIZED,
                /** The library is currently out of commission. */
                UNAVAILABLE,
        }
index d6bdd1568546d625477f5a0c4baaae1f5bc3708f..e35c57d146387ee3c582e08b398ba46dda792779 100644 (file)
@@ -28,6 +28,8 @@ public class RemoteLibrary extends BasicLibrary {
        private int port;
        private final String key;
 
+       // TODO: error handling is not up to par!
+
        /**
         * Create a {@link RemoteLibrary} linked to the given server.
         * 
@@ -52,12 +54,28 @@ public class RemoteLibrary extends BasicLibrary {
 
        @Override
        public Status getStatus() {
+               Instance.getTraceHandler().trace("Getting remote lib status...");
+               Status status = getStatusDo();
+               Instance.getTraceHandler().trace("Remote lib status: " + status);
+               return status;
+       }
+
+       private boolean check() {
+               Status status = getStatusDo();
+               if (status != Status.READY) {
+                       Instance.getTraceHandler().error("Remote lib not ready: " + status);
+                       return false;
+               }
+
+               return true;
+       }
+
+       private Status getStatusDo() {
                final Status[] result = new Status[1];
 
                result[0] = Status.INVALID;
 
                try {
-                       Instance.getTraceHandler().trace("Getting remote lib status...");
                        new ConnectActionClientObject(host, port, key) {
                                @Override
                                public void action() throws Exception {
@@ -66,17 +84,17 @@ public class RemoteLibrary extends BasicLibrary {
                                        if ("PONG".equals(rep)) {
                                                result[0] = Status.READY;
                                        } else {
-                                               result[0] = Status.UNAUTORIZED;
+                                               result[0] = Status.UNAUTHORIZED;
                                        }
                                }
 
                                @Override
                                protected void onError(Exception e) {
-                                       if (e instanceof SSLException) {
-                                               result[0] = Status.UNAUTORIZED;
-                                       } else {
-                                               result[0] = Status.UNAVAILABLE;
-                                       }
+                                       // if (e instanceof SSLException) {
+                                       result[0] = Status.UNAUTHORIZED;
+                                       // } else {
+                                       // result[0] = Status.UNAVAILABLE;
+                                       // }
                                }
                        }.connect();
                } catch (UnknownHostException e) {
@@ -87,12 +105,15 @@ public class RemoteLibrary extends BasicLibrary {
                        result[0] = Status.UNAVAILABLE;
                }
 
-               Instance.getTraceHandler().trace("Remote lib status: " + result[0]);
                return result[0];
        }
 
        @Override
        public Image getCover(final String luid) {
+               if (!check()) {
+                       return null;
+               }
+
                final Image[] result = new Image[1];
 
                try {
@@ -122,16 +143,28 @@ public class RemoteLibrary extends BasicLibrary {
 
        @Override
        public Image getCustomSourceCover(final String source) {
+               if (!check()) {
+                       return null;
+               }
+
                return getCustomCover(source, "SOURCE");
        }
 
        @Override
        public Image getCustomAuthorCover(final String author) {
+               if (!check()) {
+                       return null;
+               }
+
                return getCustomCover(author, "AUTHOR");
        }
 
        // type: "SOURCE" or "AUTHOR"
        private Image getCustomCover(final String source, final String type) {
+               if (!check()) {
+                       return null;
+               }
+
                final Image[] result = new Image[1];
 
                try {
@@ -162,6 +195,10 @@ public class RemoteLibrary extends BasicLibrary {
 
        @Override
        public synchronized Story getStory(final String luid, Progress pg) {
+               if (!check()) {
+                       return null;
+               }
+
                final Progress pgF = pg;
                final Story[] result = new Story[1];
 
@@ -214,6 +251,10 @@ public class RemoteLibrary extends BasicLibrary {
        @Override
        public synchronized Story save(final Story story, final String luid,
                        Progress pg) throws IOException {
+               if (!check()) {
+                       return null;
+               }
+
                final String[] luidSaved = new String[1];
                Progress pgSave = new Progress();
                Progress pgRefresh = new Progress();
@@ -277,6 +318,10 @@ public class RemoteLibrary extends BasicLibrary {
 
        @Override
        public synchronized void delete(final String luid) throws IOException {
+               if (!check()) {
+                       throw new IOException("Library not ready");
+               }
+
                new ConnectActionClientObject(host, port, key) {
                        @Override
                        public void action() throws Exception {
@@ -297,17 +342,29 @@ public class RemoteLibrary extends BasicLibrary {
 
        @Override
        public void setSourceCover(final String source, final String luid) {
+               if (!check()) {
+                       return;
+               }
+
                setCover(source, luid, "SOURCE");
        }
 
        @Override
        public void setAuthorCover(final String author, final String luid) {
+               if (!check()) {
+                       return;
+               }
+
                setCover(author, luid, "AUTHOR");
        }
 
        // type = "SOURCE" | "AUTHOR"
        private void setCover(final String value, final String luid,
                        final String type) {
+               if (!check()) {
+                       return;
+               }
+
                try {
                        new ConnectActionClientObject(host, port, key) {
                                @Override
@@ -333,6 +390,10 @@ public class RemoteLibrary extends BasicLibrary {
        @Override
        // Could work (more slowly) without it
        public Story imprt(final URL url, Progress pg) throws IOException {
+               if (!check()) {
+                       return null;
+               }
+
                // Import the file locally if it is actually a file
                if (url == null || url.getProtocol().equalsIgnoreCase("file")) {
                        return super.imprt(url, pg);
@@ -403,6 +464,10 @@ public class RemoteLibrary extends BasicLibrary {
        protected synchronized void changeSTA(final String luid,
                        final String newSource, final String newTitle,
                        final String newAuthor, Progress pg) throws IOException {
+               if (!check()) {
+                       return;
+               }
+
                final Progress pgF = pg == null ? new Progress() : pg;
 
                try {
@@ -447,6 +512,10 @@ public class RemoteLibrary extends BasicLibrary {
         * Stop the server.
         */
        public void exit() {
+               if (!check()) {
+                       return;
+               }
+
                try {
                        new ConnectActionClientObject(host, port, key) {
                                @Override
@@ -471,6 +540,10 @@ public class RemoteLibrary extends BasicLibrary {
 
        @Override
        public synchronized MetaData getInfo(String luid) {
+               if (!check()) {
+                       return null;
+               }
+
                List<MetaData> metas = getMetasList(luid, null);
                if (!metas.isEmpty()) {
                        return metas.get(0);
@@ -528,6 +601,10 @@ public class RemoteLibrary extends BasicLibrary {
         * @return the metas
         */
        private List<MetaData> getMetasList(final String luid, Progress pg) {
+               if (!check()) {
+                       return null;
+               }
+
                final Progress pgF = pg;
                final List<MetaData> metas = new ArrayList<MetaData>();
 
index 72f4e83bcc19a8563102a2adccf3e2762ebce3e8..0893746239292297aeb1091aa51780351288b749 100644 (file)
@@ -64,7 +64,6 @@ public class RemoteLibraryServer extends ServerObject {
         */
        public RemoteLibraryServer(String key, int port) throws IOException {
                super("Fanfix remote library", port, key);
-
                setTraceHandler(Instance.getTraceHandler());
        }