JAL-3438 spotless for 2.11.2.0
[jalview.git] / src / org / json / CDL.java
index 1c7df32..cc06a80 100644 (file)
@@ -30,258 +30,320 @@ SOFTWARE.
  * delimited text is a very popular format for data interchange. It is
  * understood by most database, spreadsheet, and organizer programs.
  * <p>
- * Each row of text represents a row in a table or a data record. Each row
- * ends with a NEWLINE character. Each row contains one or more values.
- * Values are separated by commas. A value can contain any character except
- * for comma, unless is is wrapped in single quotes or double quotes.
+ * Each row of text represents a row in a table or a data record. Each row ends
+ * with a NEWLINE character. Each row contains one or more values. Values are
+ * separated by commas. A value can contain any character except for comma,
+ * unless is is wrapped in single quotes or double quotes.
  * <p>
  * The first row usually contains the names of the columns.
  * <p>
- * A comma delimited list can be converted into a JSONArray of JSONObjects.
- * The names for the elements in the JSONObjects can be taken from the names
- * in the first row.
+ * A comma delimited list can be converted into a JSONArray of JSONObjects. The
+ * names for the elements in the JSONObjects can be taken from the names in the
+ * first row.
+ * 
  * @author JSON.org
  * @version 2016-05-01
  */
