JAL-1443 bugfix to prevent loading of unidentifiable gibberish data
[jalview.git] / src / jalview / gui / CutAndPasteTransfer.java
index 979d1aa..e08bfcd 100644 (file)
@@ -24,6 +24,7 @@ import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.api.ComplexAlignFile;
 import jalview.api.FeaturesDisplayedI;
+import jalview.bin.Jalview;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.SequenceI;
@@ -202,6 +203,21 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
     }
 
     String format = new IdentifyFile().Identify(text, "Paste");
+    if (format == null || format.equalsIgnoreCase("EMPTY DATA FILE"))
+    {
+      System.err.println(MessageManager
+              .getString("label.null_or_unidentifiable_data"));
+      if (!Jalview.isHeadlessMode())
+      {
+        JOptionPane.showMessageDialog(null,
+ MessageManager
+                .getString("label.null_or_unidentifiable_data"),
+                MessageManager.getString("label.unidentifiable_data"),
+                JOptionPane.ERROR_MESSAGE);
+      }
+      return;
+    }
+
     // TODO: identify feature, annotation or tree file and parse appropriately.
     AlignmentI al = null;
 
@@ -224,7 +240,7 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
       }
     }
 
-    if (al != null)
+    if (al != null && al.hasValidSequence())
     {
       String title = MessageManager.formatMessage(
               "label.input_cut_paste_params", new String[]
@@ -276,6 +292,22 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
         }
       }
     }
+    else
+    {
+      System.err.println(MessageManager
+              .getString("label.null_or_invalid_alignment"));
+      if (!Jalview.isHeadlessMode())
+      {
+        JOptionPane
+                .showMessageDialog(
+                        null,
+                        MessageManager
+                                .getString("label.null_or_invalid_alignment"),
+                        MessageManager
+                                .getString("label.unable_to_create_alignment"),
+                        JOptionPane.ERROR_MESSAGE);
+      }
+    }
   }