X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fws%2Frest%2Fparams%2FAnnotationFile.java;h=b610fca46fb04694abe1b8dca685c36d2a73a2b4;hb=b49b2c492b12792c63178d195a7b14b8b9c8efa9;hp=5abf0fc5bdbe76cfbd8427f6922237047ac03d25;hpb=231cba7c0cb9097957cd61ef96aab8e32e2d0337;p=jalview.git
diff --git a/src/jalview/ws/rest/params/AnnotationFile.java b/src/jalview/ws/rest/params/AnnotationFile.java
index 5abf0fc..b610fca 100644
--- a/src/jalview/ws/rest/params/AnnotationFile.java
+++ b/src/jalview/ws/rest/params/AnnotationFile.java
@@ -1,14 +1,35 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws.rest.params;
import jalview.datamodel.AlignmentI;
+import jalview.ws.params.OptionI;
+import jalview.ws.params.simple.Option;
import jalview.ws.rest.InputType;
import jalview.ws.rest.NoValidInputDataException;
import jalview.ws.rest.RestJob;
-import jalview.ws.rest.RestServiceDescription;
-import jalview.ws.rest.InputType.molType;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.apache.http.entity.mime.content.ContentBody;
@@ -16,55 +37,71 @@ import org.apache.http.entity.mime.content.StringBody;
/**
* format a jalview annotation file for input to a rest service.
+ *
* @author JimP
- *
+ *
*/
-public class AnnotationFile extends InputType {
+public class AnnotationFile extends InputType
+{
public AnnotationFile()
{
- super(new Class[] { AlignmentI.class} );
+ super(new Class[] { AlignmentI.class });
}
+
/**
* standard jalview annotation file
*/
- final String JVANNOT="JalviewAnnotation";
+ final String JVANNOT = "JalviewAnnotation";
+
/**
* export annotation row as simple csv
*/
- final String CSVANNOT="CsvAnnotationRow";
+ final String CSVANNOT = "CsvAnnotationRow";
+
/**
* format of annotation file
*/
- String format=JVANNOT;
+ String format = JVANNOT;
+
// TODO verify annotation file format enumeration
@Override
- public ContentBody formatForInput(RestJob rj) throws UnsupportedEncodingException, NoValidInputDataException
+ public ContentBody formatForInput(RestJob rj)
+ throws UnsupportedEncodingException, NoValidInputDataException
{
- AlignmentI al = rj.getAlignmentForInput(token,molType.MIX);
+ AlignmentI al = rj.getAlignmentForInput(token, molType.MIX);
if (format.equals(JVANNOT))
- {return new StringBody(new jalview.io.AnnotationFile().printAnnotations(al.getAlignmentAnnotation(),
- al.getGroups(),al.getProperties()));
- } else {
- if (!format.equals(CSVANNOT))
- {
- throw new UnsupportedEncodingException("Unrecognised format for exporting Annotation ("+format+")");
- }
- return new StringBody(new jalview.io.AnnotationFile().printCSVAnnotations(al.getAlignmentAnnotation()));
+ {
+ return new StringBody(new jalview.io.AnnotationFile()
+ .printAnnotationsForAlignment(al));
+ }
+ else
+ {
+ if (!format.equals(CSVANNOT))
+ {
+ throw new UnsupportedEncodingException(
+ "Unrecognised format for exporting Annotation (" + format
+ + ")");
}
+ return new StringBody(new jalview.io.AnnotationFile()
+ .printCSVAnnotations(al.getAlignmentAnnotation()));
+ }
}
+
@Override
public List getURLEncodedParameter()
{
ArrayList prms = new ArrayList();
super.addBaseParams(prms);
- prms.add("format='"+format+"'");
- return prms;
+ prms.add("format='" + format + "'");
+ return prms;
}
+
@Override
public String getURLtokenPrefix()
{
return "ALANNOTATION";
}
+
@Override
public boolean configureProperty(String tok, String val,
StringBuffer warnings)
@@ -72,7 +109,7 @@ public class AnnotationFile extends InputType {
if (tok.startsWith("format"))
{
- for (String fmt : new String[] { CSVANNOT, JVANNOT})
+ for (String fmt : new String[] { CSVANNOT, JVANNOT })
{
if (val.equalsIgnoreCase(fmt))
{
@@ -82,7 +119,7 @@ public class AnnotationFile extends InputType {
}
warnings.append("Invalid annotation file format '" + val
+ "'. Must be one of (");
- for (String fmt : new String[] { CSVANNOT, JVANNOT})
+ for (String fmt : new String[] { CSVANNOT, JVANNOT })
{
warnings.append(" " + fmt);
}
@@ -90,4 +127,15 @@ public class AnnotationFile extends InputType {
}
return false;
}
+
+ @Override
+ public List getOptions()
+ {
+ // TODO - consider disregarding base options here.
+ List lst = getBaseOptions();
+ lst.add(new Option("format", "Alignment annotation upload format", true,
+ JVANNOT, format, Arrays.asList(new String[]
+ { JVANNOT, CSVANNOT }), null));
+ return lst;
+ }
}