You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
geoportal-data-viewer-app/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/util/URLParserUtil.java

97 lines
2.6 KiB
Java

package org.gcube.portlets.user.geoportaldataviewer.server.util;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* The Class URLUtil.
*
* @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it)
*
* Oct 29, 2020
*/
public class URLParserUtil {
/**
* Adds the parameter to query string.
*
* @param key the key
* @param value the value
* @param prefixAmpersand the prefix ampersand
* @param suffixAmpersand the suffix ampersand
* @return the string
*/
public static String addParameterToQueryString(String key, String value, boolean prefixAmpersand,
boolean suffixAmpersand) {
String queryParameter = "";
if (prefixAmpersand)
queryParameter += "&";
queryParameter += key + "=" + value;
if (suffixAmpersand)
queryParameter += "&";
return queryParameter;
}
/**
* Extract value of parameter from URL.
*
* @param paramName the param name
* @param url the url
* @return the string
*/
public static String extractValueOfParameterFromURL(String paramName, String url) {
int index = url.toLowerCase().indexOf(paramName.toLowerCase() + "="); // ADDING CHAR "=" IN TAIL TO BE SURE THAT
// IT
// IS A PARAMETER
String value = "";
if (index > -1) {
int start = index + paramName.length() + 1; // add +1 for char '='
String sub = url.substring(start, url.length());
int indexOfSeparator = sub.indexOf("&");
int end = indexOfSeparator != -1 ? indexOfSeparator : sub.length();
value = sub.substring(0, end);
} else
return null;
return value;
}
/**
* Split query.
*
* @param url the url
* @return the map
* @throws UnsupportedEncodingException the unsupported encoding exception
*/
public static Map<String, List<String>> splitQuery(URL url) throws UnsupportedEncodingException {
final Map<String, List<String>> query_pairs = new LinkedHashMap<String, List<String>>();
final String[] pairs = url.getQuery().split("&");
for (String pair : pairs) {
final int idx = pair.indexOf("=");
final String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair;
if (!query_pairs.containsKey(key)) {
query_pairs.put(key, new LinkedList<String>());
}
final String value = idx > 0 && pair.length() > idx + 1
? URLDecoder.decode(pair.substring(idx + 1), "UTF-8")
: null;
query_pairs.get(key).add(value);
}
return query_pairs;
}
}