UrlPart.java

package eu.javaexperience.url;

import java.net.URL;

import eu.javaexperience.arrays.ArrayTools;

public enum UrlPart implements UrlPartGetter
{
	PROTOCOL()
	{
		@Override
		public String getBy(URL url)
		{
			return url.getProtocol();
		}
	},
	
	USERNAME
	{
		@Override
		public String getBy(URL url)
		{
			String info = url.getUserInfo();
			if(null == info)
			{
				return null;
			}
			return ArrayTools.extractFirst(info.split(":"));
		}
	},
	
	PASSWORD
	{
		@Override
		public String getBy(URL url)
		{
			String info = url.getUserInfo();
			if(null == info)
			{
				return null;
			}
			return ArrayTools.accessIndexSafe(info.split(":"), 1);
		}
	},
	
	HOST
	{
		@Override
		public String getBy(URL url)
		{
			return url.getHost();
		}
	},
	
	CURRENT_PORT
	{
		@Override
		public String getBy(URL url)
		{
			int crnt = url.getPort();
			if(crnt < 0)
			{
				crnt = url.getDefaultPort();
			}
			
			if(crnt < 0)
			{
				return null;
			}
			
			return String.valueOf(crnt);
		}
	},
	
	PORT
	{
		@Override
		public String getBy(URL url)
		{
			return String.valueOf(url.getPort());
		}
	},
	
	DEFAULT_PORT
	{
		@Override
		public String getBy(URL url)
		{
			return String.valueOf(url.getDefaultPort());
		}
	},
	
	PATH
	{
		@Override
		public String getBy(URL url)
		{
			return url.getPath();
		}
	},
	
	QUERY
	{
		@Override
		public String getBy(URL url)
		{
			return url.getQuery();
		}
	},
	
	REFERENCE
	{
		@Override
		public String getBy(URL url)
		{
			return url.getRef();
		}
	}	
	;
}