64bb45f45bab09a908c491914b1a65b10d807c2a
[jalview.git] / src / jalview / ws / rest / params / JobConstant.java
1 package jalview.ws.rest.params;
2
3 import jalview.ws.params.OptionI;
4 import jalview.ws.rest.InputType;
5 import jalview.ws.rest.NoValidInputDataException;
6 import jalview.ws.rest.RestJob;
7
8 import java.io.UnsupportedEncodingException;
9 import java.net.URLEncoder;
10 import java.util.ArrayList;
11 import java.util.List;
12
13 import org.apache.http.entity.mime.content.ContentBody;
14 import org.apache.http.entity.mime.content.StringBody;
15
16 /**
17  * defines a constant value always provided as a parameter.
18  * @author JimP
19  *
20  */
21 public class JobConstant extends InputType
22 {
23
24   String value;
25   /**
26    * 
27    * @param param name of parameter
28    * @param val value of parameter
29    */
30   public JobConstant(String param, String val)
31   {
32     // needs no data from the restJob
33     super(null);
34     this.token = param;
35     value = val;
36   }
37
38   @Override
39   public ContentBody formatForInput(RestJob rj)
40           throws UnsupportedEncodingException, NoValidInputDataException
41   {
42     
43     return new StringBody(value);
44   }
45
46   @Override
47   public List<String> getURLEncodedParameter()
48   {
49     ArrayList<String> prm = new ArrayList<String>();
50     
51     if (value!=null && value.length()>0)
52     {
53       try {
54         prm.add(URLEncoder.encode(value,"UTF-8"));
55       } catch (UnsupportedEncodingException ex)
56       {
57         throw new Error("Couldn't encode '"+value+"' as UTF-8.",ex);
58        
59       }
60     }
61     return prm;
62   }
63
64   @Override
65   public String getURLtokenPrefix()
66   {
67     return "";
68   }
69
70   @Override
71   public boolean configureFromURLtokenString(List<String> tokenstring,
72           StringBuffer warnings)
73   {
74     if (tokenstring.size()>1) {
75       warnings.append("IMPLEMENTATION ERROR: Constant POST parameters cannot have more than one value.");
76       return false;
77     }
78     if (tokenstring.size()==1) {
79       value = tokenstring.get(0);
80     }
81     return true;
82   }
83
84   @Override
85   public boolean configureProperty(String tok, String val,
86           StringBuffer warnings)
87   {
88     warnings.append("IMPLEMENTATION ERROR: No Properties to configure for a Constant parameter.");
89     return false;
90   }
91
92   @Override
93   public List<OptionI> getOptions()
94   {
95     // empty list - this parameter isn't configurable, so don't try.
96     return new ArrayList<OptionI>();
97   }
98 }