Xcos diagram load: log warnings to the user 92/14492/3
Clément DAVID [Tue, 29 Apr 2014 04:54:20 +0000 (06:54 +0200)]
Change-Id: I4f8582120c332e2822e18b63d68fccab6f339d25

scilab/modules/xcos/src/java/org/scilab/modules/xcos/io/codec/BasicLinkCodec.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/io/codec/XcosCodec.java

index 499ba1d..6e31839 100644 (file)
@@ -25,6 +25,8 @@ import org.w3c.dom.Node;
 import com.mxgraph.io.mxCodec;
 import com.mxgraph.io.mxCodecRegistry;
 
+import static org.scilab.modules.xcos.io.codec.XcosCodec.LOG;
+
 public class BasicLinkCodec extends XcosObjectCodec {
 
     public static void register() {
@@ -54,20 +56,24 @@ public class BasicLinkCodec extends XcosObjectCodec {
 
         if (!(l.getSource() instanceof BasicPort)) {
             trace(enc, node, "Invalid source");
+            LOG.warning("The saved file might be incomplete, '" + l + "' is not connected");
         } else {
             final BasicPort p = (BasicPort) l.getSource();
 
             if (!(p.getParent() instanceof BasicBlock)) {
                 trace(enc, node, "Invalid source parent");
+                LOG.warning("The saved file might be incomplete, '" + l + "' is wrongly connected");
             }
         }
         if (!(l.getTarget() instanceof BasicPort)) {
             trace(enc, node, "Invalid target");
+            LOG.warning("The saved file might be incomplete, '" + l + "' is not connected");
         } else {
             final BasicPort p = (BasicPort) l.getTarget();
 
             if (!(p.getParent() instanceof BasicBlock)) {
                 trace(enc, node, "Invalid target parent");
+                LOG.warning("The saved file might be incomplete, '" + l + "' is wrongly connected");
             }
         }
 
index 8257511..a7e4eda 100644 (file)
@@ -82,6 +82,8 @@ public class XcosCodec extends mxCodec {
         OrientationCodec.register();
     }
 
+    public static final Logger LOG = Logger.getLogger(XcosCodec.class.getSimpleName());
+
     /**
      * Default constructor
      */
@@ -136,8 +138,13 @@ public class XcosCodec extends mxCodec {
     @Override
     public Object lookup(String id) {
         final Element element = getDocument().getElementById(id);
-        final mxObjectCodec decoder = mxCodecRegistry.getCodec(element.getNodeName());
-        return decoder.decode(this, element);
+        if (element == null) {
+            LOG.warning("Your file might be corrupted, '" + id + "' is not indexed in the document ID list");
+            return null;
+        } else {
+            final mxObjectCodec decoder = mxCodecRegistry.getCodec(element.getNodeName());
+            return decoder.decode(this, element);
+        }
     }
 
     public static Object enableBinarySerialization(ScilabList dictionary) {