update author list in license for (JAL-826)
[jalview.git] / src / jalview / ws / rest / params / JobConstant.java
1 /*******************************************************************************
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
3  * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
4  *
5  * This file is part of Jalview.
6  *
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
10  *
11  * Jalview is distributed in the hope that it will be useful, but 
12  * WITHOUT ANY WARRANTY; without even the implied warranty 
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14  * PURPOSE.  See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
17  *******************************************************************************/
18 package jalview.ws.rest.params;
19
20 import jalview.ws.params.OptionI;
21 import jalview.ws.rest.InputType;
22 import jalview.ws.rest.NoValidInputDataException;
23 import jalview.ws.rest.RestJob;
24
25 import java.io.UnsupportedEncodingException;
26 import java.net.URLEncoder;
27 import java.util.ArrayList;
28 import java.util.List;
29
30 import org.apache.http.entity.mime.content.ContentBody;
31 import org.apache.http.entity.mime.content.StringBody;
32
33 /**
34  * defines a constant value always provided as a parameter.
35  * @author JimP
36  *
37  */
38 public class JobConstant extends InputType
39 {
40
41   String value;
42   /**
43    * 
44    * @param param name of parameter
45    * @param val value of parameter
46    */
47   public JobConstant(String param, String val)
48   {
49     // needs no data from the restJob
50     super(null);
51     this.token = param;
52     value = val;
53   }
54
55   @Override
56   public ContentBody formatForInput(RestJob rj)
57           throws UnsupportedEncodingException, NoValidInputDataException
58   {
59     
60     return new StringBody(value);
61   }
62
63   @Override
64   public List<String> getURLEncodedParameter()
65   {
66     ArrayList<String> prm = new ArrayList<String>();
67     
68     if (value!=null && value.length()>0)
69     {
70       try {
71         prm.add(URLEncoder.encode(value,"UTF-8"));
72       } catch (UnsupportedEncodingException ex)
73       {
74         throw new Error("Couldn't encode '"+value+"' as UTF-8.",ex);
75        
76       }
77     }
78     return prm;
79   }
80
81   @Override
82   public String getURLtokenPrefix()
83   {
84     return "";
85   }
86
87   @Override
88   public boolean configureFromURLtokenString(List<String> tokenstring,
89           StringBuffer warnings)
90   {
91     if (tokenstring.size()>1) {
92       warnings.append("IMPLEMENTATION ERROR: Constant POST parameters cannot have more than one value.");
93       return false;
94     }
95     if (tokenstring.size()==1) {
96       value = tokenstring.get(0);
97     }
98     return true;
99   }
100
101   @Override
102   public boolean configureProperty(String tok, String val,
103           StringBuffer warnings)
104   {
105     warnings.append("IMPLEMENTATION ERROR: No Properties to configure for a Constant parameter.");
106     return false;
107   }
108
109   @Override
110   public List<OptionI> getOptions()
111   {
112     // empty list - this parameter isn't configurable, so don't try.
113     return new ArrayList<OptionI>();
114   }
115 }