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

io.laniakia.util.ConfigUtil Maven / Gradle / Ivy

package io.laniakia.util;

import java.util.Map;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;

import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.utils.URIBuilder;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class ConfigUtil 
{
	private static final Logger logger = LogManager.getLogger(ConfigUtil.class);
	
	public static APICall getConfigValue(String key) throws Exception
	{
		XMLInputFactory factory = XMLInputFactory.newInstance();
		XMLStreamReader parser = factory.createXMLStreamReader(ConfigUtil.class.getResourceAsStream("/config/config.xml"), "Cp1252");
		logger.debug("Initialized XMLStreamReader");
		APICall query = null;
		while (parser.hasNext()) 
		{
			int currentEvent = parser.next();
			if(currentEvent ==  XMLStreamReader.START_ELEMENT)
			{
				if(parser.getLocalName().equalsIgnoreCase(key))
				{
					query = new APICall(key);
				}
				else if(parser.getLocalName().equalsIgnoreCase("baseUrl"))
				{
					query.setBaseURL(parser.getElementText());
				}
				else if(parser.getLocalName().equalsIgnoreCase("parameter"))
				{
					getParameters(parser, query);
				}
			}
		}
		return query;
	}
	
	public static void getParameters(XMLStreamReader reader, APICall query) throws Exception
	{
		while (reader.hasNext()) 
		{
			int currentEvent = reader.next();
			if(currentEvent ==  XMLStreamReader.START_ELEMENT)
			{
				if(reader.getLocalName().equalsIgnoreCase("query"))
				{
					query.addParameter(reader.getElementText());
					return;
				}
			}
		}
	}
	
	public static String buildAPICall(APICall query, Map parameters) throws Exception
	{
		if(query != null && StringUtils.isNotBlank(query.getBaseURL()))
		{
			logger.debug("APICall Base URL: " + query.getBaseURL());
			URIBuilder builder = new URIBuilder(query.getBaseURL());
			if(parameters != null && !parameters.isEmpty() && query.HasParameters())
			{
				for (Map.Entry entry : parameters.entrySet())
				{
				    String key = entry.getKey();
				    if(StringUtils.isNotBlank(key) && query.getParameters().contains(key))
				    {
						String value = entry.getValue();
						builder.addParameter(key, value);
						logger.debug("Added Parameter: key=" + key + ", value=" + value);
				    }
				}
			}
			
			return builder.build().toString();
		}
		return null;
	}
	
	public static String getAPICall(String key, Map parameters) throws Exception
	{
		APICall query = getConfigValue(key);
		if(query != null)
		{
			return buildAPICall(query, parameters);
		}
		return null;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy