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