FileFormat enum new types
[jalview.git] / src / jalview / io / AlignFile.java
index eb43701..6d6ab5c 100755 (executable)
@@ -40,7 +40,7 @@ import java.util.Vector;
  * @author $author$
  * @version $Revision$
  */
-public abstract class AlignFile extends FileParse
+public abstract class AlignFile extends FileParse implements AlignmentFileI
 {
   int noSeqs = 0;
 
@@ -89,14 +89,15 @@ public abstract class AlignFile extends FileParse
   /**
    * Constructor which parses the data from a file of some specified type.
    * 
-   * @param inFile
-   *          Filename to read from.
-   * @param type
-   *          What type of file to read from (File, URL)
+   * @param dataObject
+   *          Filename, URL or Pasted String to read from.
+   * @param sourceType
+   *          What type of file to read from (File, URL, Pasted String)
    */
-  public AlignFile(String inFile, String type) throws IOException
+  public AlignFile(String dataObject, DataSourceType sourceType)
+          throws IOException
   {
-    this(true, inFile, type);
+    this(true, dataObject, sourceType);
   }
 
   /**
@@ -105,16 +106,17 @@ public abstract class AlignFile extends FileParse
    * 
    * @param parseImmediately
    *          if false, need to call 'doParse()' to begin parsing data
-   * @param inFile
-   *          Filename to read from.
-   * @param type
+   * @param dataObject
+   *          Filename, URL or Pasted String to read from.
+   * @param sourceType
    *          What type of file to read from (File, URL)
    * @throws IOException
    */
-  public AlignFile(boolean parseImmediately, String inFile, String type)
+  public AlignFile(boolean parseImmediately, String dataObject,
+          DataSourceType sourceType)
           throws IOException
   {
-    super(inFile, type);
+    super(dataObject, sourceType);
     initData();
     if (parseImmediately)
     {
@@ -191,6 +193,7 @@ public abstract class AlignFile extends FileParse
   /**
    * Return the Sequences in the seqs Vector as an array of Sequences
    */
+  @Override
   public SequenceI[] getSeqsAsArray()
   {
     SequenceI[] s = new SequenceI[seqs.size()];
@@ -209,6 +212,7 @@ public abstract class AlignFile extends FileParse
    * 
    * @param al
    */
+  @Override
   public void addAnnotations(AlignmentI al)
   {
     addProperties(al);
@@ -314,7 +318,8 @@ public abstract class AlignFile extends FileParse
    * @param s
    *          DOCUMENT ME!
    */
-  protected void setSeqs(SequenceI[] s)
+  @Override
+  public void setSeqs(SequenceI[] s)
   {
     seqs = new Vector<SequenceI>();
 
@@ -332,8 +337,10 @@ public abstract class AlignFile extends FileParse
   /**
    * Print out in alignment file format the Sequences in the seqs Vector.
    */
+  @Override
   public abstract String print();
 
+  @Override
   public void addJVSuffix(boolean b)
   {
     jvSuffix = b;
@@ -352,7 +359,15 @@ public abstract class AlignFile extends FileParse
     if (space > -1)
     {
       seq = new Sequence(id.substring(0, space), "");
-      seq.setDescription(id.substring(space + 1));
+      String desc = id.substring(space + 1);
+      seq.setDescription(desc);
+
+      /*
+       * it is tempting to parse Ensembl style gene description e.g.
+       * chromosome:GRCh38:7:140696688:140721955:1 and set the
+       * start position of the sequence, but this causes much confusion
+       * for reverse strand feature locations
+       */
     }
     else
     {
@@ -392,6 +407,7 @@ public abstract class AlignFile extends FileParse
     return newickStrings == null ? 0 : newickStrings.size();
   }
 
+  @Override
   public void addGroups(AlignmentI al)
   {