Blame client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/utils/RDPFileParser.java

Packit Service fa4841
/*
Packit Service fa4841
   Simple .RDP file parser
Packit Service fa4841
Packit Service fa4841
   Copyright 2013 Blaz Bacnik
Packit Service fa4841
Packit Service fa4841
   This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
Packit Service fa4841
   If a copy of the MPL was not distributed with this file, You can obtain one at
Packit Service fa4841
   http://mozilla.org/MPL/2.0/.
Packit Service fa4841
*/
Packit Service fa4841
Packit Service fa4841
package com.freerdp.freerdpcore.utils;
Packit Service fa4841
Packit Service fa4841
import java.io.BufferedReader;
Packit Service fa4841
import java.io.FileReader;
Packit Service fa4841
import java.io.IOException;
Packit Service fa4841
import java.util.HashMap;
Packit Service fa4841
import java.util.Locale;
Packit Service fa4841
Packit Service fa4841
public class RDPFileParser
Packit Service fa4841
{
Packit Service fa4841
Packit Service fa4841
	private static final int MAX_ERRORS = 20;
Packit Service fa4841
	private static final int MAX_LINES = 500;
Packit Service fa4841
Packit Service fa4841
	private HashMap<String, Object> options;
Packit Service fa4841
Packit Service fa4841
	public RDPFileParser()
Packit Service fa4841
	{
Packit Service fa4841
		init();
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	public RDPFileParser(String filename) throws IOException
Packit Service fa4841
	{
Packit Service fa4841
		init();
Packit Service fa4841
		parse(filename);
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	private void init()
Packit Service fa4841
	{
Packit Service fa4841
		options = new HashMap<String, Object>();
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	public void parse(String filename) throws IOException
Packit Service fa4841
	{
Packit Service fa4841
		BufferedReader br = new BufferedReader(new FileReader(filename));
Packit Service fa4841
		String line = null;
Packit Service fa4841
Packit Service fa4841
		int errors = 0;
Packit Service fa4841
		int lines = 0;
Packit Service fa4841
		boolean ok;
Packit Service fa4841
Packit Service fa4841
		while ((line = br.readLine()) != null)
Packit Service fa4841
		{
Packit Service fa4841
			lines++;
Packit Service fa4841
			ok = false;
Packit Service fa4841
Packit Service fa4841
			if (errors > MAX_ERRORS || lines > MAX_LINES)
Packit Service fa4841
			{
Packit Service fa4841
				br.close();
Packit Service fa4841
				throw new IOException("Parsing limits exceeded");
Packit Service fa4841
			}
Packit Service fa4841
Packit Service fa4841
			String[] fields = line.split(":", 3);
Packit Service fa4841
Packit Service fa4841
			if (fields.length == 3)
Packit Service fa4841
			{
Packit Service fa4841
				if (fields[1].equals("s"))
Packit Service fa4841
				{
Packit Service fa4841
					options.put(fields[0].toLowerCase(Locale.ENGLISH), fields[2]);
Packit Service fa4841
					ok = true;
Packit Service fa4841
				}
Packit Service fa4841
				else if (fields[1].equals("i"))
Packit Service fa4841
				{
Packit Service fa4841
					try
Packit Service fa4841
					{
Packit Service fa4841
						Integer i = Integer.parseInt(fields[2]);
Packit Service fa4841
						options.put(fields[0].toLowerCase(Locale.ENGLISH), i);
Packit Service fa4841
						ok = true;
Packit Service fa4841
					}
Packit Service fa4841
					catch (NumberFormatException e)
Packit Service fa4841
					{
Packit Service fa4841
					}
Packit Service fa4841
				}
Packit Service fa4841
				else if (fields[1].equals("b"))
Packit Service fa4841
				{
Packit Service fa4841
					ok = true;
Packit Service fa4841
				}
Packit Service fa4841
			}
Packit Service fa4841
Packit Service fa4841
			if (!ok)
Packit Service fa4841
				errors++;
Packit Service fa4841
		}
Packit Service fa4841
		br.close();
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	public String getString(String optionName)
Packit Service fa4841
	{
Packit Service fa4841
		if (options.get(optionName) instanceof String)
Packit Service fa4841
			return (String)options.get(optionName);
Packit Service fa4841
		else
Packit Service fa4841
			return null;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	public Integer getInteger(String optionName)
Packit Service fa4841
	{
Packit Service fa4841
		if (options.get(optionName) instanceof Integer)
Packit Service fa4841
			return (Integer)options.get(optionName);
Packit Service fa4841
		else
Packit Service fa4841
			return null;
Packit Service fa4841
	}
Packit Service fa4841
}