All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.softicar.platform.common.network.url.Url Maven / Gradle / Ivy

Go to download

The SoftiCAR Platform is a lightweight, Java-based library to create interactive business web applications.

There is a newer version: 50.0.0
Show newest version
package com.softicar.platform.common.network.url;

import com.softicar.platform.common.container.map.list.IListMap;
import com.softicar.platform.common.container.map.list.ListTreeMap;
import com.softicar.platform.common.io.network.UrlCoding;
import java.util.List;
import java.util.Map.Entry;
import java.util.stream.Collectors;

/**
 * A simple URL class.
 * 

* Use {@link UrlBuilder} to create a new instance of this class. * * @author Oliver Richers */ public class Url { protected String scheme; protected String domainName; protected String port; protected String path; protected IListMap parameters; protected String fragment; protected Url() { this.parameters = new ListTreeMap<>(); } public String getScheme() { return scheme; } public String getDomainName() { return domainName; } public String getPort() { return port; } public String getPath() { return path; } public String getQueryString() { return parameters// .entrySet() .stream() .map(Url::convertToQueryString) .collect(Collectors.joining("&")); } public String getFragment() { return fragment; } @Override public String toString() { return new StringBuilder()// .append(scheme) .append("://") .append(domainName) .append(port != null? ":" + port : "") .append(getStartingFromPath()) .toString(); } public String getStartingFromPath() { StringBuilder builder = new StringBuilder(); if (path != null) { if (!path.startsWith("/")) { builder.append("/"); } builder.append(path); } if (!parameters.isEmpty()) { builder.append("?").append(getQueryString()); } if (fragment != null) { builder.append("#").append(fragment); } return builder.toString(); } private static String convertToQueryString(Entry> parameter) { var encodedKey = UrlCoding.encodeUtf8(parameter.getKey()); var values = parameter.getValue(); if (isEmpty(values)) { return encodedKey; } else { return values// .stream() .map(UrlCoding::encodeUtf8) .map(encodedValue -> encodedKey + "=" + encodedValue) .collect(Collectors.joining("&")); } } private static boolean isEmpty(List values) { return values.isEmpty() || values.size() == 1 && values.get(0).isEmpty(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy