*/
package jalview.io;
-import java.io.File;
-import java.io.InputStream;
-import java.util.List;
-
-import jalview.api.AlignViewportI;
+import jalview.api.AlignExportSettingI;
+import jalview.api.AlignmentViewPanel;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.AlignmentView;
-import jalview.datamodel.SequenceGroup;
import jalview.util.MessageManager;
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+
/**
* A low level class for alignment and feature IO with alignment formatting
* methods used by both applet and application for generating flat alignment
*/
public class AppletFormatAdapter
{
- private AlignViewportI viewport;
+ private AlignmentViewPanel viewpanel;
public static String FILE = "File";
*/
protected String newline = System.getProperty("line.separator");
+ private AlignExportSettingI exportSettings;
+
/**
* List of valid format strings used in the isValidFormat method
*/
{
}
- public AppletFormatAdapter(AlignViewportI viewport)
+ public AppletFormatAdapter(AlignmentViewPanel viewpanel)
+ {
+ this.viewpanel = viewpanel;
+ }
+
+ public AppletFormatAdapter(AlignmentViewPanel alignPanel,
+ AlignExportSettingI settings)
{
- this.viewport = viewport;
+ viewpanel = alignPanel;
+ exportSettings = settings;
}
/**
*
* @return DOCUMENT ME!
*/
- public Alignment readFile(String inFile, String type, String format)
+ public AlignmentI readFile(String inFile, String type, String format)
throws java.io.IOException
{
// TODO: generalise mapping between format string and io. class instances
this.inFile = inFile;
try
{
- Alignment al;
if (format.equals("FASTA"))
{
alignFile = new FastaFile(inFile, type);
else if (format.equals(JSONFile.FILE_DESC))
{
alignFile = new JSONFile(inFile, type);
- al = new Alignment(alignFile.getSeqsAsArray());
- alignFile.addAnnotations(al);
- ((JSONFile) alignFile).setViewport(viewport);
- for (SequenceGroup sg : alignFile.getSeqGroups())
- {
- al.addGroup(sg);
- }
-
- return al;
}
else if (format.equals(HtmlFile.FILE_DESC))
{
alignFile = new HtmlFile(inFile, type);
- al = new Alignment(alignFile.getSeqsAsArray());
- alignFile.addAnnotations(al);
- for (SequenceGroup sg : alignFile.getSeqGroups())
- {
- al.addGroup(sg);
- }
- return al;
}
else if (format.equals("RNAML"))
{
{
alignFile = new Gff3File(inFile, type);
}
-
- al = new Alignment(alignFile.getSeqsAsArray());
-
- alignFile.addAnnotations(al);
-
- return al;
+ return buildAlignmentFrom(alignFile);
} catch (Exception e)
{
e.printStackTrace();
{
// Possible sequence is just residues with no label
alignFile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");
- Alignment al = new Alignment(alignFile.getSeqsAsArray());
-
- alignFile.addSeqGroups(al);
- alignFile.addAnnotations(al);
- return al;
+ return buildAlignmentFrom(alignFile);
} catch (Exception ex)
{
String type = source.type;
try
{
- Alignment al;
if (format.equals("FASTA"))
{
alignFile = new FastaFile(source);
else if (format.equals(JSONFile.FILE_DESC))
{
alignFile = new JSONFile(source);
- al = new Alignment(alignFile.getSeqsAsArray());
- alignFile.addAnnotations(al);
- alignFile.addSeqGroups(al);
- return al;
}
else if (format.equals(HtmlFile.FILE_DESC))
{
alignFile = new HtmlFile(source);
}
- al = new Alignment(alignFile.getSeqsAsArray());
- alignFile.addAnnotations(al);
- return al;
+ return buildAlignmentFrom(alignFile);
+
} catch (Exception e)
{
e.printStackTrace();
{
// Possible sequence is just residues with no label
alignFile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");
- Alignment al = new Alignment(alignFile.getSeqsAsArray());
- alignFile.addAnnotations(al);
- alignFile.addSeqGroups(al);
- return al;
+ return buildAlignmentFrom(alignFile);
} catch (Exception ex)
{
/**
+ * boilerplate method to handle data from an AlignFile and construct a new
+ * alignment or import to an existing alignment
+ *
+ * @param alignFile2
+ * @return AlignmentI instance ready to pass to a UI constructor
+ */
+ private AlignmentI buildAlignmentFrom(AlignFile alignFile2)
+ {
+ // Standard boilerplate for creating alignment from parser
+ // alignFile.configureForView(viewpanel);
+
+ AlignmentI al = new Alignment(alignFile.getSeqsAsArray());
+
+ alignFile.addAnnotations(al);
+
+ alignFile.addGroups(al);
+
+ return al;
+ }
+
+ /**
* create an alignment flatfile from a Jalview alignment view
* @param format
* @param jvsuffix
* @return flatfile in a string
*/
public String formatSequences(String format, boolean jvsuffix,
- AlignViewportI av, boolean selectedOnly)
+ AlignmentViewPanel ap, boolean selectedOnly)
{
- AlignmentView selvew = av.getAlignmentView(selectedOnly, false);
- AlignmentI aselview = selvew.getVisibleAlignment(av
+ AlignmentView selvew = ap.getAlignViewport().getAlignmentView(
+ selectedOnly, false);
+ AlignmentI aselview = selvew.getVisibleAlignment(ap.getAlignViewport()
.getGapCharacter());
- List<AlignmentAnnotation> ala = (av
+ List<AlignmentAnnotation> ala = (ap.getAlignViewport()
.getVisibleAlignmentAnnotation(selectedOnly));
if (ala != null)
{
aselview.addAnnotation(aa);
}
}
-
+ viewpanel = ap;
return formatSequences(format, aselview, jvsuffix);
}
else if (format.equalsIgnoreCase(JSONFile.FILE_DESC))
{
afile = new JSONFile();
- afile.setViewport(viewport);
- // Add groups to AlignFile
- afile.seqGroups = alignment.getGroups();
-
- // Add non auto calculated annotation to AlignFile
- for (AlignmentAnnotation annot : alignment.getAlignmentAnnotation())
- {
- if (annot != null && !annot.autoCalculated)
- {
- if (annot.label.equals("PDB.CATempFactor"))
- {
- continue;
- }
- afile.annotations.add(annot);
- }
- }
}
else if (format.equalsIgnoreCase("RNAML"))
{
{
throw new Exception(MessageManager.getString("error.implementation_error_unknown_file_format_string"));
}
+
afile.setNewlineString(newline);
afile.addJVSuffix(jvsuffix);
+ afile.setExportSettings(exportSettings);
+ afile.configureForView(viewpanel);
- afile.setSeqs(alignment.getSequencesArray());
-
+ // check whether we were given a specific alignment to export, rather than
+ // the one in the viewpanel
+ if (viewpanel == null || viewpanel.getAlignment() == null
+ || viewpanel.getAlignment() != alignment)
+ {
+ afile.setSeqs(alignment.getSequencesArray());
+ }
+ else
+ {
+ afile.setSeqs(viewpanel.getAlignment().getSequencesArray());
+ }
String afileresp = afile.print();
if (afile.hasWarningMessage())
System.gc();
long memf = -r.totalMemory() + r.freeMemory();
long t1 = -System.currentTimeMillis();
- Alignment al = afa.readFile(args[i], FILE,
+ AlignmentI al = afa.readFile(args[i], FILE,
new IdentifyFile().Identify(args[i], FILE));
t1 += System.currentTimeMillis();
System.gc();