JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / ws / rest / params / JobConstant.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
3  * Copyright (C) 2015 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(
84                 "error.couldnt_encode_as_utf8", new String[] { value }), ex);
85
86       }
87     }
88     return prm;
89   }
90
91   @Override
92   public String getURLtokenPrefix()
93   {
94     return "";
95   }
96
97   @Override
98   public boolean configureFromURLtokenString(List<String> tokenstring,
99           StringBuffer warnings)
100   {
101     if (tokenstring.size() > 1)
102     {
103       warnings.append("IMPLEMENTATION ERROR: Constant POST parameters cannot have more than one value.");
104       return false;
105     }
106     if (tokenstring.size() == 1)
107     {
108       value = tokenstring.get(0);
109     }
110     return true;
111   }
112
113   @Override
114   public boolean configureProperty(String tok, String val,
115           StringBuffer warnings)
116   {
117     warnings.append("IMPLEMENTATION ERROR: No Properties to configure for a Constant parameter.");
118     return false;
119   }
120
121   @Override
122   public List<OptionI> getOptions()
123   {
124     // empty list - this parameter isn't configurable, so don't try.
125     return new ArrayList<OptionI>();
126   }
127 }