Merge branch 'alpha/JAL-3362_Jalview_212_alpha' into alpha/merge_212_JalviewJS_2112
[jalview.git] / src / jalview / ws / rest / InputType.java
index c9f9f19..c83879a 100644 (file)
@@ -1,20 +1,23 @@
-/*******************************************************************************
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
- *
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
  * This file is part of Jalview.
- *
+ * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- *******************************************************************************/
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.ws.rest;
 
 import jalview.ws.params.ArgumentI;
@@ -23,28 +26,17 @@ import jalview.ws.params.OptionI;
 import jalview.ws.params.ParameterI;
 import jalview.ws.params.simple.IntegerParameter;
 import jalview.ws.params.simple.Option;
-import jalview.ws.rest.params.SeqGroupIndexVector;
 
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
-import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.http.entity.mime.content.ContentBody;
 import org.apache.http.entity.mime.content.StringBody;
 
-import sun.io.CharacterEncoding;
-import sun.misc.CharacterEncoder;
-
 /***
  * InputType is the abstract model of each input parameter that a rest service
  * might take. It enables the engine to validate input by providing { formatter
@@ -53,6 +45,9 @@ import sun.misc.CharacterEncoder;
  */
 public abstract class InputType
 {
+  private static final Pattern URL_PATTERN = Pattern
+          .compile("^([^=]+)=?'?([^']*)?'?");
+
   /**
    * not used yet
    */
@@ -62,9 +57,9 @@ public abstract class InputType
   {
     NUC, PROT, MIX;
 
-    public static Collection<String> toStringValues()
+    public static List<String> toStringValues()
     {
-      Collection<String> c = new ArrayList<String>();
+      List<String> c = new ArrayList<>();
       for (molType type : values())
       {
         c.add(type.toString());
@@ -79,7 +74,7 @@ public abstract class InputType
 
   public int max = 0; // unbounded
 
-  protected ArrayList<Class> inputData = new ArrayList<Class>();
+  protected List<Class> inputData = new ArrayList<>();
 
   /**
    * initialise the InputType with a list of jalview data classes that the
@@ -108,7 +103,9 @@ public abstract class InputType
   public boolean validFor(RestJob restJob)
   {
     if (!validFor(restJob.rsd))
+    {
       return false;
+    }
     for (Class cl : inputData)
     {
       if (!restJob.hasDataOfType(cl))
@@ -122,7 +119,9 @@ public abstract class InputType
   public boolean validFor(RestServiceDescription restServiceDescription)
   {
     if (!restServiceDescription.inputParams.values().contains(this))
+    {
       return false;
+    }
 
     return true;
   }
@@ -134,13 +133,13 @@ public abstract class InputType
     {
       if (type == null)
       {
-        return new StringBody(utf8.encode(content).asCharBuffer()
-                .toString());
+        return new StringBody(
+                utf8.encode(content).asCharBuffer().toString());
       }
       else
       {
-        return new StringBody(utf8.encode(content).asCharBuffer()
-                .toString(), type, utf8);
+        return new StringBody(
+                utf8.encode(content).asCharBuffer().toString(), type, utf8);
       }
     } catch (Exception ex)
     {
@@ -216,7 +215,7 @@ public abstract class InputType
     boolean valid = true;
     for (String tok : tokenstring)
     {
-      Matcher mtch = Pattern.compile("^([^=]+)=?'?([^']*)?'?").matcher(tok);
+      Matcher mtch = URL_PATTERN.matcher(tok);
       if (mtch.find())
       {
         try
@@ -274,7 +273,7 @@ public abstract class InputType
 
   public List<OptionI> getBaseOptions()
   {
-    ArrayList<OptionI> opts = new ArrayList<OptionI>();
+    ArrayList<OptionI> opts = new ArrayList<>();
     opts.add(new IntegerParameter("min",
             "Minimum number of data of this type", true, 1, min, 0, -1));
     opts.add(new IntegerParameter("max",
@@ -299,7 +298,7 @@ public abstract class InputType
   public void configureFromArgumentI(List<ArgumentI> currentSettings)
           throws InvalidArgumentException
   {
-    ArrayList<String> urltoks = new ArrayList<String>();
+    List<String> urltoks = new ArrayList<>();
     String rg;
     for (ArgumentI arg : currentSettings)
     {
@@ -311,9 +310,10 @@ public abstract class InputType
       {
         // TODO: revise architecture - this is counter intuitive - options with
         // different values to their names are actually parameters
-        rg = (arg.getValue().length() > 0) ? (arg.getValue().equals(
-                arg.getName()) ? arg.getName() : arg.getName() + "='"
-                + arg.getValue() + "'") : arg.getName();
+        rg = (arg.getValue().length() > 0)
+                ? (arg.getValue().equals(arg.getName()) ? arg.getName()
+                        : arg.getName() + "='" + arg.getValue() + "'")
+                : arg.getName();
       }
       if (rg.length() > 0)
       {
@@ -321,7 +321,8 @@ public abstract class InputType
       }
     }
     StringBuffer warnings;
-    if (!configureFromURLtokenString(urltoks, warnings = new StringBuffer()))
+    if (!configureFromURLtokenString(urltoks,
+            warnings = new StringBuffer()))
     {
       throw new InvalidArgumentException(warnings.toString());
     }
@@ -330,9 +331,9 @@ public abstract class InputType
   protected OptionI createMolTypeOption(String name, String descr,
           boolean req, molType curType, molType defType)
   {
-    return new Option(name, descr, req, defType == null ? ""
-            : defType.toString(),
+    return new Option(name, descr, req,
+            defType == null ? "" : defType.toString(),
             curType == null ? "" : curType.toString(),
             molType.toStringValues(), null);
   }
-}
\ No newline at end of file
+}