-public class CDL {
+public class CDL
+{
 
-    /**
-     * Get the next value. The value can be wrapped in quotes. The value can
-     * be empty.
-     * @param x A JSONTokener of the source text.
-     * @return The value string, or null if empty.
-     * @throws JSONException if the quoted string is badly formed.
-     */
-    private static String getValue(JSONTokener x) throws JSONException {
-        char c;
-        char q;
-        StringBuffer sb;
-        do {
-            c = x.next();
-        } while (c == ' ' || c == '\t');
-        switch (c) {
-        case 0:
-            return null;
-        case '"':
-        case '\'':
-            q = c;
-            sb = new StringBuffer();
-            for (;;) {
-                c = x.next();
-                if (c == q) {
-                    //Handle escaped double-quote
-                    char nextC = x.next();
-                    if(nextC != '\"') {
-                        // if our quote was the end of the file, don't step
-                        if(nextC > 0) {
-                            x.back();
-                        }
-                        break;
-                    }
-                }
-                if (c == 0 || c == '\n' || c == '\r') {
-                    throw x.syntaxError("Missing close quote '" + q + "'.");
-                }
-                sb.append(c);
+  /**
+   * Get the next value. The value can be wrapped in quotes. The value can be
+   * empty.
+   * 
+   * @param x
+   *          A JSONTokener of the source text.
+   * @return The value string, or null if empty.
+   * @throws JSONException
+   *           if the quoted string is badly formed.
+   */
+  private static String getValue(JSONTokener x) throws JSONException
+  {
+    char c;
+    char q;
+    StringBuffer sb;
+    do
+    {
+      c = x.next();
+    } while (c == ' ' || c == '\t');
+    switch (c)
+    {
+    case 0:
+      return null;
+    case '"':
+    case '\'':
+      q = c;
+      sb = new StringBuffer();
+      for (;;)
+      {
+        c = x.next();
+        if (c == q)
+        {
+          // Handle escaped double-quote
+          char nextC = x.next();
+          if (nextC != '\"')
+          {
+            // if our quote was the end of the file, don't step
+            if (nextC > 0)
+            {
+              x.back();
             }
-            return sb.toString();
-        case ',':
-            x.back();
-            return "";
-        default:
-            x.back();
-            return x.nextTo(',');
+            break;
+          }
         }
+        if (c == 0 || c == '\n' || c == '\r')
+        {
+          throw x.syntaxError("Missing close quote '" + q + "'.");
+        }
+        sb.append(c);
+      }
+      return sb.toString();
+    case ',':
+      x.back();
+      return "";
+    default:
+      x.back();
+      return x.nextTo(',');
     }
+  }
 
-    /**
-     * Produce a JSONArray of strings from a row of comma delimited values.
-     * @param x A JSONTokener of the source text.
-     * @return A JSONArray of strings.
-     * @throws JSONException
-     */
-    public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException {
-        JSONArray ja = new JSONArray();
-        for (;;) {
-            String value = getValue(x);
-            char c = x.next();
-            if (value == null ||
-                    (ja.length() == 0 && value.length() == 0 && c != ',')) {
-                return null;
-            }
-            ja.put(value);
-            for (;;) {
-                if (c == ',') {
-                    break;
-                }
-                if (c != ' ') {
-                    if (c == '\n' || c == '\r' || c == 0) {
-                        return ja;
-                    }
-                    throw x.syntaxError("Bad character '" + c + "' (" +
-                            (int)c + ").");
-                }
-                c = x.next();
-            }
+  /**
+   * Produce a JSONArray of strings from a row of comma delimited values.
+   * 
+   * @param x
+   *          A JSONTokener of the source text.
+   * @return A JSONArray of strings.
+   * @throws JSONException
+   */
+  public static JSONArray rowToJSONArray(JSONTokener x) throws JSONException
+  {
+    JSONArray ja = new JSONArray();
+    for (;;)
+    {
+      String value = getValue(x);
+      char c = x.next();
+      if (value == null
+              || (ja.length() == 0 && value.length() == 0 && c != ','))
+      {
+        return null;
+      }
+      ja.put(value);
+      for (;;)
+      {
+        if (c == ',')
+        {
+          break;
         }
+        if (c != ' ')
+        {
+          if (c == '\n' || c == '\r' || c == 0)
+          {
+            return ja;
+          }
+          throw x.syntaxError(
+                  "Bad character '" + c + "' (" + (int) c + ").");
+        }
+        c = x.next();
+      }
     }
+  }
 
-    /**
-     * Produce a JSONObject from a row of comma delimited text, using a
-     * parallel JSONArray of strings to provides the names of the elements.
-     * @param names A JSONArray of names. This is commonly obtained from the
-     *  first row of a comma delimited text file using the rowToJSONArray
-     *  method.
-     * @param x A JSONTokener of the source text.
-     * @return A JSONObject combining the names and values.
-     * @throws JSONException
-     */
-    public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x)
-            throws JSONException {
-        JSONArray ja = rowToJSONArray(x);
-        return ja != null ? ja.toJSONObject(names) :  null;
-    }
+  /**
+   * Produce a JSONObject from a row of comma delimited text, using a parallel
+   * JSONArray of strings to provides the names of the elements.
+   * 
+   * @param names
+   *          A JSONArray of names. This is commonly obtained from the first row
+   *          of a comma delimited text file using the rowToJSONArray method.
+   * @param x
+   *          A JSONTokener of the source text.
+   * @return A JSONObject combining the names and values.
+   * @throws JSONException
+   */
+  public static JSONObject rowToJSONObject(JSONArray names, JSONTokener x)
+          throws JSONException
+  {
+    JSONArray ja = rowToJSONArray(x);
+    return ja != null ? ja.toJSONObject(names) : null;
+  }
 
-    /**
-     * Produce a comma delimited text row from a JSONArray. Values containing
-     * the comma character will be quoted. Troublesome characters may be
-     * removed.
-     * @param ja A JSONArray of strings.
-     * @return A string ending in NEWLINE.
-     */
-    public static String rowToString(JSONArray ja) {
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < ja.length(); i += 1) {
-            if (i > 0) {
-                sb.append(',');
-            }
-            Object object = ja.opt(i);
-            if (object != null) {
-                String string = object.toString();
-                if (string.length() > 0 && (string.indexOf(',') >= 0 ||
-                        string.indexOf('\n') >= 0 || string.indexOf('\r') >= 0 ||
-                        string.indexOf(0) >= 0 || string.charAt(0) == '"')) {
-                    sb.append('"');
-                    int length = string.length();
-                    for (int j = 0; j < length; j += 1) {
-                        char c = string.charAt(j);
-                        if (c >= ' ' && c != '"') {
-                            sb.append(c);
-                        }
-                    }
-                    sb.append('"');
-                } else {
-                    sb.append(string);
-                }
+  /**
+   * Produce a comma delimited text row from a JSONArray. Values containing the
+   * comma character will be quoted. Troublesome characters may be removed.
+   * 
+   * @param ja
+   *          A JSONArray of strings.
+   * @return A string ending in NEWLINE.
+   */
+  public static String rowToString(JSONArray ja)
+  {
+    StringBuilder sb = new StringBuilder();
+    for (int i = 0; i < ja.length(); i += 1)
+    {
+      if (i > 0)
+      {
+        sb.append(',');
+      }
+      Object object = ja.opt(i);
+      if (object != null)
+      {
+        String string = object.toString();
+        if (string.length() > 0 && (string.indexOf(',') >= 0
+                || string.indexOf('\n') >= 0 || string.indexOf('\r') >= 0
+                || string.indexOf(0) >= 0 || string.charAt(0) == '"'))
+        {
+          sb.append('"');
+          int length = string.length();
+          for (int j = 0; j < length; j += 1)
+          {
+            char c = string.charAt(j);
+            if (c >= ' ' && c != '"')
+            {
+              sb.append(c);
             }
+          }
+          sb.append('"');
         }
-        sb.append('\n');
-        return sb.toString();
+        else
+        {
+          sb.append(string);
+        }
+      }
     }
+    sb.append('\n');
+    return sb.toString();
+  }
 
-    /**
-     * Produce a JSONArray of JSONObjects from a comma delimited text string,
-     * using the first row as a source of names.
-     * @param string The comma delimited text.
-     * @return A JSONArray of JSONObjects.
-     * @throws JSONException
-     */
-    public static JSONArray toJSONArray(String string) throws JSONException {
-        return toJSONArray(new JSONTokener(string));
-    }
+  /**
+   * Produce a JSONArray of JSONObjects from a comma delimited text string,
+   * using the first row as a source of names.
+   * 
+   * @param string
+   *          The comma delimited text.
+   * @return A JSONArray of JSONObjects.
+   * @throws JSONException
+   */
+  public static JSONArray toJSONArray(String string) throws JSONException
+  {
+    return toJSONArray(new JSONTokener(string));
+  }
 
-    /**
-     * Produce a JSONArray of JSONObjects from a comma delimited text string,
-     * using the first row as a source of names.
-     * @param x The JSONTokener containing the comma delimited text.
-     * @return A JSONArray of JSONObjects.
-     * @throws JSONException
-     */
-    public static JSONArray toJSONArray(JSONTokener x) throws JSONException {
-        return toJSONArray(rowToJSONArray(x), x);
-    }
+  /**
+   * Produce a JSONArray of JSONObjects from a comma delimited text string,
+   * using the first row as a source of names.
+   * 
+   * @param x
+   *          The JSONTokener containing the comma delimited text.
+   * @return A JSONArray of JSONObjects.
+   * @throws JSONException
+   */
+  public static JSONArray toJSONArray(JSONTokener x) throws JSONException
+  {
+    return toJSONArray(rowToJSONArray(x), x);
+  }
 
-    /**
-     * Produce a JSONArray of JSONObjects from a comma delimited text string
-     * using a supplied JSONArray as the source of element names.
-     * @param names A JSONArray of strings.
-     * @param string The comma delimited text.
-     * @return A JSONArray of JSONObjects.
-     * @throws JSONException
-     */
-    public static JSONArray toJSONArray(JSONArray names, String string)
-            throws JSONException {
-        return toJSONArray(names, new JSONTokener(string));
-    }
+  /**
+   * Produce a JSONArray of JSONObjects from a comma delimited text string using
+   * a supplied JSONArray as the source of element names.
+   * 
+   * @param names
+   *          A JSONArray of strings.
+   * @param string
+   *          The comma delimited text.
+   * @return A JSONArray of JSONObjects.
+   * @throws JSONException
+   */
+  public static JSONArray toJSONArray(JSONArray names, String string)
+          throws JSONException
+  {
+    return toJSONArray(names, new JSONTokener(string));
+  }
 
-    /**
-     * Produce a JSONArray of JSONObjects from a comma delimited text string
-     * using a supplied JSONArray as the source of element names.
-     * @param names A JSONArray of strings.
-     * @param x A JSONTokener of the source text.
-     * @return A JSONArray of JSONObjects.
-     * @throws JSONException
-     */
-    public static JSONArray toJSONArray(JSONArray names, JSONTokener x)
-            throws JSONException {
-        if (names == null || names.length() == 0) {
-            return null;
-        }
-        JSONArray ja = new JSONArray();
-        for (;;) {
-            JSONObject jo = rowToJSONObject(names, x);
-            if (jo == null) {
-                break;
-            }
-            ja.put(jo);
-        }
-        if (ja.length() == 0) {
-            return null;
-        }
-        return ja;
+  /**
+   * Produce a JSONArray of JSONObjects from a comma delimited text string using
+   * a supplied JSONArray as the source of element names.
+   * 
+   * @param names
+   *          A JSONArray of strings.
+   * @param x
+   *          A JSONTokener of the source text.
+   * @return A JSONArray of JSONObjects.
+   * @throws JSONException
+   */
+  public static JSONArray toJSONArray(JSONArray names, JSONTokener x)
+          throws JSONException
+  {
+    if (names == null || names.length() == 0)
+    {
+      return null;
     }
+    JSONArray ja = new JSONArray();
+    for (;;)
+    {
+      JSONObject jo = rowToJSONObject(names, x);
+      if (jo == null)
+      {
+        break;
+      }
+      ja.put(jo);
+    }
+    if (ja.length() == 0)
+    {
+      return null;
+    }
+    return ja;
+  }
 
-
-    /**
-     * Produce a comma delimited text from a JSONArray of JSONObjects. The
-     * first row will be a list of names obtained by inspecting the first
-     * JSONObject.
-     * @param ja A JSONArray of JSONObjects.
-     * @return A comma delimited text.
-     * @throws JSONException
-     */
-    public static String toString(JSONArray ja) throws JSONException {
-        JSONObject jo = ja.optJSONObject(0);
-        if (jo != null) {
-            JSONArray names = jo.names();
-            if (names != null) {
-                return rowToString(names) + toString(names, ja);
-            }
-        }
-        return null;
+  /**
+   * Produce a comma delimited text from a JSONArray of JSONObjects. The first
+   * row will be a list of names obtained by inspecting the first JSONObject.
+   * 
+   * @param ja
+   *          A JSONArray of JSONObjects.
+   * @return A comma delimited text.
+   * @throws JSONException
+   */
+  public static String toString(JSONArray ja) throws JSONException
+  {
+    JSONObject jo = ja.optJSONObject(0);
+    if (jo != null)
+    {
+      JSONArray names = jo.names();
+      if (names != null)
+      {
+        return rowToString(names) + toString(names, ja);
+      }
     }
+    return null;
+  }
 
-    /**
-     * Produce a comma delimited text from a JSONArray of JSONObjects using
-     * a provided list of names. The list of names is not included in the
-     * output.
-     * @param names A JSONArray of strings.
-     * @param ja A JSONArray of JSONObjects.
-     * @return A comma delimited text.
-     * @throws JSONException
-     */
-    public static String toString(JSONArray names, JSONArray ja)
-            throws JSONException {
-        if (names == null || names.length() == 0) {
-            return null;
-        }
-        StringBuffer sb = new StringBuffer();
-        for (int i = 0; i < ja.length(); i += 1) {
-            JSONObject jo = ja.optJSONObject(i);
-            if (jo != null) {
-                sb.append(rowToString(jo.toJSONArray(names)));
-            }
-        }
-        return sb.toString();
+  /**
+   * Produce a comma delimited text from a JSONArray of JSONObjects using a
+   * provided list of names. The list of names is not included in the output.
+   * 
+   * @param names
+   *          A JSONArray of strings.
+   * @param ja
+   *          A JSONArray of JSONObjects.
+   * @return A comma delimited text.
+   * @throws JSONException
+   */
+  public static String toString(JSONArray names, JSONArray ja)
+          throws JSONException
+  {
+    if (names == null || names.length() == 0)
+    {
+      return null;
+    }
+    StringBuffer sb = new StringBuffer();
+    for (int i = 0; i < ja.length(); i += 1)
+    {
+      JSONObject jo = ja.optJSONObject(i);
+      if (jo != null)
+      {
+        sb.append(rowToString(jo.toJSONArray(names)));
+      }
     }
+    return sb.toString();
+  }
 }