JAL-2136 Introduced DynamicData model, modified AnnotionFile to store Phyre meta...
[jalview.git] / src / jalview / io / AnnotationFile.java
index 206d971..a22b7a4 100755 (executable)
@@ -26,6 +26,8 @@ import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
 import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.DynamicData;
+import jalview.datamodel.DynamicData.DataType;
 import jalview.datamodel.GraphLine;
 import jalview.datamodel.HiddenSequences;
 import jalview.datamodel.PDBEntry;
@@ -1293,9 +1295,9 @@ public class AnnotationFile
       PDBEntry phyre2PDBEntry = new PDBEntry(modelName, " ",
               Type.PDB,
               structureModelFile);
-      String phyre2ModelDesc = generatePhyre2InfoHTMLTable(
+      List<DynamicData> phyreDD = generatePhyreDynamicDataList(
               structModelHeader, structModelData);
-      phyre2PDBEntry.setProperty("PHYRE2_MODEL_INFO", phyre2ModelDesc);
+      phyre2PDBEntry.setProperty("DYNAMIC_DATA_PHYRE2", phyreDD);
       templateSeq.getDatasetSequence().addPDBId(phyre2PDBEntry);
       if (querySequence != null)
       {
@@ -1318,37 +1320,33 @@ public class AnnotationFile
     return added;
   }
 
-  static String generatePhyre2InfoHTMLTable(String[] structModelHeader,
-          String[] structModelData)
+  static List<DynamicData> generatePhyreDynamicDataList(
+          String[] headerArray,
+          String[] dataArray)
   {
-    StringBuilder phyre2InfoBuilder = new StringBuilder();
-    if (isGenerateStructInfoHtml(structModelHeader, structModelData))
+
+    if (headerArray == null || dataArray == null)
     {
-      phyre2InfoBuilder.append("<html><table border=\"1\" width=100%>")
-              .append("<tr><td colspan=\"2\"><strong>Phyre2 Template Info</strong></td></tr>");
-      for (int x = 4; x < structModelData.length; x++)
-      {
-        phyre2InfoBuilder.append("<tr><td>").append(structModelHeader[x])
-                .append("</td><td>").append(structModelData[x])
-                .append("</td></tr>");
-      }
-      phyre2InfoBuilder.append("</table></html>");
+      throw new IllegalArgumentException(
+              "Header or data arrays must not be null");
     }
-    return phyre2InfoBuilder.toString();
-  }
 
-  static boolean isGenerateStructInfoHtml(String[] header, String[] data)
-  {
-    boolean generate = true;
-    if (header == null || data == null)
+    if (headerArray.length != dataArray.length)
     {
-      return false;
+      throw new IllegalArgumentException(
+              "Header and data arrays must be of same lenght");
     }
-    if (header.length < 3 || data.length < 3)
+    List<DynamicData> dynamicDataList = new ArrayList<DynamicData>();
+    int x = 0;
+    for (String data : dataArray)
     {
-      generate = false;
+      // first four column should be hidden;
+      boolean show = (x > 4);
+      dynamicDataList.add(new DynamicData(headerArray[x], data, DataType.S,
+              "PHYRE2", show));
+      x++;
     }
-    return generate;
+    return dynamicDataList;
   }
 
   static String resolveAbsolutePath(String relURI, String _baseUri)