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