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