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

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